Skip to content

Version 2.13.0

Version 2.13.0 #208

Workflow file for this run

name: Release
on:
push:
branches:
- build-test
tags:
- "v*"
jobs:
# Build sources for every OS
github_build:
name: Build release binaries
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
name: autocorrect-linux-amd64.tar.gz
arch: x86_64
- target: aarch64-unknown-linux-gnu
os: ubuntu-latest
name: autocorrect-linux-arm64.tar.gz
arch: aarch64
- target: x86_64-apple-darwin
os: macOS-latest
name: autocorrect-darwin-amd64.tar.gz
arch: x86_64
- target: aarch64-apple-darwin
os: macOS-latest
name: autocorrect-darwin-arm64.tar.gz
arch: aarch64
- target: x86_64-pc-windows-msvc
os: windows-latest
name: autocorrect-windows-amd64.zip
arch: x86_64
- target: x86_64-unknown-linux-musl
os: ubuntu-latest
name: autocorrect-linux-musl-amd64.tar.gz
arch: x86_64
- target: aarch64-unknown-linux-musl
os: ubuntu-latest
name: autocorrect-linux-musl-arm64.tar.gz
arch: aarch64
# - target: aarch64-pc-windows-msvc
# os: windows-latest
# name: autocorrect-windows-arm64.zip
# arch: aarch64
runs-on: ${{ matrix.os }}
steps:
- name: Setup | Checkout
uses: actions/checkout@v4
- uses: olegtarasov/[email protected]
id: tagName
with:
tagRegex: "v(?<version>.*)"
# Cache files between builds
- name: Setup | Cache Cargo
uses: actions/[email protected]
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Install Musl Tool
if: matrix.target == 'x86_64-unknown-linux-musl' || matrix.target == 'aarch64-unknown-linux-musl'
run: |
sudo apt-get install musl-tools
- name: Setup | Rust
uses: actions-rs/[email protected]
with:
toolchain: stable
override: true
profile: minimal
target: ${{ matrix.target }}
- name: Build | Build
uses: actions-rs/cargo@v1
with:
command: build
args: --manifest-path autocorrect-cli/Cargo.toml --release --target ${{ matrix.target }} --config 'package.version="${{ steps.tagName.outputs.version }}"'
use-cross: ${{ matrix.os == 'ubuntu-latest' }}
- name: Prepare artifacts [Windows]
if: matrix.os == 'windows-latest'
run: |
cd target/${{ matrix.target }}/release
strip autocorrect.exe
7z a ../../../${{ matrix.name }} autocorrect.exe
cd -
- name: Prepare artifacts [Linux & macOS]
if: matrix.os != 'windows-latest'
run: |
cd target/${{ matrix.target }}/release
# TODO: investigate better cross platform stripping
strip autocorrect || true
tar czvf ../../../${{ matrix.name }} autocorrect
cd -
- name: Test Bin [Linux & macOS]
if: matrix.arch == 'x86_64' && matrix.os != 'windows-latest'
run: |
cd target/${{ matrix.target }}/release
./autocorrect --version
cd -
- name: Test Bin [Windows]
if: matrix.arch == 'x86_64' && matrix.os == 'windows-latest'
run: |
cd target/${{ matrix.target }}/release
./autocorrect.exe --version
cd -
- name: Deploy | Upload artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.name }}
path: ${{ matrix.name }}
# Create GitHub release with Rust build targets and release notes
github_release:
name: Create GitHub Release
needs: github_build
runs-on: ubuntu-latest
steps:
- name: Setup | Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup | Artifacts
uses: actions/download-artifact@v4
with:
path: release-dist
- name: Setup | Checksums
run: |
ls -lha release-dist
for file in release-dist/**/*; do openssl dgst -sha256 -r "$file" | awk '{print $1}' > "${file}.sha256"; done
- name: Publish
uses: softprops/action-gh-release@v1
with:
files: release-dist/**/*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
docker:
runs-on: ubuntu-latest
needs: github_release
steps:
- uses: olegtarasov/[email protected]
id: tagName
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
push: true
tags: |
huacnlee/autocorrect:latest
huacnlee/autocorrect:${{ steps.tagName.outputs.tag }}
- name: Build and push (reviewdog)
uses: docker/build-push-action@v2
with:
push: true
file: ./Dockerfile.reviewdog
tags: |
huacnlee/autocorrect:latest-reviewdog
huacnlee/autocorrect:${{ steps.tagName.outputs.tag }}-reviewdog
- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}