From 545ad712e6bcf01c373499e30e923a0cb852c7c4 Mon Sep 17 00:00:00 2001 From: Kiron Date: Sun, 17 Dec 2023 17:11:16 +0800 Subject: [PATCH] Add GitHub Actions --- .github/workflows/main.yaml | 46 ++++++++++++++++++++++++++++++++++ .github/workflows/publish.yaml | 18 +++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 .github/workflows/main.yaml create mode 100644 .github/workflows/publish.yaml diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml new file mode 100644 index 0000000..618f809 --- /dev/null +++ b/.github/workflows/main.yaml @@ -0,0 +1,46 @@ +--- +name: main + +on: + pull_request: + merge_group: + +jobs: + test: + name: Test + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Install Rust + run: rustup update stable && rustup default stable + - name: Install Linux dependency + run: sudo apt-get install libkrb5-dev + - name: Build and run tests + run: cargo test + + rustfmt: + name: Rustfmt + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install Rust + run: rustup update stable && rustup default stable && rustup component add rustfmt + - run: cargo fmt --check + + # The success job is here to consolidate the total success/failure state of + # all other jobs. This job is then included in the GitHub branch protection + # rule which prevents merges unless all other jobs are passing. This makes + # it easier to manage the list of jobs via this yml file and to prevent + # accidentally adding new jobs without also updating the branch protections. + success: + name: Success gate + if: always() + needs: + - test + - rustfmt + runs-on: ubuntu-latest + steps: + - run: jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}' + - name: Done + run: exit 0 diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml new file mode 100644 index 0000000..9f9114e --- /dev/null +++ b/.github/workflows/publish.yaml @@ -0,0 +1,18 @@ +--- +name: publish + +on: + workflow_dispatch: + +jobs: + publish: + name: Publish to crates.io + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - name: Install Rust (rustup) + run: rustup update stable --no-self-update && rustup default stable + - name: Publish + env: + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} + run: cargo publish