ci: update ci #120
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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/copy_file_to_another_repo_action@v1.1.1 | |
env: | |
API_TOKEN_GITHUB: ${{ secrets.GH_ACCESS_TOKEN }} | |
with: | |
source_file: croque.rb | |
destination_repo: Ryooooooga/homebrew-tap | |
destination_folder: Formula | |
user_email: ryooooooga+bot@users.noreply.github.com | |
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 }} |