From a41ef5996e0c309a02c94980fffabadd81e21f5b Mon Sep 17 00:00:00 2001 From: Chip Senkbeil Date: Sat, 19 Nov 2022 22:59:17 -0600 Subject: [PATCH] Bump version to 0.20.0-alpha.1 and add more targets for release --- .github/workflows/release.yml | 110 ++++++++++++++++++++++++++-------- Cargo.lock | 8 +-- Cargo.toml | 6 +- distant-core/Cargo.toml | 4 +- distant-net/Cargo.toml | 2 +- distant-ssh2/Cargo.toml | 4 +- 6 files changed, 96 insertions(+), 38 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 81b5a7e..7150c0b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -183,7 +183,7 @@ jobs: run: | sudo apt update sudo apt install -y gcc-arm-linux-gnueabihf binutils-arm-linux-gnueabihf - - name: Build binary (GNU aarch64) + - name: Build binary (GNU arm-v7) run: | cargo build --release --all-features --target ${{ env.ARMV7_GNU_ARCH }} ls -l ./${{ env.ARMV7_GNU_DIR }} @@ -199,30 +199,31 @@ jobs: # NOTE: For musl, we only support ssh2 and not libssh for the time being due to some # build issue with libssh-rs-sys not finding the symbol ENGINE_cleanup in libcrypto - linux_musl: - name: "Build release on Linux (musl)" + linux_musl_x86: + name: "Build release on Linux (musl x86)" runs-on: ubuntu-latest - container: - image: alpine:3.14 if: startsWith(github.ref, 'refs/tags/') env: - UPLOAD_NAME: linux64-musl + UPLOAD_NAME: linux64-musl-x86 X86_MUSL_ARCH: x86_64-unknown-linux-musl X86_MUSL_DIR: target/x86_64-unknown-linux-musl/release BUILD_BIN: distant - X86_MUSL_REL_BIN: distant-linux64-musl + X86_MUSL_REL_BIN: distant-linux64-musl-x86 steps: - uses: actions/checkout@v2 - - name: Install base dependencies - run: | - apk add --update --no-cache build-base libc6-compat curl perl - - name: Install Rust (MUSL) + - name: Install Rust (MUSL x86) + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + target: ${{ env.X86_MUSL_ARCH }} + override: true + - name: Install musl tools run: | - curl https://sh.rustup.rs -sSf | sh -s -- -y --profile minimal + sudo apt install -y musl-tools - uses: Swatinem/rust-cache@v2 - name: Build binary (MUSL x86_64) run: | - source $HOME/.cargo/env cargo build --release --no-default-features --features ssh2 --target ${{ env.X86_MUSL_ARCH }} ls -l ./${{ env.X86_MUSL_DIR }} strip ./${{ env.X86_MUSL_DIR }}/${{ env.BUILD_BIN }} @@ -235,8 +236,55 @@ jobs: path: | ${{ env.X86_MUSL_REL_BIN }} + # NOTE: For musl, we only support ssh2 and not libssh for the time being due to some + # build issue with libssh-rs-sys not finding the symbol ENGINE_cleanup in libcrypto + linux_musl_aarch64: + name: "Build release on Linux (musl aarch64)" + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags/') + env: + UPLOAD_NAME: linux64-musl-aarch64 + AARCH64_MUSL_ARCH: aarch64-unknown-linux-musl + AARCH64_MUSL_DIR: target/aarch64-unknown-linux-musl/release + BUILD_BIN: distant + AARCH64_MUSL_REL_BIN: distant-linux64-musl-aarch64 + steps: + - uses: actions/checkout@v2 + - name: Install Rust (MUSL aarch64) + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + target: ${{ env.AARCH64_MUSL_ARCH }} + override: true + - name: Install musl tools + run: | + sudo apt install -y musl-tools gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu + - name: Install cross + env: + LINK: https://github.com/cross-rs/cross/releases/download + CROSS_VERSION: 0.2.4 + CROSS_FILE: cross-x86_64-unknown-linux-musl + run: | + curl -L "$LINK/v$CROSS_VERSION/$CROSS_FILE.tar.gz" | + tar xz -C $HOME/.cargo/bin + - uses: Swatinem/rust-cache@v2 + - name: Build binary (MUSL aarch64) + run: | + cross build --release --no-default-features --features ssh2 --target ${{ env.AARCH64_MUSL_ARCH }} + ls -l ./${{ env.AARCH64_MUSL_DIR }} + aarch64-linux-gnu-strip ./${{ env.AARCH64_MUSL_DIR }}/${{ env.BUILD_BIN }} + mv ./${{ env.AARCH64_MUSL_DIR }}/${{ env.BUILD_BIN }} ./${{ env.AARCH64_MUSL_REL_BIN }} + chmod +x ./${{ env.AARCH64_MUSL_REL_BIN }} + - name: Upload + uses: actions/upload-artifact@v2 + with: + name: ${{ env.UPLOAD_NAME }} + path: | + ${{ env.AARCH64_MUSL_REL_BIN }} + publish: - needs: [macos, windows, linux_gnu_x86, linux_gnu_aarch64, linux_gnu_arm_v7, linux_musl] + needs: [macos, windows, linux_gnu_x86, linux_gnu_aarch64, linux_gnu_arm_v7, linux_musl_x86, linux_musl_aarch64] runs-on: ubuntu-latest if: startsWith(github.ref, 'refs/tags/') permissions: @@ -252,8 +300,10 @@ jobs: LINUX64_GNU_AARCH64_BIN: distant-linux64-gnu-aarch64 LINUX64_GNU_ARMV7: linux64-gnu-arm-v7 LINUX64_GNU_ARMV7_BIN: distant-linux64-gnu-arm-v7 - LINUX64_MUSL: linux64-musl - LINUX64_MUSL_BIN: distant-linux64-musl + LINUX64_MUSL_X86: linux64-musl-x86 + LINUX64_MUSL_X86_BIN: distant-linux64-musl-x86 + LINUX64_MUSL_AARCH64: linux64-musl-aarch64 + LINUX64_MUSL_AARCH64_BIN: distant-linux64-musl-aarch64 steps: - uses: actions/checkout@v2 - uses: actions/download-artifact@v2 @@ -270,23 +320,28 @@ jobs: - name: Generate Linux64 (gnu x86) SHA256 checksums run: | cd ${{ env.LINUX64_GNU_X86 }} - sha256sum ${{ env.LINUX64_GNU_X86_BIN }} > ${{ env.LINUX64_GNU_BIN }}.sha256sum + sha256sum ${{ env.LINUX64_GNU_X86_BIN }} > ${{ env.LINUX64_GNU_X86_BIN }}.sha256sum echo "SHA_LINUX64_GNU_X86_BIN=$(cat ${{ env.LINUX64_GNU_X86_BIN }}.sha256sum)" >> $GITHUB_ENV - name: Generate Linux64 (gnu aarch64) SHA256 checksums run: | cd ${{ env.LINUX64_GNU_AARCH64 }} - sha256sum ${{ env.LINUX64_GNU_AARCH64_BIN }} > ${{ env.LINUX64_GNU_BIN }}.sha256sum + sha256sum ${{ env.LINUX64_GNU_AARCH64_BIN }} > ${{ env.LINUX64_GNU_AARCH64_BIN }}.sha256sum echo "SHA_LINUX64_GNU_AARCH64_BIN=$(cat ${{ env.LINUX64_GNU_AARCH64_BIN }}.sha256sum)" >> $GITHUB_ENV - name: Generate Linux64 (gnu arm-v7) SHA256 checksums run: | cd ${{ env.LINUX64_GNU_ARMV7 }} - sha256sum ${{ env.LINUX64_GNU_ARMV7_BIN }} > ${{ env.LINUX64_GNU_BIN }}.sha256sum + sha256sum ${{ env.LINUX64_GNU_ARMV7_BIN }} > ${{ env.LINUX64_GNU_ARMV7_BIN }}.sha256sum echo "SHA_LINUX64_GNU_ARMV7_BIN=$(cat ${{ env.LINUX64_GNU_ARMV7_BIN }}.sha256sum)" >> $GITHUB_ENV - - name: Generate Linux64 (musl) SHA256 checksums + - name: Generate Linux64 (musl x86) SHA256 checksums + run: | + cd ${{ env.LINUX64_MUSL_X86 }} + sha256sum ${{ env.LINUX64_MUSL_X86_BIN }} > ${{ env.LINUX64_MUSL_X86_BIN }}.sha256sum + echo "SHA_LINUX64_MUSL_X86_BIN=$(cat ${{ env.LINUX64_MUSL_X86_BIN }}.sha256sum)" >> $GITHUB_ENV + - name: Generate Linux64 (musl aarch64) SHA256 checksums run: | - cd ${{ env.LINUX64_MUSL }} - sha256sum ${{ env.LINUX64_MUSL_BIN }} > ${{ env.LINUX64_MUSL_BIN }}.sha256sum - echo "SHA_LINUX64_MUSL_BIN=$(cat ${{ env.LINUX64_MUSL_BIN }}.sha256sum)" >> $GITHUB_ENV + cd ${{ env.LINUX64_MUSL_AARCH64 }} + sha256sum ${{ env.LINUX64_MUSL_AARCH64_BIN }} > ${{ env.LINUX64_MUSL_AARCH64_BIN }}.sha256sum + echo "SHA_LINUX64_MUSL_AARCH64_BIN=$(cat ${{ env.LINUX64_MUSL_AARCH64_BIN }}.sha256sum)" >> $GITHUB_ENV - name: Determine git tag if: github.event_name == 'push' run: | @@ -322,7 +377,8 @@ jobs: ${{ env.LINUX64_GNU_X86 }}/${{ env.LINUX64_GNU_X86_BIN }} ${{ env.LINUX64_GNU_AARCH64 }}/${{ env.LINUX64_GNU_AARCH64_BIN }} ${{ env.LINUX64_GNU_ARMV7 }}/${{ env.LINUX64_GNU_ARMV7_BIN }} - ${{ env.LINUX64_MUSL }}/${{ env.LINUX64_MUSL_BIN }} + ${{ env.LINUX64_MUSL_X86 }}/${{ env.LINUX64_MUSL_X86_BIN }} + ${{ env.LINUX64_MUSL_AARCH64 }}/${{ env.LINUX64_MUSL_AARCH64_BIN }} **/*.sha256sum body: | ## Release Notes @@ -332,7 +388,8 @@ jobs: - **linux64-gnu-x86** is the x86-64 release on Linux using libc - **linux64-gnu-aarch64** is the aarch64 release on Linux using libc - **linux64-gnu-arm-v7** is the arm-v7 release on Linux using libc (for Raspberry PI) - - **linux64-musl** is the x86-64 release on Linux using musl (static binary, no libc dependency) + - **linux64-musl-x86** is the x86-64 release on Linux using musl (static binary, no libc dependency) + - **linux64-musl-aarch64** is the aarch64 release on Linux using musl (static binary, no libc dependency) - **macos** is a universal binary for Mac OS that supports x86-64 and aarch64 (ARM) platforms - **win64** is the x86-64 release on Windows using MSVC ## SHA256 Checksums @@ -342,5 +399,6 @@ jobs: ${{ env.SHA_LINUX64_GNU_X86_BIN }} ${{ env.SHA_LINUX64_GNU_AARCH64_BIN }} ${{ env.SHA_LINUX64_GNU_ARMV7_BIN }} - ${{ env.SHA_LINUX64_MUSL_BIN }} + ${{ env.SHA_LINUX64_MUSL_X86_BIN }} + ${{ env.SHA_LINUX64_MUSL_AARCH64_BIN }} ``` diff --git a/Cargo.lock b/Cargo.lock index fc45825..fd181a0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -799,7 +799,7 @@ dependencies = [ [[package]] name = "distant" -version = "0.20.0" +version = "0.20.0-alpha.1" dependencies = [ "anyhow", "assert_cmd", @@ -842,7 +842,7 @@ dependencies = [ [[package]] name = "distant-core" -version = "0.20.0" +version = "0.20.0-alpha.1" dependencies = [ "assert_fs", "async-trait", @@ -882,7 +882,7 @@ dependencies = [ [[package]] name = "distant-net" -version = "0.20.0" +version = "0.20.0-alpha.1" dependencies = [ "async-trait", "bytes", @@ -910,7 +910,7 @@ dependencies = [ [[package]] name = "distant-ssh2" -version = "0.20.0" +version = "0.20.0-alpha.1" dependencies = [ "anyhow", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index f51f277..7d5cde7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ name = "distant" description = "Operate on a remote computer through file and process manipulation" categories = ["command-line-utilities"] keywords = ["cli"] -version = "0.20.0" +version = "0.20.0-alpha.1" authors = ["Chip Senkbeil "] edition = "2021" homepage = "https://github.com/chipsenkbeil/distant" @@ -32,7 +32,7 @@ clap_complete = "3.2.3" config = { version = "0.13.2", default-features = false, features = ["toml"] } derive_more = { version = "0.99.17", default-features = false, features = ["display", "from", "error", "is_variant"] } dialoguer = { version = "0.10.2", default-features = false } -distant-core = { version = "=0.20.0", path = "distant-core", features = ["clap", "schemars"] } +distant-core = { version = "=0.20.0-alpha.1", path = "distant-core", features = ["clap", "schemars"] } directories = "4.0.1" flexi_logger = "0.24.1" indoc = "1.0.7" @@ -54,7 +54,7 @@ winsplit = "0.1.0" whoami = "1.2.1" # Optional native SSH functionality -distant-ssh2 = { version = "=0.20.0", path = "distant-ssh2", default-features = false, features = ["serde"], optional = true } +distant-ssh2 = { version = "=0.20.0-alpha.1", path = "distant-ssh2", default-features = false, features = ["serde"], optional = true } [target.'cfg(unix)'.dependencies] fork = "0.1.19" diff --git a/distant-core/Cargo.toml b/distant-core/Cargo.toml index a811650..37f63d3 100644 --- a/distant-core/Cargo.toml +++ b/distant-core/Cargo.toml @@ -3,7 +3,7 @@ name = "distant-core" description = "Core library for distant, enabling operation on a remote computer through file and process manipulation" categories = ["network-programming"] keywords = ["api", "async"] -version = "0.20.0" +version = "0.20.0-alpha.1" authors = ["Chip Senkbeil "] edition = "2021" homepage = "https://github.com/chipsenkbeil/distant" @@ -19,7 +19,7 @@ async-trait = "0.1.57" bitflags = "1.3.2" bytes = "1.2.1" derive_more = { version = "0.99.17", default-features = false, features = ["as_mut", "as_ref", "deref", "deref_mut", "display", "from", "error", "into", "into_iterator", "is_variant", "try_into"] } -distant-net = { version = "=0.20.0", path = "../distant-net" } +distant-net = { version = "=0.20.0-alpha.1", path = "../distant-net" } futures = "0.3.21" grep = "0.2.10" hex = "0.4.3" diff --git a/distant-net/Cargo.toml b/distant-net/Cargo.toml index f696de9..5c66253 100644 --- a/distant-net/Cargo.toml +++ b/distant-net/Cargo.toml @@ -3,7 +3,7 @@ name = "distant-net" description = "Network library for distant, providing implementations to support client/server architecture" categories = ["network-programming"] keywords = ["api", "async"] -version = "0.20.0" +version = "0.20.0-alpha.1" authors = ["Chip Senkbeil "] edition = "2021" homepage = "https://github.com/chipsenkbeil/distant" diff --git a/distant-ssh2/Cargo.toml b/distant-ssh2/Cargo.toml index e1c89c7..e4fdf9c 100644 --- a/distant-ssh2/Cargo.toml +++ b/distant-ssh2/Cargo.toml @@ -2,7 +2,7 @@ name = "distant-ssh2" description = "Library to enable native ssh-2 protocol for use with distant sessions" categories = ["network-programming"] -version = "0.20.0" +version = "0.20.0-alpha.1" authors = ["Chip Senkbeil "] edition = "2021" homepage = "https://github.com/chipsenkbeil/distant" @@ -20,7 +20,7 @@ async-compat = "0.2.1" async-once-cell = "0.4.2" async-trait = "0.1.57" derive_more = { version = "0.99.17", default-features = false, features = ["display", "error"] } -distant-core = { version = "=0.20.0", path = "../distant-core" } +distant-core = { version = "=0.20.0-alpha.1", path = "../distant-core" } futures = "0.3.21" hex = "0.4.3" log = "0.4.17"