refactor: simplify ci scripts
Diff
.cirrus.yml | 2 +-
.github/workflows/devel.docker.yml | 4 +-
.github/workflows/devel.yml | 4 +-
.github/workflows/release.yml | 4 +-
ci/cargo.sh | 63 +---------------------------------------
ci/get_latest_release.sh | 18 +-----------
ci/install-tools.sh | 36 +----------------------
ci/upload_release_file.sh | 41 +-------------------------
scripts/ci/cargo.sh | 63 +++++++++++++++++++++++++++++++++++++++-
scripts/ci/get_latest_release.sh | 18 +++++++++++-
scripts/ci/install_tools.sh | 36 ++++++++++++++++++++++-
scripts/ci/upload_release_file.sh | 41 +++++++++++++++++++++++++-
12 files changed, 165 insertions(+), 165 deletions(-)
@@ -75,4 +75,4 @@ task:
cp {README.md,LICENSE-APACHE,LICENSE-MIT} "$staging/"
tar czf "$staging.tar.gz" "$staging"
upload_script: |
./ci/upload_release_file.sh
./scripts/ci/upload_release_file.sh
@@ -8,7 +8,7 @@ on:
- trying
paths:
- docker/**/Dockerfile
- ci/**/*.sh
- scripts/ci/**/*.sh
env:
DOCKER_IMAGE: localhost:5000/github.com/static-web-server/static-web-server
@@ -78,7 +78,7 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
ci/get_latest_release.sh
scripts/ci/get_latest_release.sh
cat /tmp/version >> $GITHUB_ENV
cat /tmp/version
echo "SERVER_DOCKERFILE=./docker/alpine/Dockerfile" >> $GITHUB_ENV
@@ -144,7 +144,7 @@ jobs:
- name: Install Linux/BSD tools
if: ${{ !contains(matrix.os, 'windows') }}
run: ci/install-tools.sh --target=${{ matrix.target }}
run: scripts/ci/install_tools.sh --target=${{ matrix.target }}
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
@@ -157,7 +157,7 @@ jobs:
run: |
if [[ "${{ matrix.build }}" == "linux-android-armv7" ]] || [[ "${{ matrix.build }}" == "linux-android-arm64" ]]; then
echo "CARGO_BIN=ci/cargo.sh" >> $GITHUB_ENV
echo "CARGO_BIN=scripts/ci/cargo.sh" >> $GITHUB_ENV
else
cargo install cross@^0.2
echo "CARGO_BIN=cross" >> $GITHUB_ENV
@@ -146,7 +146,7 @@ jobs:
- name: Install Linux/BSD tools
if: ${{ !contains(matrix.os, 'windows') }}
run: ci/install-tools.sh --target=${{ matrix.target }}
run: scripts/ci/install_tools.sh --target=${{ matrix.target }}
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
@@ -160,7 +160,7 @@ jobs:
if [ "${{ matrix.os }}" = "ubuntu-22.04" ]; then
if [[ "${{ matrix.build }}" == "linux-android-armv7" ]] || [[ "${{ matrix.build }}" == "linux-android-arm64" ]]; then
echo "CARGO_BIN=ci/cargo.sh" >> $GITHUB_ENV
echo "CARGO_BIN=scripts/ci/cargo.sh" >> $GITHUB_ENV
else
cargo install cross@^0.2
echo "CARGO_BIN=cross" >> $GITHUB_ENV
@@ -1,63 +0,0 @@
set -eux -o pipefail
OS_NAME=$(uname -s | tr A-Z a-z)
if [ -n "${ANDROID_HOME-}" ]; then
ndk_version=25.2.9519653
ANDROID_NDK_ROOT=${ANDROID_NDK_ROOT:-${ANDROID_HOME}/ndk/$ndk_version}
fi
if [ -n "${ANDROID_NDK_ROOT-}" ]; then
android_tools=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${OS_NAME}-x86_64/bin
fi
for arg in $*; do
case $arg in
--target=*)
target=${arg#*=}
;;
*)
;;
esac
done
case $target in
aarch64-linux-android)
export CC_aarch64_linux_android=$android_tools/aarch64-linux-android21-clang
export AR_aarch64_linux_android=$android_tools/llvm-ar
export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=$android_tools/aarch64-linux-android21-clang
;;
armv7-linux-androideabi)
export CC_armv7_linux_androideabi=$android_tools/armv7a-linux-androideabi19-clang
export AR_armv7_linux_androideabi=$android_tools/llvm-ar
export CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=$android_tools/armv7a-linux-androideabi19-clang
;;
*)
;;
esac
cargo "$@"
@@ -1,18 +0,0 @@
set -e
echo "Getting latest release number..."
curl \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token $GITHUB_TOKEN" \
"https://api.github.com/repos/static-web-server/static-web-server/releases?per_page=5&page=1" | \
jq -c "[ .[] | select( .tag_name | contains(\"v2.\")) ] | .[0]" | \
jq -r ".tag_name" > /tmp/version
version=$(cat /tmp/version)
echo "SERVER_VERSION=${version#*v}" > /tmp/version
echo "Version saved on '/tmp/version'"
@@ -1,36 +0,0 @@
set -eux -o pipefail
target=$1
case $target in
--target*android*)
ndk_version=25.2.9519653
mkdir -p "${ANDROID_HOME}/licenses"
android_license_file="${ANDROID_HOME}/licenses/android-sdk-license"
accept_android_license=24333f8a63b6825ea9c5514f83c2829b004d1fee
grep --quiet --no-messages "$accept_android_license" "$android_license_file" \
|| echo $accept_android_license >> "$android_license_file"
"${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager" "ndk;$ndk_version"
find -L ${ANDROID_NDK_ROOT:-${ANDROID_HOME}/ndk/$ndk_version} -name libunwind.a \
-execdir sh -c 'echo "INPUT(-lunwind)" > libgcc.a' \;
;;
esac
@@ -1,41 +0,0 @@
set -e
. $HOME/.cargo/env
if [[ "$GITHUB_TOKEN" == "" ]]; then
echo "GitHub access token GITHUB_TOKEN env is not provided!"
exit 1
fi
RETRIES=0
until [ $RETRIES -eq 20 ]
do
echo "Finding the GitHub release associated with '$CIRRUS_TAG' tag..."
CIRRUS_RELEASE=$(curl -sL -H "Authorization: token $GITHUB_TOKEN" -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/$CIRRUS_REPO_FULL_NAME/releases | jq -c "[ .[] | select( .tag_name | contains(\"$CIRRUS_TAG\")) ] | .[0]" | jq -r '.id')
[[ "$CIRRUS_RELEASE" != "null" ]] && break
RETRIES=$((RETRIES+1))
sleep 30
done
if [[ "$CIRRUS_RELEASE" == "null" ]]; then
echo "Can not find the associated GitHub '$CIRRUS_TAG' release!"
exit 1
fi
echo "GitHub release '$CIRRUS_TAG' found. Preparing asset files to upload..."
files_to_upload="static-web-server-$CIRRUS_TAG-$BINARY_ARCH-unknown-freebsd.tar.gz"
echo "Uploading GitHub release asset '$files_to_upload'..."
name=$(basename "$files_to_upload")
url_to_upload="https://uploads.github.com/repos/$CIRRUS_REPO_FULL_NAME/releases/$CIRRUS_RELEASE/assets?name=$name"
curl -LX POST \
--data-binary @$files_to_upload \
--header "Authorization: token $GITHUB_TOKEN" \
--header "Content-Type: application/octet-stream" \
$url_to_upload
echo
echo "GitHub release '$CIRRUS_TAG' assets uploaded successfully."
@@ -0,0 +1,63 @@
set -eux -o pipefail
OS_NAME=$(uname -s | tr A-Z a-z)
if [ -n "${ANDROID_HOME-}" ]; then
ndk_version=25.2.9519653
ANDROID_NDK_ROOT=${ANDROID_NDK_ROOT:-${ANDROID_HOME}/ndk/$ndk_version}
fi
if [ -n "${ANDROID_NDK_ROOT-}" ]; then
android_tools=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${OS_NAME}-x86_64/bin
fi
for arg in $*; do
case $arg in
--target=*)
target=${arg#*=}
;;
*)
;;
esac
done
case $target in
aarch64-linux-android)
export CC_aarch64_linux_android=$android_tools/aarch64-linux-android21-clang
export AR_aarch64_linux_android=$android_tools/llvm-ar
export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=$android_tools/aarch64-linux-android21-clang
;;
armv7-linux-androideabi)
export CC_armv7_linux_androideabi=$android_tools/armv7a-linux-androideabi19-clang
export AR_armv7_linux_androideabi=$android_tools/llvm-ar
export CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=$android_tools/armv7a-linux-androideabi19-clang
;;
*)
;;
esac
cargo "$@"
@@ -0,0 +1,18 @@
set -e
echo "Getting latest release number..."
curl \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token $GITHUB_TOKEN" \
"https://api.github.com/repos/static-web-server/static-web-server/releases?per_page=5&page=1" | \
jq -c "[ .[] | select( .tag_name | contains(\"v2.\")) ] | .[0]" | \
jq -r ".tag_name" > /tmp/version
version=$(cat /tmp/version)
echo "SERVER_VERSION=${version#*v}" > /tmp/version
echo "Version saved on '/tmp/version'"
@@ -0,0 +1,36 @@
set -eux -o pipefail
target=$1
case $target in
--target*android*)
ndk_version=25.2.9519653
mkdir -p "${ANDROID_HOME}/licenses"
android_license_file="${ANDROID_HOME}/licenses/android-sdk-license"
accept_android_license=24333f8a63b6825ea9c5514f83c2829b004d1fee
grep --quiet --no-messages "$accept_android_license" "$android_license_file" \
|| echo $accept_android_license >> "$android_license_file"
"${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager" "ndk;$ndk_version"
find -L ${ANDROID_NDK_ROOT:-${ANDROID_HOME}/ndk/$ndk_version} -name libunwind.a \
-execdir sh -c 'echo "INPUT(-lunwind)" > libgcc.a' \;
;;
esac
@@ -0,0 +1,41 @@
set -e
. $HOME/.cargo/env
if [[ "$GITHUB_TOKEN" == "" ]]; then
echo "GitHub access token GITHUB_TOKEN env is not provided!"
exit 1
fi
RETRIES=0
until [ $RETRIES -eq 20 ]
do
echo "Finding the GitHub release associated with '$CIRRUS_TAG' tag..."
CIRRUS_RELEASE=$(curl -sL -H "Authorization: token $GITHUB_TOKEN" -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/$CIRRUS_REPO_FULL_NAME/releases | jq -c "[ .[] | select( .tag_name | contains(\"$CIRRUS_TAG\")) ] | .[0]" | jq -r '.id')
[[ "$CIRRUS_RELEASE" != "null" ]] && break
RETRIES=$((RETRIES+1))
sleep 30
done
if [[ "$CIRRUS_RELEASE" == "null" ]]; then
echo "Can not find the associated GitHub '$CIRRUS_TAG' release!"
exit 1
fi
echo "GitHub release '$CIRRUS_TAG' found. Preparing asset files to upload..."
files_to_upload="static-web-server-$CIRRUS_TAG-$BINARY_ARCH-unknown-freebsd.tar.gz"
echo "Uploading GitHub release asset '$files_to_upload'..."
name=$(basename "$files_to_upload")
url_to_upload="https://uploads.github.com/repos/$CIRRUS_REPO_FULL_NAME/releases/$CIRRUS_RELEASE/assets?name=$name"
curl -LX POST \
--data-binary @$files_to_upload \
--header "Authorization: token $GITHUB_TOKEN" \
--header "Content-Type: application/octet-stream" \
$url_to_upload
echo
echo "GitHub release '$CIRRUS_TAG' assets uploaded successfully."