name: Build and Publish Binaries
on:
create:
branches:
- release-v[0-9]+.[0-9]+.[0-9]+
jobs:
build-linux-packages:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v3
- name: setup docker buildx
uses: docker/setup-buildx-action@v2
- name: create build container
run: make container-debian-build-image
env:
DOCKER_BUILD_FLAGS: --load --cache-from=type=gha --cache-to=type=gha,mode=max
- name: run tests
run: make container-test
- name: container-all-packages
run: make container-all-packages
- name: upload linux packages
uses: actions/upload-artifact@v3
with:
name: linux-packages
retention-days: 1
path: target/dist/
build-macos-packages:
runs-on: macos-latest
steps:
- name: install GNU tools
run: brew install gnu-sed grep gawk make
- name: checkout
uses: actions/checkout@v3
- name: install latest rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
default: true
override: true
- name: install x86_64-apple-darwin and aarch64-apple-darwin targets
run: rustup target install x86_64-apple-darwin aarch64-apple-darwin
- name: run tests
run: gmake test
- name: macos-packages
run: gmake gz-packages
- name: upload MacOS packages
uses: actions/upload-artifact@v3
with:
name: macos-packages
retention-days: 1
path: target/dist/
build-supplemental-files-and-release:
environment: release
needs:
- build-linux-packages
- build-macos-packages
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v3
- name: download linux packages
uses: actions/download-artifact@v3
with:
name: linux-packages
path: target/dist/
- name: download macos packages
uses: actions/download-artifact@v3
with:
name: macos-packages
path: target/dist/
- name: checksum
run: make checksums
- name: output checksums
run: cat target/dist/SHA256SUMS
- name: release-notes
run: |
git fetch --tags
git fetch --unshallow || true
git pull origin ${GITHUB_REF_NAME}
make release-notes
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: append to changelog
run: make changelog >> CHANGELOG.md
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: homebrew-package
run: make homebrew-packages
- name: assign git user and commit release changes
run: |
git config user.name 'Github Action'
git config user.email 'dekobon@users.noreply.github.com'
git commit CHANGELOG.md pkg/brew/*.rb -m "ci: release changes for ${GITHUB_REF_NAME}"
git push origin ${GITHUB_REF_NAME}
- name: do github release
run: make gh-make-release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: do cargo release
run: make cargo-release || true
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
- name: create pull request integrating release branch changes
run: |
gh pr create --title "ci: integrate release changes for ${GITHUB_REF_NAME}" --body "This pull request was automatically created by the Github Action workflow **${GITHUB_WORKFLOW}**." --head ${GITHUB_REF_NAME} --base master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}