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 ++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 2 + README.md | 2 +- src/builder.rs | 2 +- 4 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 .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 diff --git a/Cargo.toml b/Cargo.toml index f763d64..8288557 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,6 +18,8 @@ coveralls = { repository = "softprops/shipflit" } maintenance = { status = "actively-developed" } [dependencies] +log = "0.4" +mime = "0.3" base64 = "0.11" byteorder = "1.3" bytes = "0.4" diff --git a/README.md b/README.md index d343459..ca85c94 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # shiplift -[![Build Status](https://travis-ci.org/softprops/shiplift.svg)](https://travis-ci.org/softprops/shiplift) [![crates.io](http://meritbadge.herokuapp.com/shiplift)](https://crates.io/crates/shiplift) [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) [![Released API docs](https://docs.rs/shiplift/badge.svg)](http://docs.rs/shiplift) [![Master API docs](https://img.shields.io/badge/docs-master-green.svg)](https://softprops.github.io/shiplift) +[![GitHub Actions](https://github.com/softprops/shiplift/workflows/Main/badge.svg)](https://github.com/softprops/shiplift/actions) [![Build Status](https://travis-ci.org/softprops/shiplift.svg)](https://travis-ci.org/softprops/shiplift) [![crates.io](http://meritbadge.herokuapp.com/shiplift)](https://crates.io/crates/shiplift) [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) [![Released API docs](https://docs.rs/shiplift/badge.svg)](http://docs.rs/shiplift) [![Master API docs](https://img.shields.io/badge/docs-master-green.svg)](https://softprops.github.io/shiplift) > a rust interface for maneuvering [docker](https://www.docker.com/) containers diff --git a/src/builder.rs b/src/builder.rs index bf7381f..35fccb9 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -676,7 +676,7 @@ impl ContainerOptionsBuilder { // Replicate the port bindings over to the exposed ports config let mut exposed_ports: HashMap = HashMap::new(); let empty_config: HashMap = HashMap::new(); - for (key, _) in &port_bindings { + for key in port_bindings.keys() { exposed_ports.insert(key.to_string(), json!(empty_config)); } -- cgit v1.2.3