-
Notifications
You must be signed in to change notification settings - Fork 10
143 lines (122 loc) · 5.28 KB
/
pull-request-create-release.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
name: Create pull request release
on:
pull_request:
types:
- opened
- reopened
- synchronize
jobs:
create-release:
runs-on: ubuntu-latest
steps:
- name: Check out the source code
uses: actions/checkout@v4
- name: Determine the tag
run: echo betty_tag=0.0.0+dev-pull-request-${{ github.event.number }} >> $GITHUB_ENV
shell: bash
- name: Create/reassign the tag
run: git tag -f '${{ env.betty_tag }}'
- name: Push the tag
run: git push -f origin '${{ env.betty_tag }}'
- name: Create the pull request release, if it does not exist already
run: gh release create '${{ env.betty_tag }}' --prerelease --notes 'This is an unstable development release for https://github.com/bartfeenstra/betty/pull/${{ github.event.number }}. It will be deleted once the pull request is closed.' || true
env:
GH_TOKEN: ${{ github.token }}
build-pyinstaller:
needs:
- create-release
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- name: Linux
os: ubuntu-20.04
dist_name: betty-linux
python: '3.12'
- name: macOS
os: macos-11
dist_name: betty-macos
python: '3.12'
- name: Windows
os: windows-2019
dist_name: betty-windows
python: '3.12'
steps:
- name: Check out the source code
uses: actions/checkout@v4
- name: Determine the tag
run: echo betty_tag=0.0.0+dev-pull-request-${{ github.event.number }} >> $GITHUB_ENV
shell: bash
# Ubuntu 20.04 ships with an older pip version.
- name: Update pip
if: startsWith(runner.os, 'Linux')
run: pip install --upgrade pip
- name: Get the pip cache directory
run: echo "pip_cache_dir=$(pip cache dir)" >> $GITHUB_ENV
shell: bash
- name: Cache pip
uses: actions/cache@v3
with:
path: ${{ env.pip_cache_dir }}
key: pip-${{ runner.os }}-${{ matrix.python }}-${{ hashFiles('./setup.py') }}
restore-keys: |
pip-${{ runner.os }}-${{ matrix.python }}-
- name: Get the npm cache directory
run: echo "npm_cache_dir=$(npm config get cache)" >> $GITHUB_ENV
shell: bash
- name: Cache npm
uses: actions/cache@v3
with:
path: ${{ env.npm_cache_dir }}
key: npm-${{ runner.os }}-${{ hashFiles('./package.json') }}
restore-keys: |
npm-${{ runner.os }}-
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install APT dependencies
if: startsWith(runner.os, 'Linux')
run: |
sudo apt-get update
apt_packages=(
libegl1-mesa # For Qt
libx11-xcb-dev # For Qt
'^libxcb.*-dev' # For Qt
libxkbcommon-x11-0 # For Qt
)
sudo apt-get install "${apt_packages[@]}"
- name: Build the executable
run: ./bin/build-pyinstaller ${{ env.betty_tag }}-${{ github.event.pull_request.head.sha }}
shell: bash
- name: Zip the Linux package
if: startsWith(runner.os, 'Linux')
run: zip -r -X ./dist/${{ matrix.dist_name }}-${{ github.event.pull_request.head.sha }}.zip ./dist/betty
shell: bash
- name: Zip the macOS package
if: startsWith(runner.os, 'macOS')
run: zip -r -X ./dist/${{ matrix.dist_name }}-${{ github.event.pull_request.head.sha }}.zip ./dist/betty
shell: bash
- name: Zip the Windows package
if: startsWith(runner.os, 'Windows')
run: Compress-Archive .\dist\betty .\dist\${{ matrix.dist_name }}-${{ github.event.pull_request.head.sha }}.zip
- name: Publish the package
run: gh release upload ${{ env.betty_tag }} ./dist/${{ matrix.dist_name }}-${{ github.event.pull_request.head.sha }}.zip --clobber
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
notify:
needs:
- build-pyinstaller
runs-on: ubuntu-latest
steps:
- name: Check out the source code
uses: actions/checkout@v4
- name: Determine the tag
run: echo betty_tag=0.0.0+dev-pull-request-${{ github.event.number }} >> $GITHUB_ENV
shell: bash
- name: Notify collaborators of the release
run: gh pr comment ${{ github.event.pull_request.number }} --body $'Uploaded Betty for commit ${{ github.event.pull_request.head.sha }}. You can download it, test it, and post your feedback in a comment to this pull request 💕\n\n- [Betty Desktop for **Linux** 🐧](https://github.com/bartfeenstra/betty/releases/download/${{ env.betty_tag }}/betty-linux-${{ github.event.pull_request.head.sha }}.zip)\n- [Betty Desktop for **macOS** 🍎](https://github.com/bartfeenstra/betty/releases/download/${{ env.betty_tag }}/betty-macos-${{ github.event.pull_request.head.sha }}.zip)\n- [Betty Desktop for **Windows** 🪟](https://github.com/bartfeenstra/betty/releases/download/${{ env.betty_tag }}/betty-windows-${{ github.event.pull_request.head.sha }}.zip)\n\nThese downloads will stop working when the pull request is closed.'
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}