From f0ed4f763d8999df1dd1d098a233f8e6ea65f5a0 Mon Sep 17 00:00:00 2001 From: DDo <34526678+Ott-cop@users.noreply.github.com> Date: Wed, 21 Feb 2024 11:53:58 -0300 Subject: [PATCH] Update rust.yml --- .github/workflows/rust.yml | 274 ++++++++++++++++++++----------------- Cargo.lock | 39 ++---- Cargo.toml | 4 +- 3 files changed, 167 insertions(+), 150 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 9648236..182fef7 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -1,143 +1,173 @@ name: Rust on: - push: + workflow_dispatch: pull_request: + push: + + tags: + - 'v*' + + + +permissions: + contents: write env: - CARGO_TERM_COLOR: always + 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/" -defaults: - run: - # necessary for windows - shell: bash +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' || github.repository != 'ClementTsang/bottom' }} jobs: - test: + release: runs-on: ubuntu-latest + outputs: + should_skip: ${{ steps.skip_check.outputs.should_skip }} steps: - - uses: actions/checkout@v2 - - name: Cargo cache - uses: actions/cache@v2 + - name: Check if this action should be skipped + id: skip_check + uses: fkirc/skip-duplicate-actions@f75f66ce1886f00957d99748a42c724f4330bdcf # v5.3.1 with: - path: | - ~/.cargo/registry - ./target - key: test-cargo-registry - - name: List - run: find ./ - - name: Run tests - run: cargo test --verbose - - build: + 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: - # a list of all the targets - include: - - TARGET: x86_64-unknown-linux-gnu # tested in a debian container on a mac - OS: ubuntu-latest - - TARGET: x86_64-unknown-linux-musl # test in an alpine container on a mac - OS: ubuntu-latest - - TARGET: aarch64-unknown-linux-gnu # tested on aws t4g.nano - OS: ubuntu-latest - - TARGET: aarch64-unknown-linux-musl # tested on aws t4g.nano in alpine container - OS: ubuntu-latest - - TARGET: armv7-unknown-linux-gnueabihf # raspberry pi 2-3-4, not tested - OS: ubuntu-latest - - TARGET: armv7-unknown-linux-musleabihf # raspberry pi 2-3-4, not tested - OS: ubuntu-latest - - TARGET: arm-unknown-linux-gnueabihf # raspberry pi 0-1, not tested - OS: ubuntu-latest - - TARGET: arm-unknown-linux-musleabihf # raspberry pi 0-1, not tested - OS: ubuntu-latest - - TARGET: x86_64-apple-darwin # tested on a mac, is not properly signed so there are security warnings - OS: macos-latest - - TARGET: x86_64-pc-windows-msvc # tested on a windows machine - OS: windows-latest - needs: test - runs-on: ${{ matrix.OS }} - env: - NAME: rust-cross-compile-example # change with the name of your project - TARGET: ${{ matrix.TARGET }} - OS: ${{ matrix.OS }} + 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: - - uses: actions/checkout@v2 - - name: Cargo cache - uses: actions/cache@v2 + - 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: - path: | - ~/.cargo/registry - ./target - key: build-cargo-registry-${{matrix.TARGET}} - - name: List - run: find ./ - - name: Install and configure dependencies - run: | - # dependencies are only needed on ubuntu as that's the only place where - # we make cross-compilation - if [[ $OS =~ ^ubuntu.*$ ]]; then - sudo apt-get install -qq crossbuild-essential-arm64 crossbuild-essential-armhf - fi - - # some additional configuration for cross-compilation on linux - cat >>~/.cargo/config <