Update rust.yml #14
Workflow file for this run
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: Rust | |
on: | |
workflow_dispatch: | |
pull_request: | |
push: | |
tags: | |
- 'v*' | |
branches: | |
- main | |
permissions: | |
contents: write | |
env: | |
RUST_BACKTRACE: 1 | |
CARGO_INCREMENTAL: 0 | |
CARGO_PROFILE_DEV_DEBUG: 0 | |
CARGO_HUSKY_DONT_INSTALL_HOOKS: true | |
COMPLETION_DIR: "target/tmp/bottom/completion/" | |
MANPAGE_DIR: "target/tmp/bottom/manpage/" | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: ${{ github.event_name == 'pull_request' || github.repository != 'ClementTsang/bottom' }} | |
jobs: | |
release: | |
runs-on: ubuntu-latest | |
outputs: | |
should_skip: ${{ steps.skip_check.outputs.should_skip }} | |
steps: | |
- name: Check if this action should be skipped | |
id: skip_check | |
uses: fkirc/skip-duplicate-actions@f75f66ce1886f00957d99748a42c724f4330bdcf # v5.3.1 | |
with: | |
skip_after_successful_duplicate: "true" | |
paths: '[".cargo/**", ".github/workflows/ci.yml", "sample_configs/**", "src/**", "tests/**", "build.rs", "Cargo.lock", "Cargo.toml", "clippy.toml", "rustfmt.toml", "Cross.toml"]' | |
do_not_skip: '["workflow_dispatch", "push"]' | |
build-release: | |
needs: release | |
runs-on: ${{ matrix.info.os }} | |
if: ${{ needs.release.outputs.should_skip != 'true' }} | |
timeout-minutes: 20 | |
strategy: | |
fail-fast: false | |
matrix: | |
info: | |
- { | |
os: "ubuntu-latest", | |
target: "i686-unknown-linux-gnu", | |
cross: true, | |
rust: stable, | |
} | |
- { | |
os: "ubuntu-latest", | |
target: "x86_64-unknown-linux-gnu", | |
cross: true, | |
rust: stable, | |
} | |
- { | |
os: "windows-2019", | |
target: "i686-pc-windows-msvc", | |
cross: false, | |
rust: stable, | |
} | |
- { | |
os: "windows-2019", | |
target: "x86_64-pc-windows-gnu", | |
cross: false, | |
rust: stable, | |
} | |
# Beta | |
- { | |
os: "ubuntu-latest", | |
target: "x86_64-unknown-linux-gnu", | |
cross: false, | |
rust: beta, | |
} | |
- { | |
os: "macos-12", | |
target: "x86_64-apple-darwin", | |
cross: false, | |
rust: beta, | |
} | |
- { | |
os: "windows-2019", | |
target: "x86_64-pc-windows-msvc", | |
cross: false, | |
rust: beta, | |
} | |
steps: | |
- name: Install Dependencies | |
if: ${{ matrix.info.os == 'ubuntu-latest' }} | |
run: sudo apt update && sudo apt install pkg-config libssl-dev -y | |
- name: Checkout repository | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
- name: Set up Rust toolchain | |
uses: dtolnay/rust-toolchain@be73d7920c329f220ce78e0234b8f96b7ae60248 | |
with: | |
toolchain: ${{ matrix.info.rust }} | |
target: ${{ matrix.info.target }} | |
- name: Enable Rust cache | |
uses: Swatinem/rust-cache@378c8285a4eaf12899d11bea686a763e906956af # 2.7.3 | |
if: ${{ github.event_name != 'pull_request' || ! github.event.pull_request.head.repo.fork }} # If it is a PR, only if not a fork | |
with: | |
key: ${{ matrix.info.target }} | |
cache-all-crates: true | |
- name: Try building with only default features enabled | |
uses: ClementTsang/[email protected] | |
if: ${{ matrix.info.no-default-features != true }} | |
with: | |
command: build | |
args: --all-targets --verbose --target=${{ matrix.info.target }} --locked | |
use-cross: ${{ matrix.info.cross }} | |
cross-version: ${{ matrix.info.cross-version || '0.2.5' }} | |
- name: Try building with no features enabled | |
uses: ClementTsang/[email protected] | |
if: ${{ matrix.info.no-default-features == true }} | |
with: | |
command: build | |
args: --all-targets --verbose --target=${{ matrix.info.target }} --locked --no-default-features | |
use-cross: ${{ matrix.info.cross }} | |
cross-version: ${{ matrix.info.cross-version || '0.2.5' }} | |
- name: Get the release version from the tag | |
shell: bash | |
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV | |
- name: Build archive | |
shell: bash | |
run: | | |
# Replace with the name of your binary | |
binary_name="imxceldownload" | |
dirname="$binary_name-${{ env.VERSION }}-${{ matrix.info.target }}" | |
mkdir "$dirname" | |
if [ "${{ matrix.info.os }}" = "windows-latest" ]; then | |
mv "target/${{ matrix.info.target }}/release/$binary_name.exe" "$dirname" | |
else | |
mv "target/${{ matrix.info.target }}/release/$binary_name" "$dirname" | |
fi | |
if [ "${{ matrix.info.os }}" = "windows-latest" ]; then | |
7z a "$dirname.zip" "$dirname" | |
echo "ASSET=$dirname.zip" >> $GITHUB_ENV | |
else | |
tar -czf "$dirname.tar.gz" "$dirname" | |
echo "ASSET=$dirname.tar.gz" >> $GITHUB_ENV | |
fi | |
- name: Release | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: | | |
${{ env.ASSET }} | |
completion: | |
name: "Check" | |
needs: [build-release] | |
if: ${{ success() || failure() }} | |
runs-on: "ubuntu-latest" | |
steps: | |
- name: Relesead Success | |
if: ${{ (needs.build-release.result == 'success') || (needs.build-release.result == 'skipped') }} | |
run: | | |
echo "Release completed successfully."; | |
- name: Release Failed | |
if: ${{ needs.build-release.result == 'failure' }} | |
run: | | |
echo "Release failed!"; | |
exit 1; |