Skip to content

refactor: migrate to git-bot-feedback lib #634

refactor: migrate to git-bot-feedback lib

refactor: migrate to git-bot-feedback lib #634

Workflow file for this run

name: Binary builds
on:
push:
branches: [main]
paths:
- cpp-linter/src/**
- cpp-linter/Cargo.toml
- clang-installer/src/**
- clang-installer/Cargo.toml
- Cargo.toml
- Cargo.lock
tags:
- cpp-linter/v*
- clang-installer/v*
pull_request:
branches: [main]
paths:
- cpp-linter/src/**
- cpp-linter/Cargo.toml
- clang-installer/src/**
- clang-installer/Cargo.toml
- Cargo.toml
- Cargo.lock
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
permissions: {}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
create-assets:
name: ${{ matrix.target }}
strategy:
fail-fast: false
matrix:
include:
- target: aarch64-unknown-linux-gnu
os: ubuntu-latest
vendored: true
cross: true
- target: aarch64-unknown-linux-musl
os: ubuntu-latest
vendored: true
cross: true
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
vendored: false
cross: false
- target: x86_64-unknown-linux-musl
os: ubuntu-latest
vendored: true
cross: true
- target: arm-unknown-linux-gnueabi
os: ubuntu-latest
vendored: true
cross: true
- target: arm-unknown-linux-gnueabihf
os: ubuntu-latest
vendored: true
cross: true
- target: armv7-unknown-linux-gnueabihf
os: ubuntu-latest
vendored: true
cross: true
- target: powerpc-unknown-linux-gnu
os: ubuntu-latest
vendored: true
cross: true
# - target: powerpc64-unknown-linux-gnu
# os: ubuntu-latest
# vendored: true
# cross: true
- target: powerpc64le-unknown-linux-gnu
os: ubuntu-latest
vendored: true
cross: true
- target: s390x-unknown-linux-gnu
os: ubuntu-latest
vendored: true
cross: true
- target: aarch64-apple-darwin
os: macos-latest
vendored: true
cross: false
- target: x86_64-apple-darwin
os: macos-latest
vendored: true
cross: false
- target: x86_64-pc-windows-msvc
os: windows-latest
vendored: false
cross: false
- target: aarch64-pc-windows-msvc
os: windows-latest
vendored: false
cross: false
runs-on: ${{ matrix.os }}
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Setup Rust
shell: bash
env:
RS_TARGET: ${{ matrix.target }}
run: |-
rustup update stable --no-self-update
rustup target add ${RS_TARGET}
- name: Install cargo-binstall
if: matrix.cross
uses: cargo-bins/cargo-binstall@f8ce4d55b131f4a1e373b8747ca6b6a54133ae5a # v1.18.0
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Install cross (cargo cross compiler)
if: matrix.cross
env:
GITHUB_TOKEN: ${{ github.token }}
run: cargo binstall -y cross
- name: Build
run: >-
${{ matrix.cross && 'cross' || 'cargo '}}
build
--bin cpp-linter
--bin clang-tools
--release
--target ${{ matrix.target }}
--features ${{ matrix.vendored && 'bin,openssl-vendored' || 'bin' }}
- name: Prepare artifacts (unix)
if: runner.os != 'Windows'
shell: bash
run: |-
mkdir dist
cp LICENSE dist/LICENSE
cd dist
tgt="cpp-linter"
mv "../target/${{ matrix.target }}/release/${tgt}" "./${tgt}"
arc_name="${tgt}-${{ matrix.target }}.tar.gz"
tar -a -c -v -z -f "${arc_name}" ${tgt} LICENSE
tgt="clang-tools"
mv "../target/${{ matrix.target }}/release/${tgt}" "./${tgt}"
arc_name="${tgt}-${{ matrix.target }}.tar.gz"
tar -a -c -v -z -f "${arc_name}" ${tgt} LICENSE
- name: Prepare artifacts (windows)
if: runner.os == 'Windows'
shell: pwsh
# `tar.exe` in powershell is different from `tar` in bash.
# need to use `tar.exe` in powershell to create a valid zip file.
run: |-
mkdir dist
Copy-Item ./LICENSE ./dist/LICENSE
cd dist
$tgt = "cpp-linter"
mv "../target/${{ matrix.target }}/release/${tgt}.exe" "./${tgt}.exe"
$arc_name = "${tgt}-${{ matrix.target }}.zip"
tar -a -c -v -f "${arc_name}" ${tgt}.exe LICENSE
$tgt = "clang-tools"
mv "../target/${{ matrix.target }}/release/${tgt}.exe" "./${tgt}.exe"
$arc_name = "${tgt}-${{ matrix.target }}.zip"
tar -a -c -v -f "${arc_name}" ${tgt}.exe LICENSE
- name: Upload cpp-linter artifacts
uses: actions/upload-artifact@v7
with:
name: cpp-linter-${{ matrix.target }}
path: dist/cpp-linter-${{ matrix.target }}*
if-no-files-found: error
- name: Upload clang-tools artifacts
uses: actions/upload-artifact@v7
with:
name: clang-tools-${{ matrix.target }}
path: dist/clang-tools-${{ matrix.target }}*
if-no-files-found: error
publish:
if: startswith(github.ref, 'refs/tags/cpp-linter/v') || startswith(github.ref, 'refs/tags/clang-installer/v')
runs-on: ubuntu-latest
needs: [create-assets]
permissions:
id-token: write
contents: write
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- name: Install Rust
run: rustup update stable --no-self-update
- name: Download built assets
uses: actions/download-artifact@v8
with:
pattern: ${{ startsWith(github.ref_name, 'cpp-linter') && 'cpp-linter' || 'clang-tools' }}-*
path: dist
merge-multiple: true
- name: Create a Github Release
env:
BIN_NAME: ${{ startsWith(github.ref_name, 'cpp-linter') && 'cpp-linter' || 'clang-tools' }}
GH_TOKEN: ${{ github.token }}
GIT_REF: ${{ github.ref_name }}
run: |
files=$(ls dist/${BIN_NAME}*)
gh release upload "${GIT_REF}" ${files}
- name: Establish provenance
id: auth
uses: rust-lang/crates-io-auth-action@bbd81622f20ce9e2dd9622e3218b975523e45bbe # v1.0.4
- name: Publish package
env:
PKG_NAME: ${{ startsWith(github.ref_name, 'cpp-linter') && 'cpp-linter' || 'clang-installer' }}
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}
run: cargo publish -p ${PKG_NAME}