name: CI on: push: branches: - main pull_request: branches: - main 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: concurrent_skipping: 'same_content_newer' cancel_others: true paths_ignore: '["*.md"]' develop: needs: skip-check if: needs.skip-check.outputs.should_skip != 'true' runs-on: ubuntu-latest timeout-minutes: 60 steps: - uses: actions/checkout@v4 - uses: ./.github/actions/setup - name: Test run: cargo test --all --exclude e2e_test - name: Format run: cargo fmt --all --check - name: Lint run: cargo clippy --all-targets --all-features -- -D warnings s3s-e2e: name: E2E (s3s-e2e) needs: skip-check if: needs.skip-check.outputs.should_skip != 'true' runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v4.2.2 - uses: ./.github/actions/setup - name: Install s3s-e2e uses: taiki-e/cache-cargo-install-action@v2 with: tool: s3s-e2e git: https://github.com/Nugine/s3s.git rev: b7714bfaa17ddfa9b23ea01774a1e7bbdbfc2ca3 - name: Build debug run: | touch rustfs/build.rs cargo build -p rustfs --bins - name: Run s3s-e2e run: | s3s-e2e --version ./scripts/e2e-run.sh ./target/debug/rustfs /tmp/rustfs - uses: actions/upload-artifact@v4 with: name: s3s-e2e.logs path: /tmp/rustfs.log