Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions .github/workflows/gh_release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# This workflow will load Python, run a script to generate assets, and then
# bundle a github release

name: Release generator

on:
pull_request:
types:
- closed

jobs:
create_release:
if: github.event.pull_request.merged && contains( github.event.pull_request.labels.*.name, 'release')
runs-on: ubuntu-latest
steps:
- name: Manual workaround for Github not having a runtime macro to check for the default branch
id: gatekeeper
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
DEFAULT_BRANCH=$(curl -H "Authorization: token $GITHUB_TOKEN" -s https://api.github.com/repos/$GITHUB_REPOSITORY | jq -rc .default_branch)
unset IS_DEFAULT_BRANCH
if [ "$GITHUB_BASE_REF" == "$DEFAULT_BRANCH" ]; then IS_DEFAULT_BRANCH='true'; fi
echo "::set-output name=IS_DEFAULT_BRANCH::$IS_DEFAULT_BRANCH"

- uses: actions/checkout@v2
if: steps.gatekeeper.outputs.IS_DEFAULT_BRANCH

- uses: actions/setup-python@v2
if: steps.gatekeeper.outputs.IS_DEFAULT_BRANCH
with:
python-version: 3.8

- name: Create tag from title and run asset script
if: steps.gatekeeper.outputs.IS_DEFAULT_BRANCH
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
id: find_tag_and_prepare_assets
run: |
TAG=$(echo ${{ github.event.pull_request.title }} | sed -E "s/^.*Release (.+\..+\..+)$/\1/g")
echo "::set-output name=tag::$TAG"

SCRIPT=.github/prepare_assets.sh
if [ -f $SCRIPT ]; then
chmod u+x $SCRIPT
$SCRIPT $TAG
fi

- name: Create Release
if: steps.gatekeeper.outputs.IS_DEFAULT_BRANCH
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.find_tag_and_prepare_assets.outputs.tag }}
release_name: ${{ github.event.pull_request.title }}
body: ${{ github.event.pull_request.body }}
draft: false
prerelease: false

- name: Add latest-release tag
if: steps.gatekeeper.outputs.IS_DEFAULT_BRANCH
run: |
git tag -f latest-release
git push -f --tags

- name: Upload Assets
if: steps.gatekeeper.outputs.IS_DEFAULT_BRANCH
run: |
upload_url=${{ steps.create_release.outputs.upload_url }}
if [ -f .github/release_assets.txt ]; then
while IFS="" read -r FILE || [ -n "$FILE" ]
do
curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
-H "Content-Type: $(file -b --mime-type $FILE)" \
--data-binary "@$FILE" \
"${upload_url%\{*}?name=$(basename $FILE)"
done < .github/release_assets.txt
fi