Skip to content

ci: update ci

ci: update ci #120

Workflow file for this run

name: Build
on: [push]
env:
CARGO_TERM_COLOR: always
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: rustup component add clippy rustfmt
run: rustup component add clippy rustfmt
- name: cargo fmt --verbose --all -- --check
run: cargo fmt --verbose --all -- --check
- name: cargo clippy --verbose --all -- -D warnings
run: cargo clippy --verbose --all -- -D warnings
build:
strategy:
fail-fast: false
matrix:
toolchain:
- stable-x86_64-apple-darwin
- stable-x86_64-unknown-linux-gnu
include:
- toolchain: stable-x86_64-apple-darwin
os: macOS-latest
- toolchain: stable-x86_64-unknown-linux-gnu
os: ubuntu-latest
name: Build - ${{ matrix.toolchain }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: rust-toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
default: true
- name: Build
uses: actions-rs/cargo@v1
with:
command: build
args: --verbose --all --all-targets --all-features
- name: Run tests
uses: actions-rs/cargo@v1
with:
command: test
args: --verbose --all --all-targets --all-features
release-build:
strategy:
fail-fast: false
matrix:
target:
- x86_64-apple-darwin
- x86_64-unknown-linux-gnu
- aarch64-apple-darwin
- aarch64-unknown-linux-gnu
include:
- target: x86_64-apple-darwin
os: macOS-latest
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
- target: aarch64-apple-darwin
os: macOS-latest
- target: aarch64-unknown-linux-gnu
os: ubuntu-latest
name: Release build - ${{ matrix.target }}
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
- name: rust-toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
target: ${{ matrix.target }}
default: true
- name: Build
uses: actions-rs/cargo@v1
with:
command: build
args: --release --all-features --target=${{ matrix.target }}
use-cross: true
- name: Archive an executable
id: asset
run: |
EXE=
ARCHIVE=.tar.gz
if ${{ contains(matrix.target, 'pc-windows') }}; then
EXE=.exe
ARCHIVE=.zip
fi
NAME="${GITHUB_REPOSITORY#*/}"
EXECUTABLE="${NAME}${EXE}"
ASSET="${NAME}${ARCHIVE}"
mv "./target/${{ matrix.target }}/release/${EXECUTABLE}" "./${EXECUTABLE}"
if [[ "${ARCHIVE}" = ".tar.gz" ]]; then
tar czfv "./${ASSET}" "${EXECUTABLE}"
else
zip "./${ASSET}" "${EXECUTABLE}"
fi
echo "asset=${ASSET}" >>$GITHUB_OUTPUT
shell: bash
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: artifact-${{ matrix.target }}
path: ${{ steps.asset.outputs.asset }}
release:
name: Release
runs-on: ubuntu-latest
needs: [lint, build, release-build]
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Checkout tap
uses: actions/checkout@v4
with:
repository: "Ryooooooga/homebrew-tap"
token: ${{ secrets.GH_ACCESS_TOKEN }}
- name: Download artifacts
uses: actions/download-artifact@v4
- name: Rename assets
id: asset
run: |
NAME=${GITHUB_REPOSITORY#*/}
TAG=${GITHUB_REF#refs/tags/}
mv "artifact-x86_64-apple-darwin/${NAME}.tar.gz" "./${NAME}-${TAG}-x86_64-apple-darwin.tar.gz"
mv "artifact-x86_64-unknown-linux-gnu/${NAME}.tar.gz" "./${NAME}-${TAG}-x86_64-unknown-linux-gnu.tar.gz"
mv "artifact-aarch64-apple-darwin/${NAME}.tar.gz" "./${NAME}-${TAG}-aarch64-apple-darwin.tar.gz"
mv "artifact-aarch64-unknown-linux-gnu/${NAME}.tar.gz" "./${NAME}-${TAG}-aarch64-unknown-linux-gnu.tar.gz"
echo "asset-x86_64-apple-darwin=${NAME}-${TAG}-x86_64-apple-darwin.tar.gz" >>$GITHUB_OUTPUT
echo "asset-x86_64-unknown-linux-gnu=${NAME}-${TAG}-x86_64-unknown-linux-gnu.tar.gz" >>$GITHUB_OUTPUT
echo "asset-aarch64-apple-darwin=${NAME}-${TAG}-aarch64-apple-darwin.tar.gz" >>$GITHUB_OUTPUT
echo "asset-aarch64-unknown-linux-gnu=${NAME}-${TAG}-aarch64-unknown-linux-gnu.tar.gz" >>$GITHUB_OUTPUT
- name: Checksum
run: >
sha256sum
${{ steps.asset.outputs.asset-x86_64-apple-darwin }}
${{ steps.asset.outputs.asset-x86_64-unknown-linux-gnu }}
${{ steps.asset.outputs.asset-aarch64-apple-darwin }}
${{ steps.asset.outputs.asset-aarch64-unknown-linux-gnu }}
| tee checksum.txt
- name: Update tap
run: >
name="Croque"
bin="croque"
desc="Fast and customizable shell prompt"
homepage="https://github.com/${{ github.repository }}"
repo="https://github.com/${{ github.repository }}"
tag="${GITHUB_REF#refs/tags/}"
version="${tag#v}"
x86_64_darwin="${{ steps.asset.outputs.asset-x86_64-apple-darwin }}"
x86_64_darwin_sha256="$(sha256sum "${{ steps.asset.outputs.asset-x86_64-apple-darwin }}" | awk '{ print $1 }')"
x86_64_linux="${{ steps.asset.outputs.asset-x86_64-unknown-linux-gnu }}"
x86_64_linux_sha256="$(sha256sum "${{ steps.asset.outputs.asset-x86_64-unknown-linux-gnu }}" | awk '{ print $1 }')"
aarch64_darwin="${{ steps.asset.outputs.asset-aarch64-apple-darwin }}"
aarch64_darwin_sha256="$(sha256sum "${{ steps.asset.outputs.asset-aarch64-apple-darwin }}" | awk '{ print $1 }')"
aarch64_linux="${{ steps.asset.outputs.asset-aarch64-unknown-linux-gnu }}"
aarch64_linux_sha256="$(sha256sum "${{ steps.asset.outputs.asset-aarch64-unknown-linux-gnu }}" | awk '{ print $1 }')"
envsubst <formula.rb.tmpl >croque.rb
- name: Push tap
uses: dmnemec/[email protected]
env:
API_TOKEN_GITHUB: ${{ secrets.GH_ACCESS_TOKEN }}
with:
source_file: croque.rb
destination_repo: Ryooooooga/homebrew-tap
destination_folder: Formula
user_email: [email protected]
user_name: tap-bot
commit_message: brew formula update for croque
- name: Upload
uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
files: |
checksum.txt
${{ steps.asset.outputs.asset-x86_64-apple-darwin }}
${{ steps.asset.outputs.asset-x86_64-unknown-linux-gnu }}
${{ steps.asset.outputs.asset-aarch64-apple-darwin }}
${{ steps.asset.outputs.asset-aarch64-unknown-linux-gnu }}
publish:
name: Publish
runs-on: ubuntu-latest
needs: [release]
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- uses: katyo/publish-crates@v2
with:
registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }}