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
\n", "pr_template": "- #{{TITLE}} ##{{NUMBER}} (Thanks @#{{AUTHOR}})", "categories": [ { "title": "## 🚀 Features", "labels": ["feature"] }, { "title": "## ✨ Enhancement", "labels": ["enhancement"] }, { "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'