name: CI on: push: branches: - main pull_request: workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true jobs: build: strategy: matrix: include: - target: aarch64-apple-darwin runner: macos-15 cross: false - target: aarch64-unknown-linux-gnu runner: ubuntu-24.04-arm cross: false - target: i686-pc-windows-msvc runner: windows-2025 cross: false executable: proxy-scraper-checker.exe - target: x86_64-apple-darwin runner: macos-15 cross: false - target: x86_64-pc-windows-msvc runner: windows-2025 cross: false executable: proxy-scraper-checker.exe - target: x86_64-unknown-linux-gnu runner: ubuntu-24.04 cross: false - target: aarch64-linux-android runner: ubuntu-24.04 cross: true - target: aarch64-unknown-linux-musl runner: ubuntu-24.04 cross: true - target: arm-linux-androideabi runner: ubuntu-24.04 cross: true - target: arm-unknown-linux-gnueabi runner: ubuntu-24.04 cross: true - target: arm-unknown-linux-gnueabihf runner: ubuntu-24.04 cross: true - target: arm-unknown-linux-musleabi runner: ubuntu-24.04 cross: true - target: arm-unknown-linux-musleabihf runner: ubuntu-24.04 cross: true - target: armv5te-unknown-linux-gnueabi runner: ubuntu-24.04 cross: true - target: armv5te-unknown-linux-musleabi runner: ubuntu-24.04 cross: true - target: armv7-linux-androideabi runner: ubuntu-24.04 cross: true - target: armv7-unknown-linux-gnueabi runner: ubuntu-24.04 cross: true - target: armv7-unknown-linux-gnueabihf runner: ubuntu-24.04 cross: true - target: armv7-unknown-linux-musleabi runner: ubuntu-24.04 cross: true - target: armv7-unknown-linux-musleabihf runner: ubuntu-24.04 cross: true - target: i686-unknown-freebsd runner: ubuntu-24.04 cross: true - target: i686-linux-android runner: ubuntu-24.04 cross: true - target: i686-unknown-linux-gnu runner: ubuntu-24.04 cross: true - target: loongarch64-unknown-linux-gnu runner: ubuntu-24.04 cross: true - target: loongarch64-unknown-linux-musl runner: ubuntu-24.04 cross: true - target: powerpc-unknown-linux-gnu runner: ubuntu-24.04 cross: true - target: powerpc64-unknown-linux-gnu runner: ubuntu-24.04 cross: true - target: powerpc64le-unknown-linux-gnu runner: ubuntu-24.04 cross: true - target: riscv64gc-unknown-linux-gnu runner: ubuntu-24.04 cross: true - target: s390x-unknown-linux-gnu runner: ubuntu-24.04 cross: true - target: sparc64-unknown-linux-gnu runner: ubuntu-24.04 cross: true - target: thumbv7neon-linux-androideabi runner: ubuntu-24.04 cross: true - target: thumbv7neon-unknown-linux-gnueabihf runner: ubuntu-24.04 cross: true - target: x86_64-linux-android runner: ubuntu-24.04 cross: true - target: x86_64-unknown-freebsd runner: ubuntu-24.04 cross: true - target: x86_64-unknown-illumos runner: ubuntu-24.04 cross: true - target: x86_64-unknown-linux-musl runner: ubuntu-24.04 cross: true - target: x86_64-unknown-netbsd runner: ubuntu-24.04 cross: true fail-fast: false runs-on: ${{ matrix.runner }} permissions: id-token: write attestations: write env: SCCACHE_GHA_ENABLED: "true" RUSTC_WRAPPER: "sccache" steps: - uses: actions/checkout@v4 with: persist-credentials: false - run: rustup toolchain install beta --profile minimal --target '${{ matrix.target }}' --allow-downgrade - run: rustup default beta - uses: mozilla-actions/sccache-action@v0.0.9 - if: ${{ matrix.cross }} run: cargo +beta install cross --git https://github.com/cross-rs/cross - if: ${{ matrix.cross }} run: cross +beta build --features tui --release --target '${{ matrix.target }}' --locked - if: ${{ !matrix.cross }} run: cargo +beta build --features tui --release --target '${{ matrix.target }}' --locked - run: mkdir dist - run: echo -n '${{ github.sha }}' > dist/commit-sha.txt shell: bash - run: mv config.toml dist/ - run: mv target/${{ matrix.target}}/release/${{ matrix.executable || 'proxy-scraper-checker' }} dist/ - if: ${{ github.event_name != 'pull_request' }} uses: actions/attest-build-provenance@v2 with: subject-path: dist - uses: actions/upload-artifact@v4 with: name: proxy-scraper-checker-${{ matrix.target }} path: dist/ if-no-files-found: error check: if: ${{ always() && github.event_name == 'pull_request' }} needs: - build - clippy - pre-commit - rustfmt runs-on: ubuntu-24.04 steps: - uses: re-actors/alls-green@release/v1 with: jobs: ${{ toJSON(needs) }} clippy: runs-on: ubuntu-24.04 strategy: matrix: features: - "--features tui" - "--features logger" - "" fail-fast: false env: SCCACHE_GHA_ENABLED: "true" RUSTC_WRAPPER: "sccache" steps: - uses: actions/checkout@v4 with: persist-credentials: false - run: rustup toolchain install beta --profile minimal --component clippy --allow-downgrade - uses: mozilla-actions/sccache-action@v0.0.9 - run: cargo +beta clippy --all-targets ${{ matrix.features }} -- -Dwarnings -Wclippy::pedantic pre-commit: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 with: persist-credentials: false - uses: astral-sh/setup-uv@v5 with: enable-cache: false - run: uv tool run --from pre-commit@latest --with pre-commit-uv --no-cache --python 3.13 pre-commit run --all-files --show-diff-on-failure env: RUFF_OUTPUT_FORMAT: github rustfmt: runs-on: ubuntu-24.04 env: SCCACHE_GHA_ENABLED: "true" RUSTC_WRAPPER: "sccache" steps: - uses: actions/checkout@v4 with: persist-credentials: false - run: rustup toolchain install nightly --profile minimal --component rustfmt --allow-downgrade - uses: mozilla-actions/sccache-action@v0.0.9 - run: cargo +nightly fmt --check