diff options
author | Doug Tangren <d.tangren@gmail.com> | 2019-12-06 00:23:33 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-12-06 00:23:33 -0500 |
commit | cf8a06e79079193c89752239b1be7f3b18491f45 (patch) | |
tree | 06a7a415e2842280b2044487041af486f3d93367 /.github | |
parent | 546753dc6d3215429e6f91c80abaa6599de332e5 (diff) |
port build to gh actions (#204)
* port build to gh actions
* attempt 2: trip hook registration
* hooked to pushes
* gh actions badge
* build cache
* gate at job level
* fix badge merge
* populate cache after checkout
* work now cache later
Diffstat (limited to '.github')
-rw-r--r-- | .github/workflows/main.yml | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..80c2290 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,96 @@ +name: Main + +on: push + +jobs: + codestyle: + runs-on: ubuntu-latest + steps: + - name: Set up Rust + uses: hecrj/setup-rust-action@v1 + with: + components: rustfmt + rust-version: nightly + - uses: actions/checkout@v1 + - run: cargo fmt --all -- --check + + lint: + runs-on: ubuntu-latest + steps: + - name: Set up Rust + uses: hecrj/setup-rust-action@v1 + with: + components: clippy + - uses: actions/checkout@v1 + - run: cargo clippy --all-targets -- -D clippy::all + + compile: + runs-on: ubuntu-latest + steps: + - name: Set up Rust + uses: hecrj/setup-rust-action@v1 + - uses: actions/checkout@master + - run: cargo check --all + + test: + needs: [codestyle, lint, compile] + strategy: + matrix: + rust: [stable, beta, nightly] + runs-on: ubuntu-latest + + steps: + - name: Setup Rust + uses: hecrj/setup-rust-action@v1 + with: + rust-version: ${{ matrix.rust }} + - name: Checkout + uses: actions/checkout@v1 + - name: Test + run: cargo test + - name: Coverage + if: matrix.rust == 'stable' + run: | + # tarpaulin knows how to extract data from ci + # ci services and GitHub actions is not one of them + # work around that by masquerading as travis + # https://github.com/xd009642/coveralls-api/blob/6da4ccd7c6eaf1df04cfd1e560362de70fa80605/src/lib.rs#L247-L262 + export TRAVIS_JOB_ID=${GITHUB_SHA} + export TRAVIS_PULL_REQUEST=false + export TRAVIS_BRANCH=${GITHUB_REF##*/} + cargo install cargo-tarpaulin + cargo tarpaulin --ciserver travis-ci --coveralls $TRAVIS_JOB_ID + + publish-docs: + if: github.ref == 'refs/heads/master' + runs-on: ubuntu-latest + needs: [test] + steps: + - name: Set up Rust + uses: hecrj/setup-rust-action@v1 + - uses: actions/checkout@v1 + - name: Generate Docs + shell: bash + run: | + cargo doc --no-deps + echo "<meta http-equiv=refresh content=0;url=`echo ${{ github.repository }} | cut -d / -f 2 | tr '-' '_'`/index.html>" > target/doc/index.html + - name: Publish + uses: docker://peaceiris/gh-pages:v2.3.1 + env: + PUBLISH_BRANCH: gh-pages + PUBLISH_DIR: ./target/doc + PERSONAL_TOKEN: ${{ secrets.GH_PAGES_TOKEN }} + with: + emptyCommits: true + + publish-crate: + if: startsWith(github.ref, 'refs/tags/') + runs-on: ubuntu-latest + needs: [test] + steps: + - name: Set up Rust + uses: hecrj/setup-rust-action@v1 + - uses: actions/checkout@v1 + - name: Publish + shell: bash + run: cargo publish --token ${{ secrets.CRATES_TOKEN }}
\ No newline at end of file |