From cf8a06e79079193c89752239b1be7f3b18491f45 Mon Sep 17 00:00:00 2001 From: Doug Tangren Date: Fri, 6 Dec 2019 00:23:33 -0500 Subject: 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 --- .github/workflows/main.yml | 96 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 .github/workflows/main.yml (limited to '.github/workflows/main.yml') 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 "" > 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 -- cgit v1.2.3