diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..a94e3ca3 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,41 @@ +name: Release workflow + +on: + workflow_dispatch: + +env: + RUST_VERSION: rust:1.70-buster + +jobs: + + build-and-push: + runs-on: ubuntu-latest + environment: release-recover-id-object + steps: + - name: Check out the repo + uses: actions/checkout@v4 + with: + submodules: recursive + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Log in to DockerHub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_TOKEN }} + - name: Extract Cargo package version + id: cargo_version + run: | + cd recover-id-object + VERSION=$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[0].version') + echo "Extracted version is $VERSION" + echo "::set-output name=version::$VERSION" + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + file: recover-id-object/scripts/Dockerfile + push: true + build-args: | + build_image=${{ env.RUST_VERSION }} + tags: concordium/recover-id-object:${{ steps.cargo_version.outputs.version }} diff --git a/recover-id-object/.dockerignore b/recover-id-object/.dockerignore new file mode 100644 index 00000000..770240e7 --- /dev/null +++ b/recover-id-object/.dockerignore @@ -0,0 +1,7 @@ +# Assumes docker context is repository root, i.e. ../ relative to this file. +* +!deps/concordium-rust-sdk +deps/concordium-rust-sdk/target +!recover-id-object/* +recover-id-object/target +recover-id-object/scripts diff --git a/recover-id-object/Cargo.lock b/recover-id-object/Cargo.lock index 0a126555..2a34495f 100644 --- a/recover-id-object/Cargo.lock +++ b/recover-id-object/Cargo.lock @@ -761,9 +761,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.3" +version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" +checksum = "fc5d6b04b3fd0ba9926f945895de7d806260a2d7431ba82e7edaecb043c4c6b8" dependencies = [ "darling_core", "darling_macro", @@ -771,9 +771,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.3" +version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" +checksum = "04e48a959bcd5c761246f5d090ebc2fbf7b9cd527a492b07a67510c108f1e7e3" dependencies = [ "fnv", "ident_case", @@ -785,9 +785,9 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.3" +version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +checksum = "1d1545d67a2149e1d93b7e5c7752dce5a7426eb5d1357ddcfd89336b94444f77" dependencies = [ "darling_core", "quote", @@ -796,10 +796,11 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.8" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ + "powerfmt", "serde", ] @@ -1604,6 +1605,12 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-integer" version = "0.1.45" @@ -1856,6 +1863,12 @@ dependencies = [ "universal-hash", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -2416,9 +2429,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.3.0" +version = "3.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ca3b16a3d82c4088f343b7480a93550b3eabe1a358569c2dfe38bbcead07237" +checksum = "15d167997bd841ec232f5b2b8e0e26606df2e7caa4c31b95ea9ca52b200bd270" dependencies = [ "base64 0.21.4", "chrono", @@ -2426,6 +2439,7 @@ dependencies = [ "indexmap 1.9.3", "indexmap 2.0.2", "serde", + "serde_derive", "serde_json", "serde_with_macros", "time", @@ -2433,9 +2447,9 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.3.0" +version = "3.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e6be15c453eb305019bfa438b1593c731f36a289a7853f7707ee29e870b3b3c" +checksum = "865f9743393e638991566a8b7a479043c2c8da94a33e0a31f18214c9cae0a64d" dependencies = [ "darling", "proc-macro2", @@ -2605,12 +2619,14 @@ dependencies = [ [[package]] name = "time" -version = "0.3.29" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "426f806f4089c493dcac0d24c29c01e2c38baf8e30f1b716ee37e83d200b18fe" +checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" dependencies = [ "deranged", "itoa", + "num-conv", + "powerfmt", "serde", "time-core", "time-macros", @@ -2624,10 +2640,11 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" +checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" dependencies = [ + "num-conv", "time-core", ] diff --git a/recover-id-object/scripts/Dockerfile b/recover-id-object/scripts/Dockerfile new file mode 100644 index 00000000..3d741fc5 --- /dev/null +++ b/recover-id-object/scripts/Dockerfile @@ -0,0 +1,24 @@ +ARG build_image=rust:1.70-buster +ARG base_image=debian:buster-slim +FROM ${build_image} AS build + +WORKDIR /usr/app/recover-id-object + +COPY recover-id-object . +COPY deps /usr/app/deps +RUN cargo build --release --locked + +FROM ${base_image} + +WORKDIR /usr/app + +COPY --from=build /usr/app/recover-id-object/target/release/recover-id-object ./recover-id-object + +RUN apt-get update && \ + apt-get -y install \ + ca-certificates \ + && rm -rf /var/lib/apt/lists/* + +RUN chmod +x recover-id-object + +ENTRYPOINT ["./recover-id-object"]