Skip to content

CI

CI #601

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
- 'feat/**'
schedule:
- cron: '0 0 * * 0' # at midnight of each sunday
workflow_dispatch:
jobs:
skip-check:
permissions:
actions: write
contents: read
runs-on: ubuntu-latest
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@v5
with:
cancel_others: true
paths_ignore: '["*.md"]'
python:
needs: skip-check
if: needs.skip-check.outputs.should_skip != 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: taiki-e/install-action@just
- uses: astral-sh/setup-uv@v3
with:
enable-cache: true
- run: just ci-python
rust:
needs: skip-check
if: needs.skip-check.outputs.should_skip != 'true'
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
toolchain:
- 1.81.0 # MSRV
- stable
- nightly
steps:
- uses: actions/checkout@v4
- uses: taiki-e/install-action@just
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.toolchain }}
components: rustfmt, clippy
- uses: Swatinem/rust-cache@v2
- run: just ci-rust
cross-test:
needs: skip-check
if: needs.skip-check.outputs.should_skip != 'true'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- windows-latest
- macos-latest
steps:
- uses: actions/checkout@v4
- uses: taiki-e/install-action@just
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: just ci-test
audit:
needs: skip-check
if: needs.skip-check.outputs.should_skip != 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: taiki-e/install-action@cargo-audit
- run: cargo audit -D warnings
build-e2e:
needs: skip-check
if: needs.skip-check.outputs.should_skip != 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup
with:
cache-shared-key: "e2e"
cache-save-if: true
- run: just install all
mint-proxy-minio:
name: e2e (mint, s3s-proxy, minio)
needs: [skip-check, build-e2e]
if: needs.skip-check.outputs.should_skip != 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup
with:
cache-shared-key: "e2e"
cache-save-if: false
- run: just install all
- run: docker pull minio/mint:edge
- run: docker pull minio/minio:latest
- run: ./scripts/e2e-mint.sh
- run: ./scripts/report-mint.py /tmp/mint/log.json
- uses: actions/upload-artifact@v4
with:
name: mint-proxy-minio.logs
path: ./target/s3s-proxy.log
e2e-fs:
name: e2e (s3s-e2e, s3s-fs)
needs: [skip-check, build-e2e]
if: needs.skip-check.outputs.should_skip != 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup
with:
cache-shared-key: "e2e"
cache-save-if: false
- run: just install all
- run: ./scripts/e2e-fs.sh
- uses: actions/upload-artifact@v4
with:
name: e2e-fs.logs
path: ./target/s3s-fs.log
e2e-minio:
name: e2e (s3s-e2e, minio)
needs: [skip-check, build-e2e]
if: needs.skip-check.outputs.should_skip != 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup
with:
cache-shared-key: "e2e"
cache-save-if: false
- run: just install all
- run: docker pull minio/minio:latest
- run: ./scripts/e2e-minio.sh