ci: Move shell scripts into standalone files

This commit is contained in:
Adam Szkoda 2023-05-23 12:31:54 +02:00 committed by Alexis Sellier
parent 9418a20cae
commit 8c701dc908
No known key found for this signature in database
5 changed files with 113 additions and 82 deletions

29
.github/workflows/build-debug.bash vendored Executable file
View File

@ -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 "$@"

35
.github/workflows/build.bash vendored Executable file
View File

@ -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 "$@"

View File

@ -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 }}

19
.github/workflows/update-latest-symlink.bash vendored Executable file
View File

@ -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 "$@"

22
.github/workflows/upload.bash vendored Executable file
View File

@ -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 "$@"