Files
oxkerclone/.github/workflows/create_release_and_build.yml
T

121 lines
4.1 KiB
YAML

name: Release CI
on:
push:
tags:
- 'v[0-9]+.[0-9]+.[0-9]+'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
#########################
## Publish to crates.io #
#########################
- name: publish to crates.io
uses: katyo/publish-crates@v1
with:
registry-token: ${{ secrets.CRATES_IO_TOKEN }}
####################################
## Build binaries for release page #
####################################
# Install stable rust, and associated tools
- name: install rust
uses: dtolnay/rust-toolchain@stable
# Setup caching - not sure if will have any effect
- name: Rust cache
uses: swatinem/rust-cache@v2
# Install cross-rs
- name: install cross
run: cargo install cross --git https://github.com/cross-rs/cross
# Build for linux x86 musl
- name: build x86_64-unknown-linux-musl
run: cross build --target x86_64-unknown-linux-musl --release
# Compress output into tar
- name: compress aarch64 binary
run: tar -C target/x86_64-unknown-linux-musl/release -czf ./oxker_linux_x86_64.tar.gz oxker
# Build for linux aarch64, aka 64 bit pi 4
- name: build aarch64-unknown-linux-musl
run: cross build --target aarch64-unknown-linux-musl --release
# Compress output into tar
- name: compress aarch64 binary
run: tar -C target/aarch64-unknown-linux-musl/release -czf ./oxker_linux_aarch64.tar.gz oxker
# Build for linux armv6, aka 32 bit pi zero w
- name: build arm-unknown-linux-musleabihf
run: cross build --target arm-unknown-linux-musleabihf --release
# Compress output into tar
- name: compress armv6 binary
run: tar -C target/arm-unknown-linux-musleabihf/release -czf ./oxker_linux_armv6.tar.gz oxker
# Build for windows
- name: build release windows_x86_64
run: cross build --target x86_64-pc-windows-gnu --release
# Compress output into zip
- name: compress windows_x86_64 binary
run: zip -j ./oxker_windows_x86_64.zip target/x86_64-pc-windows-gnu/release/oxker.exe
#########################################
## Build images for Dockerhub & ghcr.io #
#########################################
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Write release version to env
run: |
CURRENT_SEMVER=${GITHUB_REF_NAME#v}
echo "CURRENT_SEMVER=$CURRENT_SEMVER" >> $GITHUB_ENV
- uses: docker/setup-buildx-action@v2
id: buildx
with:
install: true
- name: Build for Dockerhub & ghcr.io
run: |
docker build --platform linux/arm/v6,linux/arm64,linux/amd64 \
-t ${{ secrets.DOCKERHUB_USERNAME }}/oxker:latest \
-t ${{ secrets.DOCKERHUB_USERNAME }}/oxker:${{env.CURRENT_SEMVER}} \
-t ghcr.io/${{ github.repository_owner }}/oxker:latest \
-t ghcr.io/${{ github.repository_owner }}/oxker:${{env.CURRENT_SEMVER}} \
--provenance=false --sbom=false \
--push \
-f containerised/Dockerfile .
###################
## Create release #
###################
- name: Release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ github.ref }}
name: ${{ github.ref_name }}
body_path: ".github/release-body.md"
draft: false
files: |
oxker_linux_x86_64.tar.gz
oxker_linux_aarch64.tar.gz
oxker_linux_armv6.tar.gz
oxker_windows_x86_64.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}