505 lines
17 KiB
YAML
505 lines
17 KiB
YAML
name: CI
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
permissions:
|
|
contents: read
|
|
jobs:
|
|
check:
|
|
if: ${{ always() && github.event_name == 'pull_request' }}
|
|
needs:
|
|
- build
|
|
- clippy
|
|
- pre-commit
|
|
- rustfmt
|
|
- udeps
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: re-actors/alls-green@05ac9388f0aebcb5727afa17fcccfecd6f8ec5fe # release/v1
|
|
with:
|
|
jobs: ${{ toJSON(needs) }}
|
|
build:
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- target: aarch64-apple-darwin
|
|
runner: macos-26
|
|
cross: false
|
|
- target: aarch64-pc-windows-msvc
|
|
runner: windows-11-arm
|
|
cross: false
|
|
executable: proxy-scraper-checker.exe
|
|
- target: i686-pc-windows-msvc
|
|
runner: windows-2025
|
|
cross: false
|
|
executable: proxy-scraper-checker.exe
|
|
- target: x86_64-apple-darwin
|
|
runner: macos-26-intel
|
|
cross: false
|
|
- target: x86_64-pc-windows-msvc
|
|
runner: windows-2025
|
|
cross: false
|
|
executable: proxy-scraper-checker.exe
|
|
- target: aarch64-linux-android
|
|
runner: ubuntu-24.04
|
|
cross: true
|
|
- target: aarch64-unknown-linux-gnu
|
|
runner: ubuntu-24.04
|
|
cross: true
|
|
# - target: aarch64-unknown-linux-gnu:centos
|
|
# runner: ubuntu-24.04
|
|
# cross: true
|
|
- target: aarch64-unknown-linux-musl
|
|
runner: ubuntu-24.04
|
|
cross: true
|
|
# - target: aarch64_be-unknown-linux-gnu
|
|
# 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: i586-unknown-linux-gnu
|
|
runner: ubuntu-24.04
|
|
cross: true
|
|
- target: i586-unknown-linux-musl
|
|
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-pc-windows-gnu
|
|
# 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: mips-unknown-linux-gnu
|
|
# runner: ubuntu-24.04
|
|
# cross: true
|
|
# - target: mips-unknown-linux-musl
|
|
# runner: ubuntu-24.04
|
|
# cross: true
|
|
# - target: mips64-unknown-linux-gnuabi64
|
|
# runner: ubuntu-24.04
|
|
# cross: true
|
|
# - target: mips64-unknown-linux-muslabi64
|
|
# runner: ubuntu-24.04
|
|
# cross: true
|
|
# - target: mips64el-unknown-linux-gnuabi64
|
|
# runner: ubuntu-24.04
|
|
# cross: true
|
|
# - target: mips64el-unknown-linux-muslabi64
|
|
# runner: ubuntu-24.04
|
|
# cross: true
|
|
# - target: mipsel-unknown-linux-gnu
|
|
# runner: ubuntu-24.04
|
|
# cross: true
|
|
# - target: mipsel-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: riscv64gc-unknown-linux-musl
|
|
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: sparcv9-sun-solaris
|
|
# runner: ubuntu-24.04
|
|
# cross: true
|
|
# - target: thumbv6m-none-eabi
|
|
# runner: ubuntu-24.04
|
|
# cross: true
|
|
# - target: thumbv7em-none-eabi
|
|
# runner: ubuntu-24.04
|
|
# cross: true
|
|
# - target: thumbv7em-none-eabihf
|
|
# runner: ubuntu-24.04
|
|
# cross: true
|
|
# - target: thumbv7m-none-eabi
|
|
# 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: thumbv8m.base-none-eabi
|
|
# runner: ubuntu-24.04
|
|
# cross: true
|
|
# - target: thumbv8m.main-none-eabi
|
|
# runner: ubuntu-24.04
|
|
# cross: true
|
|
# - target: thumbv8m.main-none-eabihf
|
|
# runner: ubuntu-24.04
|
|
# cross: true
|
|
# - target: wasm32-unknown-emscripten
|
|
# runner: ubuntu-24.04
|
|
# cross: true
|
|
- target: x86_64-linux-android
|
|
runner: ubuntu-24.04
|
|
cross: true
|
|
# - target: x86_64-pc-windows-gnu
|
|
# runner: ubuntu-24.04
|
|
# cross: true
|
|
# - target: x86_64-pc-solaris
|
|
# runner: ubuntu-24.04
|
|
# cross: true
|
|
- target: x86_64-unknown-freebsd
|
|
runner: ubuntu-24.04
|
|
cross: true
|
|
# - target: x86_64-unknown-dragonfly
|
|
# runner: ubuntu-24.04
|
|
# cross: true
|
|
- target: x86_64-unknown-illumos
|
|
runner: ubuntu-24.04
|
|
cross: true
|
|
- target: x86_64-unknown-linux-gnu
|
|
runner: ubuntu-24.04
|
|
cross: true
|
|
# - target: x86_64-unknown-linux-gnu:centos
|
|
# 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 }}
|
|
steps:
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
with:
|
|
persist-credentials: false
|
|
- uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 # v1
|
|
with:
|
|
toolchain: beta
|
|
target: ${{ matrix.target }}
|
|
cache-key: ${{ matrix.target }}
|
|
- if: ${{ matrix.cross }}
|
|
run: cargo +beta install cross --git https://github.com/cross-rs/cross
|
|
env:
|
|
RUSTFLAGS: ""
|
|
- 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 LICENSE dist/
|
|
- run: mv target/${{ matrix.target}}/release/${{ matrix.executable || 'proxy-scraper-checker' }} dist/
|
|
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
|
with:
|
|
name: proxy-scraper-checker-binary-${{ matrix.target }}
|
|
path: dist/
|
|
if-no-files-found: error
|
|
build-docker:
|
|
if: ${{ github.event_name != 'pull_request' }}
|
|
runs-on: ${{ matrix.runner }}
|
|
permissions:
|
|
packages: write
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- platform: "linux/386"
|
|
tag: "386"
|
|
runner: ubuntu-24.04
|
|
- platform: "linux/amd64"
|
|
tag: "amd64"
|
|
runner: ubuntu-24.04
|
|
- platform: "linux/arm/v7"
|
|
tag: "arm-v7"
|
|
runner: ubuntu-24.04-arm
|
|
- platform: "linux/arm64/v8"
|
|
tag: "arm64-v8"
|
|
runner: ubuntu-24.04-arm
|
|
fail-fast: false
|
|
steps:
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
with:
|
|
persist-credentials: false
|
|
- id: meta
|
|
uses: docker/metadata-action@dc802804100637a589fabce1cb79ff13a1411302 # v6
|
|
with:
|
|
images: ghcr.io/${{ github.repository }}
|
|
tags: type=raw,value=${{ github.sha }}-${{ matrix.tag }}
|
|
- uses: docker/login-action@abd2ef45e78c5afb21d64d4ca52ee8550d9572c7 # v4
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
- uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4
|
|
- id: push
|
|
env:
|
|
DOCKER_BUILD_RECORD_UPLOAD: false
|
|
uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7
|
|
with:
|
|
cache-from: type=gha
|
|
cache-to: type=gha,mode=max
|
|
labels: ${{ steps.meta.outputs.labels }}
|
|
platforms: ${{ matrix.platform }}
|
|
provenance: false
|
|
push: true
|
|
tags: ${{ steps.meta.outputs.tags }}
|
|
upload-docker-manifest:
|
|
needs:
|
|
- build-docker
|
|
runs-on: ubuntu-24.04
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: docker/login-action@abd2ef45e78c5afb21d64d4ca52ee8550d9572c7 # v4
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
- run: >
|
|
docker manifest create ghcr.io/${{ github.repository }}:${{ github.sha }}
|
|
--amend ghcr.io/${{ github.repository }}:${{ github.sha }}-386
|
|
--amend ghcr.io/${{ github.repository }}:${{ github.sha }}-amd64
|
|
--amend ghcr.io/${{ github.repository }}:${{ github.sha }}-arm-v7
|
|
--amend ghcr.io/${{ github.repository }}:${{ github.sha }}-arm64-v8
|
|
- run: docker manifest push ghcr.io/${{ github.repository }}:${{ github.sha }}
|
|
upload-docker-prebuilt:
|
|
needs:
|
|
- upload-docker-manifest
|
|
runs-on: ubuntu-24.04
|
|
strategy:
|
|
matrix:
|
|
platform:
|
|
- "386"
|
|
- "amd64"
|
|
- "arm-v7"
|
|
- "arm64-v8"
|
|
fail-fast: false
|
|
steps:
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
with:
|
|
persist-credentials: false
|
|
- run: mkdir -p dist
|
|
- run: echo -n '${{ github.sha }}' > dist/commit-sha.txt
|
|
- run: mv {out,compose.yaml,config.toml,LICENSE} dist/
|
|
- name: Create Dockerfile
|
|
run: |
|
|
cat << 'EOF' > dist/Dockerfile
|
|
# syntax=docker.io/docker/dockerfile:1
|
|
|
|
FROM ghcr.io/${{ github.repository }}:${{ github.sha }}
|
|
|
|
ARG \
|
|
UID=1000 \
|
|
GID=1000
|
|
|
|
USER root
|
|
|
|
RUN (getent group "${GID}" || groupmod --gid "${GID}" app) \
|
|
&& usermod --uid "${UID}" --gid "${GID}" app
|
|
|
|
USER app
|
|
EOF
|
|
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
|
with:
|
|
name: proxy-scraper-checker-docker-${{ matrix.platform }}
|
|
path: dist/
|
|
if-no-files-found: error
|
|
include-hidden-files: true
|
|
upload-docker-src:
|
|
needs:
|
|
- build-docker
|
|
strategy:
|
|
matrix:
|
|
platform:
|
|
- "ppc64le"
|
|
- "riscv64"
|
|
- "s390x"
|
|
fail-fast: false
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
with:
|
|
persist-credentials: false
|
|
- run: mkdir -p dist
|
|
- run: echo -n '${{ github.sha }}' > dist/commit-sha.txt
|
|
- run: mv {out,src,Cargo.lock,Cargo.toml,compose.yaml,config.toml,Dockerfile,LICENSE} dist/
|
|
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
|
with:
|
|
name: proxy-scraper-checker-docker-${{ matrix.platform }}
|
|
path: dist/
|
|
if-no-files-found: error
|
|
include-hidden-files: true
|
|
clippy:
|
|
runs-on: ubuntu-24.04
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- features: "--features tui"
|
|
target: >
|
|
aarch64-apple-darwin,
|
|
aarch64-pc-windows-msvc,
|
|
aarch64-unknown-linux-gnu,
|
|
i686-pc-windows-msvc,
|
|
x86_64-apple-darwin,
|
|
x86_64-pc-windows-msvc,
|
|
x86_64-unknown-linux-gnu,
|
|
aarch64-linux-android,
|
|
aarch64-unknown-linux-musl,
|
|
arm-linux-androideabi,
|
|
arm-unknown-linux-gnueabi,
|
|
arm-unknown-linux-gnueabihf,
|
|
arm-unknown-linux-musleabi,
|
|
arm-unknown-linux-musleabihf,
|
|
armv5te-unknown-linux-gnueabi,
|
|
armv5te-unknown-linux-musleabi,
|
|
armv7-linux-androideabi,
|
|
armv7-unknown-linux-gnueabi,
|
|
armv7-unknown-linux-gnueabihf,
|
|
armv7-unknown-linux-musleabi,
|
|
armv7-unknown-linux-musleabihf,
|
|
i586-unknown-linux-gnu,
|
|
i586-unknown-linux-musl,
|
|
i686-unknown-freebsd,
|
|
i686-linux-android,
|
|
i686-unknown-linux-gnu,
|
|
loongarch64-unknown-linux-gnu,
|
|
loongarch64-unknown-linux-musl,
|
|
powerpc-unknown-linux-gnu,
|
|
powerpc64-unknown-linux-gnu,
|
|
powerpc64le-unknown-linux-gnu,
|
|
riscv64gc-unknown-linux-gnu,
|
|
riscv64gc-unknown-linux-musl,
|
|
s390x-unknown-linux-gnu,
|
|
sparc64-unknown-linux-gnu,
|
|
thumbv7neon-linux-androideabi,
|
|
thumbv7neon-unknown-linux-gnueabihf,
|
|
x86_64-linux-android,
|
|
x86_64-unknown-freebsd,
|
|
x86_64-unknown-illumos,
|
|
x86_64-unknown-linux-musl
|
|
- features: ""
|
|
target: >
|
|
i686-unknown-linux-gnu,
|
|
x86_64-unknown-linux-gnu,
|
|
armv7-unknown-linux-gnueabihf,
|
|
aarch64-unknown-linux-gnu,
|
|
powerpc64le-unknown-linux-gnu,
|
|
riscv64gc-unknown-linux-gnu,
|
|
s390x-unknown-linux-gnu
|
|
fail-fast: false
|
|
steps:
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
with:
|
|
persist-credentials: false
|
|
- uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 # v1
|
|
with:
|
|
toolchain: beta
|
|
target: ${{ matrix.target }}
|
|
components: clippy
|
|
cache-key: x86_64-unknown-linux-gnu
|
|
- run: cargo +beta clippy --all-targets ${{ matrix.features }} -- -Dwarnings
|
|
pre-commit:
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
with:
|
|
persist-credentials: false
|
|
- uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
|
|
with:
|
|
python-version: "3.14"
|
|
enable-cache: false
|
|
- run: uvx --no-cache prek run --all-files --show-diff-on-failure
|
|
rustfmt:
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
with:
|
|
persist-credentials: false
|
|
- uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 # v1
|
|
with:
|
|
toolchain: nightly
|
|
components: rustfmt
|
|
cache-key: x86_64-unknown-linux-gnu
|
|
- run: cargo +nightly fmt --check
|
|
udeps:
|
|
runs-on: ubuntu-24.04
|
|
strategy:
|
|
matrix:
|
|
features:
|
|
- ""
|
|
- "--features tui"
|
|
fail-fast: false
|
|
steps:
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
with:
|
|
persist-credentials: false
|
|
- uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 # v1
|
|
with:
|
|
toolchain: nightly
|
|
cache-key: x86_64-unknown-linux-gnu
|
|
- run: cargo +nightly install --locked cargo-udeps
|
|
- run: cargo +nightly udeps ${{ matrix.features }}
|