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
|
name: release
on:
push:
tags:
- 'v*'
permissions:
contents: write
jobs:
release:
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
steps:
- name: Build Changelog
id: github_release
uses: mikepenz/release-changelog-builder-action@v3
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
configurationJson: |
{
"template": "#{{CHANGELOG}}\n\n<details>\n<summary>",
"pr_template": "- #{{TITLE}} ##{{NUMBER}} (Thanks @#{{AUTHOR}})",
"categories": [
{
"title": "## Features",
"labels": ["feature"]
},
{
"title": "## Fixes",
"labels": ["fix"]
},
{
"title": "## Other",
"labels": ["other"]
}
]
}
- name: Create Release
id: create_release
uses: mikepenz/action-gh-release@v0.2.0-a03
with:
body: ${{steps.github_release.outputs.changelog}}
draft: true
- name: Create release url file
run: echo "${{ steps.create_release.outputs.upload_url }}" > release_url.txt
- name: Save release url file for publish
uses: actions/upload-artifact@v1
with:
name: release_url
path: release_url.txt
publish:
needs: [release]
strategy:
matrix:
os: [macos-latest, ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
with:
submodules: true
- uses: conda-incubator/setup-miniconda@v3
with:
auto-update-conda: true
python-version: '3.9'
- name: Install main
shell: bash -l {0}
run: |
pip install .
- name: Run pyinstaller
shell: bash -l {0}
run: |
pip install pyinstaller
pyinstaller labelme.spec
- name: Load release url file from release job
uses: actions/download-artifact@v1
with:
name: release_url
- name: Get release file name & upload url
id: get_release_info
run: |
echo "::set-output name=upload_url::$(cat release_url/release_url.txt)"
- name: Upload release executable on macOS & Linux
id: upload_release_executable_macos_linux
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release_info.outputs.upload_url }}
asset_path: ./dist/labelme
asset_name: labelme-${{ runner.os }}
asset_content_type: application/octet-stream
if: runner.os != 'Windows'
- name: Upload release executable on Windows
id: upload_release_executable_windows
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release_info.outputs.upload_url }}
asset_path: ./dist/labelme.exe
asset_name: Labelme.exe
asset_content_type: application/octet-stream
if: runner.os == 'Windows'
- name: Create dmg for macOS
run: |
npm install -g create-dmg
cd dist
create-dmg Labelme.app || test -f Labelme\ 0.0.0.dmg
mv Labelme\ 0.0.0.dmg Labelme.dmg
if: runner.os == 'macOS'
- name: Upload release app on macOS
id: upload_release_app_macos
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release_info.outputs.upload_url }}
asset_path: ./dist/Labelme.dmg
asset_name: Labelme.dmg
asset_content_type: application/octet-stream
if: runner.os == 'macOS'
|