summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDoug Tangren <d.tangren@gmail.com>2019-12-06 00:23:33 -0500
committerGitHub <noreply@github.com>2019-12-06 00:23:33 -0500
commitcf8a06e79079193c89752239b1be7f3b18491f45 (patch)
tree06a7a415e2842280b2044487041af486f3d93367
parent546753dc6d3215429e6f91c80abaa6599de332e5 (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
-rw-r--r--.github/workflows/main.yml96
-rw-r--r--Cargo.toml2
-rw-r--r--README.md2
-rw-r--r--src/builder.rs2
4 files changed, 100 insertions, 2 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
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<String, Value> = HashMap::new();
let empty_config: HashMap<String, Value> = HashMap::new();
- for (key, _) in &port_bindings {
+ for key in port_bindings.keys() {
exposed_ports.insert(key.to_string(), json!(empty_config));
}