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
|
name: release
# a general github action to generate a release whenever a version tag is pushed
# generates and uploads a tarball of the source code
# in a way that plays nicely with git submodules
# could be easily adapted to produce binaries for each OS
# Daniel Price, Aug 2020
on:
push:
tags:
- 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10
jobs:
release:
strategy:
matrix:
os: [ubuntu-latest]
runs-on: ${{ matrix.os }}
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- name: checkout code
uses: actions/checkout@v3
with:
submodules: recursive
- name: Get version
id: get_version
env:
vernum: ${{ github.ref }}
repo: ${{ github.repository }}
run: |
echo "version=${vernum/refs\/tags\//}" >> $GITHUB_ENV
echo "repo=$(basename ${repo})" >> $GITHUB_ENV
echo "tarfile=$(basename ${repo})-${vernum/refs\/tags\//}.tar.gz" >> $GITHUB_ENV
# - name: build tarball mac
# if: matrix.os == 'macos-latest'
# env:
# tarfile: ${{ steps.get_version.outputs.tarfile }}
# repo: ${{ steps.get_version.outputs.repo }}
# run: |
# tar cfz /tmp/$tarfile --exclude ".git*" -s "/./${repo}/" .
- name: build tarball
if: matrix.os == 'ubuntu-latest'
env:
tarfile: ${{ env.tarfile }}
repo: ${{ env.repo }}
run: |
echo "tarfile=${{ env.tarfile }}, repo=${{ env.repo }}"
tar cfz /tmp/${{ env.tarfile }} --exclude ".git*" \
--transform "s,.,${{ env.repo }}," .
- name: check tarball and get SHA
env:
tarfile: ${{ env.tarfile }}
id: shasum
run: |
mv /tmp/${{ env.tarfile }} .
tar tfz ${{ env.tarfile }}
echo "sha=$(shasum -a 256 ${{ env.tarfile }} | awk '{printf $1}')" >> $GITHUB_ENV
- name: Extract Release Notes
run: |
./scripts/get_release_notes.pl > release-notes.md
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.version }}
release_name: ${{ env.version }}
body_path: release-notes.md
draft: false
prerelease: false
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ env.tarfile }}
asset_name: ${{ env.tarfile }}
asset_content_type: application/gzip
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
- name: Bump Brew
env:
HOMEBREW_GITHUB_API_TOKEN: ${{ secrets.BREW_TOKEN_SPLASH }}
version: ${{ env.version }}
brewtap: danieljprice/all
formula: ${{ env.repo }}
run: |
git config --global user.email "daniel.price@monash.edu"
git config --global user.name "Daniel Price"
brew install pipgrip
brew tap $brewtap
brew bump-formula-pr -f --version=${version/v/} --no-browse --no-audit \
--sha256=${{ env.sha }} \
--url="https://github.com/${{ github.repository }}/releases/download/${{ env.version }}/${{ env.tarfile }}" \
$brewtap/$formula
|