Skip to content

chore(release): prepare for v0.2.0 #11

chore(release): prepare for v0.2.0

chore(release): prepare for v0.2.0 #11

Workflow file for this run

name: Continuous Deployment
on:
push:
tags:
- "v*.*.*"
jobs:
changelog:
name: Generate changelog
runs-on: ubuntu-latest
outputs:
release_body: ${{ steps.git-cliff.outputs.content }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Generate a changelog
uses: orhun/git-cliff-action@v2
id: git-cliff
with:
config: cliff.toml
args: --latest --strip header
publish-binaries:
name: Publish binaries
needs: changelog
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
TARGET:
[
x86_64-linux,
x86_64-macos,
x86_64-windows,
aarch64-linux,
aarch64-macos,
aarch64-windows,
arm-linux,
riscv64-linux,
i386-linux
]
steps:
- name: Checkout the repository
uses: actions/checkout@v3
- name: Set the release version
run: echo "RELEASE_VERSION=${GITHUB_REF:11}" >> $GITHUB_ENV
- name: Install Zig
uses: goto-bus-stop/setup-zig@v2
with:
version: 0.12.1
- name: Show Zig version
run: |
zig version
zig env
- name: Build
run: zig build --release=safe -Dtarget=${{ matrix.TARGET }}
- name: Prepare release assets
shell: bash
run: |
mkdir -p release/man
cp {LICENSE,README.md,CHANGELOG.md} release/
cp man/* release/man
if [[ "${{ matrix.TARGET }}" = *"windows" ]]; then
cp zig-out/bin/linuxwave.exe release/
else
cp zig-out/bin/linuxwave release/
fi
mv release/ linuxwave-${{ env.RELEASE_VERSION }}/
- name: Create release artifacts
shell: bash
run: |
if [[ "${{ matrix.TARGET }}" = *"windows" ]]; then
7z a -tzip linuxwave-${{ env.RELEASE_VERSION }}-${{ matrix.TARGET }}.zip \
linuxwave-${{ env.RELEASE_VERSION }}/
else
tar -czvf linuxwave-${{ env.RELEASE_VERSION }}-${{ matrix.TARGET }}.tar.gz \
linuxwave-${{ env.RELEASE_VERSION }}/
shasum -a 512 linuxwave-${{ env.RELEASE_VERSION }}-${{ matrix.TARGET }}.tar.gz \
> linuxwave-${{ env.RELEASE_VERSION }}-${{ matrix.TARGET }}.tar.gz.sha512
fi
- name: Sign the release
shell: bash
run: |
if [[ "${{ matrix.TARGET }}" != *"windows" ]]; then
echo "${{ secrets.GPG_RELEASE_KEY }}" | base64 --decode > private.key
echo "${{ secrets.GPG_PASSPHRASE }}" | gpg --pinentry-mode=loopback \
--passphrase-fd 0 --import private.key
echo "${{ secrets.GPG_PASSPHRASE }}" | gpg --pinentry-mode=loopback \
--passphrase-fd 0 --detach-sign \
linuxwave-${{ env.RELEASE_VERSION }}-${{ matrix.TARGET }}.tar.gz
fi
- name: Upload the binary releases
uses: svenstaro/upload-release-action@v2
with:
file: linuxwave-${{ env.RELEASE_VERSION }}-${{ matrix.TARGET }}*
file_glob: true
overwrite: true
tag: ${{ github.ref }}
release_name: "Release v${{ env.RELEASE_VERSION }}"
body: ${{ needs.changelog.outputs.release_body }}
repo_token: ${{ secrets.GITHUB_TOKEN }}
publish-source:
name: Publish the source code
needs: changelog
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set the release version
run: echo "RELEASE_VERSION=${GITHUB_REF:11}" >> $GITHUB_ENV
- name: Prepare source code
run: |
cd ..
zip -r v${{ env.RELEASE_VERSION }}.zip ${{ github.event.repository.name }}
tar -czvf v${{ env.RELEASE_VERSION }}.tar.gz ${{ github.event.repository.name }}
mv v${{ env.RELEASE_VERSION }}* ${{ github.event.repository.name }}
- name: Sign
shell: bash
run: |
echo "${{ secrets.GPG_RELEASE_KEY }}" | base64 --decode > private.key
echo "${{ secrets.GPG_PASSPHRASE }}" | gpg --pinentry-mode=loopback \
--passphrase-fd 0 --import private.key
for ext in 'zip' 'tar.gz'; do
echo "${{ secrets.GPG_PASSPHRASE }}" | gpg --pinentry-mode=loopback \
--passphrase-fd 0 --detach-sign \
"v${{ env.RELEASE_VERSION }}.${ext}"
done
- name: Upload the source code
uses: svenstaro/upload-release-action@v2
with:
file: v${{ env.RELEASE_VERSION }}*
file_glob: true
overwrite: true
tag: ${{ github.ref }}
release_name: "Release v${{ env.RELEASE_VERSION }}"
body: ${{ needs.changelog.outputs.release_body }}
repo_token: ${{ secrets.GITHUB_TOKEN }}