Use release assets for pull request builds instead of workflow artifacts #23
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: macOS | |
os: macos-11 | |
dist_name: betty-macos | |
- name: Windows | |
os: windows-2019 | |
dist_name: betty-windows | |
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: 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: Build the executable | |
run: ./bin/build-pyinstaller '${{ env.betty_tag }}-${{ github.event.pull_request.head.sha }}' | |
shell: bash | |
- name: Zip the macOS executable | |
if: startsWith(runner.os, 'macOS') | |
run: zip -X './dist/${{ matrix.dist_name }}-${{ github.event.pull_request.head.sha }}.zip' './dist/betty' | |
shell: bash | |
- name: Zip the Windows executable | |
if: startsWith(runner.os, 'Windows') | |
run: Compress-Archive '.\dist\betty' '.\dist\${{ matrix.dist_name }}-${{ github.event.pull_request.head.sha }}.zip' | |
- name: Publish the executable | |
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: | |
# @todo Uncomment this | |
# 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- [macOS 🍎](https://github.com/bartfeenstra/betty/releases/download/${{ env.betty_tag }}/betty-macos-${{ github.event.pull_request.head.sha }}.zip)\n- [Windows 🪟](https://github.com/bartfeenstra/betty/releases/download/${{ env.betty_tag }}/betty-windows-${{ github.event.pull_request.head.sha }}.zip)\n\nThe download will stop working when the pull request is closed.' | |
shell: bash | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |