From 459615e8288b8b24bd1bd39c4e3f244a7cac76ca Mon Sep 17 00:00:00 2001 From: folex <0xdxdy@gmail.com> Date: Sat, 16 Jan 2021 21:55:34 +0300 Subject: [PATCH] CI: fix release versions calculation (#58) --- .github/workflows/publish_interpreter.yml | 20 +++++++++---- .github/workflows/publish_interpreter_dev.yml | 6 ++-- Cargo.lock | 28 +++++++++++++++---- crates/air-interpreter-wasm/Cargo.lock | 4 +-- 4 files changed, 42 insertions(+), 16 deletions(-) diff --git a/.github/workflows/publish_interpreter.yml b/.github/workflows/publish_interpreter.yml index 88735d72..d746961d 100644 --- a/.github/workflows/publish_interpreter.yml +++ b/.github/workflows/publish_interpreter.yml @@ -28,7 +28,7 @@ jobs: ~/.cargo/git ~/.cargo/bin target - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + key: ${{ runner.os }}-cargo-v1-${{ hashFiles('**/Cargo.lock') }} - name: Install Rust toolchain with wasm32-unknown-unknown uses: actions-rs/toolchain@v1 with: @@ -61,24 +61,32 @@ jobs: yarn global add semver PATH="$(yarn global bin):$PATH" + # JQ version regex pattern + PAT="\\\\d+.\\\\d+.\\\\d+" + + STEPPER_CARGO_TOML="stepper/Cargo.toml" CARGO_TOML="crates/air-interpreter-wasm/Cargo.toml" # get package name from Cargo.toml RS_PKG_NAME="$(toml get "$CARGO_TOML" package.name | tr -d \")" JS_PKG_NAME="@fluencelabs/aquamarine-stepper" # get version from Cargo.toml + STEPPER_RUST_VERSION="$(toml get "$STEPPER_CARGO_TOML" package.version | tr -d \")" LOCAL_RUST_VERSION="$(toml get "$CARGO_TOML" package.version | tr -d \")" # get & increment version from NPM - JS_VERSION="$(yarn info --silent "$JS_PKG_NAME" version || true)" + JS_VERSIONS=$(yarn info --silent "$JS_PKG_NAME" versions | tr \' \" | jq -r ".[] | select(test(\"$PAT\"))" || true) + JS_VERSION="$(semver -p $JS_VERSIONS | tail -n1)" NEXT_JS_VERSION="$(semver --increment patch "$JS_VERSION" || true)" # get & increment version from crates.io - RS_VERSION="$((cargo show --json "$RS_PKG_NAME" | jq -r .crate.max_version) 2>/dev/null || true)" - NEXT_RS_VERSION="$(semver --increment patch "$RS_VERSION" || true)" + CRATE_VERSIONS=$(cargo show --json "$RS_PKG_NAME") + CRATE_VERSIONS_FILTERED=$(echo $CRATE_VERSIONS | jq -r ".versions[] | .num | select(test(\"$PAT\"))") + MAX_RS_VERSION="$(semver -p $CRATE_VERSIONS_FILTERED | tail -n1 || true)" + NEXT_RS_VERSION="$(semver --increment patch "$MAX_RS_VERSION" || true)" # take the highest version - MAX_VERSION="$(semver "$NEXT_JS_VERSION" "$NEXT_RS_VERSION" "$LOCAL_RUST_VERSION" | tail -n1)" + MAX_VERSION="$(semver "$NEXT_JS_VERSION" "$NEXT_RS_VERSION" "$LOCAL_RUST_VERSION" "$STEPPER_RUST_VERSION" | tail -n1)" echo "FINAL_VERSION=$MAX_VERSION" | tee -a $GITHUB_ENV echo "JS_PKG_NAME=$JS_PKG_NAME" | tee -a $GITHUB_ENV @@ -188,7 +196,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ env.FINAL_VERSION }} - release_name: Fluence Network ${{ env.FINAL_VERSION }} + release_name: AIR interpreter ${{ env.FINAL_VERSION }} body: | - [${{ env.FINAL_VERSION }} @ NPM registry](https://www.npmjs.com/package/${{ env.JS_PKG_NAME }}/v/${{ env.FINAL_VERSION }}) - [${{ env.FINAL_VERSION }} @ crates.io](https://crates.io/crates/${{ env.PKG_NAME }}/${{ env.FINAL_VERSION }}) diff --git a/.github/workflows/publish_interpreter_dev.yml b/.github/workflows/publish_interpreter_dev.yml index ddfe76e5..6c3f57bd 100644 --- a/.github/workflows/publish_interpreter_dev.yml +++ b/.github/workflows/publish_interpreter_dev.yml @@ -74,6 +74,8 @@ jobs: # sanitize branch name so it can be used as a semver suffix (replace [^0-9a-zA-Z-] with hyphen) SANITIZED_BRANCH="$(echo -n "${{ env.BRANCH_NAME }}" | tr -C '[:alnum:]-' -)" + # JQ Version regex pattern + PAT="\\\\d+.\\\\d+.\\\\d+-$SANITIZED_BRANCH.\\\\d+" # get package name from Cargo.toml PKG_NAME="$(toml get "$CARGO_TOML" package.name | tr -d \")" @@ -83,7 +85,7 @@ jobs: # take all versions from npm and replace single quotes with double quotes NPM_VERSIONS=$(yarn info --silent "$JS_PKG_NAME" versions 2>/dev/null | tr \' \") # take only versions that contain branch name - NPM_VERSIONS_FILTERED=$(echo $NPM_VERSIONS | jq -r ".[] | select(contains(\"$SANITIZED_BRANCH\"))") + NPM_VERSIONS_FILTERED=$(echo $NPM_VERSIONS | jq -r ".[] | select(test(\"$PAT\"))") # flatten into a single line NPM_VERSIONS_FLATTENED=$(echo $NPM_VERSIONS_FILTERED | awk '{print}' ORS=' ') # sort versions according to semver, take highest (last) @@ -93,7 +95,7 @@ jobs: ### CRATES.IO CRATE_VERSIONS=$(cargo show --json "$PKG_NAME") - CRATE_VERSIONS_FILTERED=$(echo $CRATE_VERSIONS | jq -r ".versions[] | .num | select(contains(\"$SANITIZED_BRANCH\"))") + CRATE_VERSIONS_FILTERED=$(echo $CRATE_VERSIONS | jq -r ".versions[] | .num | select(test(\"$PAT\"))") CRATE_VERSIONS_FLATTENED=$(echo $CRATE_VERSIONS_FILTERED | awk '{print}' ORS=' ') LAST_CRATE_VERSION="$(semver -p $(echo $CRATE_VERSIONS_FLATTENED) | tail -n1 || true)" PRERELEASE_CRATE_VERSION="$(semver --increment prerelease --preid "$SANITIZED_BRANCH" "${LAST_CRATE_VERSION}" || true)" diff --git a/Cargo.lock b/Cargo.lock index a6d5c796..9ad43c79 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "aquamarine" -version = "0.2.3" +version = "0.3.0" dependencies = [ "fluence", "log", @@ -632,12 +632,13 @@ checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" [[package]] name = "fce" -version = "0.1.29" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "024ac74e329d2446f8a6cde60ca26f6a159cf0d660568a156e3de499bf3011e8" +checksum = "9deb5e4f0e1533694ffbfd3644b8047ae41e8098165cdf5934a60b71f82e30c9" dependencies = [ "boolinator", "fce-utils", + "fce-wit-generator", "fce-wit-interfaces", "fce-wit-parser", "log", @@ -659,6 +660,21 @@ version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7a516882dccba04f0034e288c1aa5f06ce9da2711a7ce984ceebac8117e185e" +[[package]] +name = "fce-wit-generator" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e19c183d232092a59aeaa4f22212699b3da2acf0bcc5329a9de2a7bb7aa9f87" +dependencies = [ + "fce-wit-parser", + "fluence-sdk-wit", + "once_cell", + "serde", + "serde_json", + "walrus", + "wasmer-interface-types-fl", +] + [[package]] name = "fce-wit-interfaces" version = "0.1.29" @@ -717,9 +733,9 @@ dependencies = [ [[package]] name = "fluence-faas" -version = "0.1.29" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f0ec0c180f1c40573283320e422790e62120873c22d8b7b3aa50ea95f011bb8" +checksum = "a74511b8a8fc16e3cb3749631824b90f89cecb742cbbaf4e467a0873e34a5a53" dependencies = [ "cmd_lib", "fce", @@ -1651,7 +1667,7 @@ dependencies = [ [[package]] name = "stepper-lib" -version = "0.2.3" +version = "0.3.0" dependencies = [ "air-parser", "aqua-test-utils", diff --git a/crates/air-interpreter-wasm/Cargo.lock b/crates/air-interpreter-wasm/Cargo.lock index 4ee2d121..844b8a39 100644 --- a/crates/air-interpreter-wasm/Cargo.lock +++ b/crates/air-interpreter-wasm/Cargo.lock @@ -97,7 +97,7 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.118" +version = "1.0.119" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9bdd36f49e35b61d49efd8aa7fc068fd295961fd2286d0b2ee9a4c7a14e99cc3" dependencies = [ @@ -106,7 +106,7 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.118" +version = "1.0.119" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "552954ce79a059ddd5fd68c271592374bd15cab2274970380c000118aeffe1cd" dependencies = [