From 8c701dc908575b622b36620d0c96e08ee552e09a Mon Sep 17 00:00:00 2001 From: Adam Szkoda Date: Tue, 23 May 2023 12:31:54 +0200 Subject: [PATCH] ci: Move shell scripts into standalone files --- .github/workflows/build-debug.bash | 29 +++++++ .github/workflows/build.bash | 35 ++++++++ .github/workflows/release.yml | 90 ++------------------ .github/workflows/update-latest-symlink.bash | 19 +++++ .github/workflows/upload.bash | 22 +++++ 5 files changed, 113 insertions(+), 82 deletions(-) create mode 100755 .github/workflows/build-debug.bash create mode 100755 .github/workflows/build.bash create mode 100755 .github/workflows/update-latest-symlink.bash create mode 100755 .github/workflows/upload.bash diff --git a/.github/workflows/build-debug.bash b/.github/workflows/build-debug.bash new file mode 100755 index 00000000..e9fdf843 --- /dev/null +++ b/.github/workflows/build-debug.bash @@ -0,0 +1,29 @@ +#!/bin/bash + +set -o errexit +set -o nounset +set -o pipefail + +main () { + if [[ $# -ne 1 ]]; then + echo "$#: Wrong number of arguments" + return 1 + fi + + local target=$1 + + rustup target add "$target" + staging="radicle-$target" + mkdir -p "$staging/debug" + + cargo build --target "$target" --bin git-remote-rad + cp target/"$target"/debug/git-remote-rad "$staging"/debug/ + + cargo build --target="$target" --bin rad + cp target/"$target"/debug/rad "$staging"/debug/ + + tar czf "$staging-debug.tar.gz" "$staging"/debug + cp "$staging-debug.tar.gz" "$staging"/debug/ +} + +main "$@" diff --git a/.github/workflows/build.bash b/.github/workflows/build.bash new file mode 100755 index 00000000..e07dc4f9 --- /dev/null +++ b/.github/workflows/build.bash @@ -0,0 +1,35 @@ +#!/bin/bash + +set -o errexit +set -o nounset +set -o pipefail + +main () { + if [[ $# -ne 1 ]]; then + echo "$#: Wrong number of arguments" + return 1 + fi + + local target=$1 + rustup target add "$target" + + local staging="radicle-$target" + mkdir -p "$staging" + + cargo build --target="$target" --package=radicle-httpd --release + cp target/"$target"/release/radicle-httpd "$staging"/ + + cargo build --target="$target" --package=radicle-node --release + cp target/"$target"/release/radicle-node "$staging"/ + + cargo build --target="$target" --bin rad --release + cp target/"$target"/release/rad "$staging"/ + + cargo build --target="$target" --bin git-remote-rad --release + cp target/"$target"/release/git-remote-rad "$staging"/ + + tar czf "$staging.tar.gz" "$staging" + cp "$staging.tar.gz" "$staging"/ +} + +main "$@" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 83a2b815..69f7209c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -36,50 +36,14 @@ jobs: with: image: ${{ matrix.docker_image }} options: ${{ matrix.docker_options }} - run: | - rustup target add ${{ matrix.target }} - staging="radicle-${{ matrix.target }}" - mkdir -p "$staging" - - cargo build --target=${{ matrix.target }} --package=radicle-httpd --release - cp target/${{ matrix.target }}/release/radicle-httpd "$staging"/ - - cargo build --target=${{ matrix.target }} --package=radicle-node --release - cp target/${{ matrix.target }}/release/radicle-node "$staging"/ - - cargo build --target=${{ matrix.target }} --bin rad --release - cp target/${{ matrix.target }}/release/rad "$staging"/ - - cargo build --target=${{ matrix.target }} --bin git-remote-rad --release - cp target/${{ matrix.target }}/release/git-remote-rad "$staging"/ - - tar czf "$staging.tar.gz" "$staging" - cp "$staging.tar.gz" "$staging"/ - chmod --recursive go+r /root/.cargo/registry + run: .github/workflows/build.bash "${{ matrix.target }}" - name: Build the debug binaries uses: addnab/docker-run-action@v3 with: image: ${{ matrix.docker_image }} options: ${{ matrix.docker_options }} - run: | - rustup target add ${{ matrix.target }} - staging="radicle-${{ matrix.target }}" - mkdir -p "$staging/debug" - - cargo build --target ${{ matrix.target }} --bin git-remote-rad - cp target/${{ matrix.target }}/debug/git-remote-rad "$staging"/debug/ - - cargo build --target=${{ matrix.target }} --bin rad - cp target/${{ matrix.target }}/debug/rad "$staging"/debug/ - - tar czf "$staging-debug.tar.gz" "$staging"/debug - cp "$staging-debug.tar.gz" "$staging"/debug/ - - shell: bash - run: | - echo "$SSH_PRIVATE_KEY" >ssh-private-key - chmod go-rwx ssh-private-key - ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ssh-private-key github-actions@files.radicle.xyz mkdir -p "/mnt/radicle/releases/${{ github.sha }}/${{ matrix.target }}/debug" - scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ssh-private-key -r radicle-${{ matrix.target }}/* "github-actions@files.radicle.xyz:/mnt/radicle/releases/${{ github.sha }}/${{ matrix.target }}" + run: .github/workflows/build-debug.bash "${{ matrix.target }}" + - run: .github/workflows/upload.bash "${{ matrix.target }}" "${{ github.sha }}" env: SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} @@ -105,45 +69,10 @@ jobs: key: cargo-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }} - uses: dtolnay/rust-toolchain@1.67 - name: Build the release binaries - run: | - rustup target add ${{ matrix.target }} - staging="radicle-${{ matrix.target }}" - mkdir -p "$staging" - - cargo build --target ${{ matrix.target }} --package=radicle-httpd --release - cp target/${{ matrix.target }}/release/radicle-httpd "$staging"/ - - cargo build --target ${{ matrix.target }} --package=radicle-node --release - cp target/${{ matrix.target }}/release/radicle-node "$staging"/ - - cargo build --target ${{ matrix.target }} --bin rad --release - cp target/${{ matrix.target }}/release/rad "$staging"/ - - cargo build --target ${{ matrix.target }} --bin git-remote-rad --release - cp target/${{ matrix.target }}/release/git-remote-rad "$staging"/ - - tar czf "$staging.tar.gz" "$staging" - cp "$staging.tar.gz" "$staging"/ + run: .github/workflows/build.bash "${{ matrix.target }}" - name: Build the debug binaries - run: | - rustup target add ${{ matrix.target }} - staging="radicle-${{ matrix.target }}" - mkdir -p "$staging/debug" - - cargo build --target ${{ matrix.target }} --bin git-remote-rad - cp target/${{ matrix.target }}/debug/git-remote-rad "$staging"/debug/ - - cargo build --target=${{ matrix.target }} --bin rad - cp target/${{ matrix.target }}/debug/rad "$staging"/debug/ - - tar czf "$staging-debug.tar.gz" "$staging"/debug - cp "$staging-debug.tar.gz" "$staging"/debug/ - - shell: bash - run: | - echo "$SSH_PRIVATE_KEY" >ssh-private-key - chmod go-rwx ssh-private-key - ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ssh-private-key github-actions@files.radicle.xyz mkdir -p "/mnt/radicle/releases/${{ github.sha }}/${{ matrix.target }}/debug" - scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ssh-private-key -r radicle-${{ matrix.target }}/* "github-actions@files.radicle.xyz:/mnt/radicle/releases/${{ github.sha }}/${{ matrix.target }}" + run: .github/workflows/build-debug.bash "${{ matrix.target }}" + - run: .github/workflows/upload.bash "${{ matrix.target }}" "${{ github.sha }}" env: SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} @@ -151,10 +80,7 @@ jobs: needs: [release-linux-binaries, release-macos-binaries] runs-on: ubuntu-20.04 steps: - - shell: bash - run: | - echo "$SSH_PRIVATE_KEY" >ssh-private-key - chmod go-rwx ssh-private-key - ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ssh-private-key github-actions@files.radicle.xyz ln -snf "/mnt/radicle/releases/${{ github.sha }}" "/mnt/radicle/releases/latest" + - uses: actions/checkout@v3 + - run: .github/workflows/update-latest-symlink.bash "${{ github.sha }}" env: SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} diff --git a/.github/workflows/update-latest-symlink.bash b/.github/workflows/update-latest-symlink.bash new file mode 100755 index 00000000..23781adb --- /dev/null +++ b/.github/workflows/update-latest-symlink.bash @@ -0,0 +1,19 @@ +#!/bin/bash + +set -o errexit +set -o nounset +set -o pipefail + +main () { + if [[ $# -ne 1 ]]; then + echo "$#: Wrong number of arguments" + return 1 + fi + + local sha=$1 + echo "$SSH_PRIVATE_KEY" >ssh-private-key + chmod go-rwx ssh-private-key + ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ssh-private-key github-actions@files.radicle.xyz ln -snf "/mnt/radicle/releases/${sha}" "/mnt/radicle/releases/latest" +} + +main "$@" diff --git a/.github/workflows/upload.bash b/.github/workflows/upload.bash new file mode 100755 index 00000000..9f2b0b50 --- /dev/null +++ b/.github/workflows/upload.bash @@ -0,0 +1,22 @@ +#!/bin/bash + +set -o errexit +set -o nounset +set -o pipefail + +main () { + if [[ $# -ne 2 ]]; then + echo "$#: Wrong number of arguments" + return 1 + fi + + local target=$1 + local sha=$2 + + echo "$SSH_PRIVATE_KEY" >ssh-private-key + chmod go-rwx ssh-private-key + ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ssh-private-key github-actions@files.radicle.xyz mkdir -p "/mnt/radicle/releases/$sha/$target/debug" + scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ssh-private-key -r radicle-$target/* "github-actions@files.radicle.xyz:/mnt/radicle/releases/$sha/$target" +} + +main "$@"