diff --git a/.github/workflows/compat.yml b/.github/workflows/compat.yml new file mode 100644 index 0000000..dfbeb63 --- /dev/null +++ b/.github/workflows/compat.yml @@ -0,0 +1,124 @@ +name: Compatibility + +on: + pull_request: + paths-ignore: + - "**/*.md" + push: + branches: + - main + - "renovate/**" + paths-ignore: + - "**/*.md" + schedule: + - cron: "0 0 * * 0" + merge_group: + types: [checks_requested] + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +env: + RESTIC_REPOSITORY: rest:http://restic:restic@127.0.0.1:8000/ci_repo + RESTIC_PASSWORD: restic + +jobs: + test-restic: + name: Test server with restic + runs-on: ${{ matrix.job.os }} + strategy: + matrix: + rust: [stable] + job: + - os: macos-latest + - os: ubuntu-latest + - os: windows-latest + steps: + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 + if: github.event_name != 'pull_request' + with: + fetch-depth: 0 + + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 + if: github.event_name == 'pull_request' + with: + ref: ${{ github.event.pull_request.head.sha }} + fetch-depth: 0 + + - name: Setup Restic + uses: rustic-rs/setup-restic@main + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@1482605bfc5719782e1267fd0c0cc350fe7646b8 # v1 + with: + toolchain: stable + + - name: Run server in background + run: cargo run -- serve -c tests/fixtures/test_data/rustic_server.toml -v & + + - name: Run restic + shell: bash + run: | + restic init + restic backup tests/fixtures/test_data/test_repo_source + restic backup tests/fixtures/test_data/test_repo_source + restic check + restic forget --keep-last 1 --prune + + - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2 + + # test-hurl: + # name: Test server with hurl + # runs-on: ${{ matrix.job.os }} + # strategy: + # matrix: + # rust: [stable] + # job: + # - os: macos-latest + # - os: ubuntu-latest + # - os: windows-latest + # steps: + # - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 + # if: github.event_name != 'pull_request' + # with: + # fetch-depth: 0 + + # - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 + # if: github.event_name == 'pull_request' + # with: + # ref: ${{ github.event.pull_request.head.sha }} + # fetch-depth: 0 + + # - name: Install Rust toolchain + # uses: dtolnay/rust-toolchain@1482605bfc5719782e1267fd0c0cc350fe7646b8 # v1 + # with: + # toolchain: stable + + # - name: Install hurl + # uses: taiki-e/install-action@c6dc131d2c4291552cafb840290190a53b2cd937 # v2 + # with: + # tool: hurl + + # - name: Run server in background + # run: cargo run -- serve -c tests/fixtures/test_data/rustic_server.toml -v & + + # - name: Run hurl + # shell: bash + # run: | + # hurl -i tests/fixtures/hurl/endpoints.hurl + + # - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2 + + result: + name: Result (Compat) + runs-on: ubuntu-latest + needs: + - test-restic + steps: + - name: Mark the job as successful + run: exit 0 + if: success() + - name: Mark the job as unsuccessful + run: exit 1 + if: "!success()"