Skip to content

Commit 96dabeb

Browse files
committed
Add release.yml
1 parent 83f8927 commit 96dabeb

File tree

1 file changed

+117
-0
lines changed

1 file changed

+117
-0
lines changed

.github/workflows/release.yml

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
name: release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
jobs:
9+
release:
10+
runs-on: ubuntu-latest
11+
12+
steps:
13+
14+
- name: Create release
15+
id: create_release
16+
uses: actions/create-release@v1
17+
env:
18+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
19+
with:
20+
tag_name: ${{ github.ref }}
21+
release_name: ${{ github.ref }}
22+
draft: false
23+
prerelease: false
24+
25+
- name: Create release url file
26+
run: echo "${{ steps.create_release.outputs.upload_url }}" > release_url.txt
27+
28+
- name: Save release url file for publish
29+
uses: actions/upload-artifact@v1
30+
with:
31+
name: release_url
32+
path: release_url.txt
33+
34+
publish:
35+
needs: [release]
36+
37+
strategy:
38+
matrix:
39+
os: [macos-latest, ubuntu-latest, windows-latest]
40+
41+
runs-on: ${{ matrix.os }}
42+
43+
steps:
44+
- uses: actions/checkout@v2
45+
with:
46+
submodules: true
47+
48+
- uses: goanpeca/setup-miniconda@v1
49+
with:
50+
auto-update-conda: true
51+
python-version: '3.7'
52+
53+
- name: Install main
54+
shell: bash -l {0}
55+
run: |
56+
pip install .
57+
58+
- name: Run pyinstaller
59+
shell: bash -l {0}
60+
run: |
61+
pip install 'pyinstaller!=3.4'
62+
pip install 'setuptools<45.0.0'
63+
pyinstaller labelme.spec
64+
65+
- name: Load release url file from release job
66+
uses: actions/download-artifact@v1
67+
with:
68+
name: release_url
69+
70+
- name: Get release file name & upload url
71+
id: get_release_info
72+
run: |
73+
echo "::set-output name=upload_url::$(cat release_url/release_url.txt)"
74+
75+
- name: Upload release executable on macOS & Linux
76+
id: upload_release_executable_macos_linux
77+
uses: actions/upload-release-asset@v1
78+
env:
79+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
80+
with:
81+
upload_url: ${{ steps.get_release_info.outputs.upload_url }}
82+
asset_path: ./dist/labelme
83+
asset_name: labelme-${{ runner.os }}
84+
asset_content_type: application/octet-stream
85+
if: runner.os != 'Windows'
86+
87+
- name: Upload release executable on Windows
88+
id: upload_release_executable_windows
89+
uses: actions/upload-release-asset@v1
90+
env:
91+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
92+
with:
93+
upload_url: ${{ steps.get_release_info.outputs.upload_url }}
94+
asset_path: ./dist/labelme.exe
95+
asset_name: Labelme.exe
96+
asset_content_type: application/octet-stream
97+
if: runner.os == 'Windows'
98+
99+
- name: Create dmg for macOS
100+
run: |
101+
npm install -g create-dmg
102+
cd dist
103+
create-dmg Labelme.app || test -f Labelme\ 0.0.0.dmg
104+
mv Labelme\ 0.0.0.dmg Labelme.dmg
105+
if: runner.os == 'macOS'
106+
107+
- name: Upload release app on macOS
108+
id: upload_release_app_macos
109+
uses: actions/upload-release-asset@v1
110+
env:
111+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
112+
with:
113+
upload_url: ${{ steps.get_release_info.outputs.upload_url }}
114+
asset_path: ./dist/Labelme.dmg
115+
asset_name: Labelme.dmg
116+
asset_content_type: application/octet-stream
117+
if: runner.os == 'macOS'

0 commit comments

Comments
 (0)