refactor: post release updates ci script [skip ci]
Diff
.github/workflows/release.checksums.yml | 27 +----------
.github/workflows/release.updates.yml | 27 ++++++++++-
scripts/ci/generate_checksums.sh | 89 +--------------------------------
scripts/ci/post_release_updates.sh | 95 ++++++++++++++++++++++++++++++++++-
4 files changed, 122 insertions(+), 116 deletions(-)
@@ -1,27 +0,0 @@
name: release-checksums
on:
release:
types:
- published
jobs:
checksum_file:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 1
- name: Prepare
shell: bash
run: |
echo "SERVER_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
echo "version is: ${{ env.SERVER_VERSION }}"
- name: Generate and upload
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
scripts/ci/generate_checksums.sh
@@ -0,0 +1,27 @@
name: release-updates
on:
release:
types:
- published
jobs:
checksum_file:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 1
- name: Prepare
shell: bash
run: |
echo "SERVER_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
echo "version is: ${{ env.SERVER_VERSION }}"
- name: Post release updates
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
scripts/ci/post_release_updates.sh
@@ -1,89 +0,0 @@
set -eux -o pipefail
echo "Generating checksums for $SERVER_VERSION..."
release_json="/tmp/release-$SERVER_VERSION.json"
curl \
-Lo $release_json \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token $GITHUB_TOKEN" \
"https://api.github.com/repos/static-web-server/static-web-server/releases/tags/$SERVER_VERSION"
release_dir=/tmp/release-$SERVER_VERSION
cwd=$(pwd)
rm -rf $release_dir
mkdir -p $release_dir
cd $release_dir
server_version_num=$(echo $SERVER_VERSION | sed "s/v//")
while read -r file_url; do
curl -LO --progress-bar $file_url
done < <(cat $release_json | jq -r ".assets[] | .browser_download_url")
echo "Downloading source code assets..."
curl -Lo static-web-server-$server_version_num.zip --progress-bar \
https://github.com/static-web-server/static-web-server/archive/refs/tags/$SERVER_VERSION.zip
curl -Lo static-web-server-$server_version_num.tar.gz --progress-bar \
https://github.com/static-web-server/static-web-server/archive/refs/tags/$SERVER_VERSION.tar.gz
checksum_file_name="static-web-server-$SERVER_VERSION-SHA256SUM"
rm -rf $checksum_file_name
echo "Calculating and verifying checksum file..."
sha256sum static-web-server-* > $checksum_file_name
sha256sum -c $checksum_file_name
echo "Uploading checksum file to $SERVER_VERSION GitHub release..."
release_id=$(cat $release_json | jq -r ".id")
curl -LX POST \
--data-binary @$checksum_file_name \
--header "Authorization: token $GITHUB_TOKEN" \
--header "Content-Type: application/octet-stream" \
https://uploads.github.com/repos/static-web-server/static-web-server/releases/$release_id/assets?name=$checksum_file_name
echo "Checksum file uploaded successfully!"
echo
echo "Updating $SERVER_VERSION checksums for 'Download and Install' page..."
cd $cwd
release_date=$(date +%Y-%m-%d)
filename_version="static-web-server-$SERVER_VERSION"
filename_version_num="static-web-server-$server_version_num"
sed "s/{{RELEASE_DATE}}/$release_date/g" docs/content/download-and-install.tmpl.md > docs/content/download-and-install.md
while read -r line; do
checksum=$(echo $line | awk -F ' ' '{print $1}')
filename=$(echo $line | awk -F ' ' '{print $2}')
placeholder_checksum=$(echo $filename | sed "s/^$filename_version-//")
sed -i '' "s/{{$placeholder_checksum}}/$checksum/" docs/content/download-and-install.md
if [[ "$placeholder_checksum" = "$filename_version_num.tar.gz" ]]; then
sed -i '' "s/{{SRC_TAR}}/$checksum/" docs/content/download-and-install.md
fi
if [[ "$placeholder_checksum" = "$filename_version_num.zip" ]]; then
sed -i '' "s/{{SRC_ZIP}}/$checksum/" docs/content/download-and-install.md
fi
done < <(cat "$release_dir/$checksum_file_name")
sed -i '' "s/{{RELEASE_VERSION}}/$SERVER_VERSION/g" docs/content/download-and-install.md
sed -i '' "s/{{RELEASE_VERSION_NUM}}/$server_version_num/g" docs/content/download-and-install.md
echo
echo "Committing checksum page updates..."
git config user.name "github-actions"
git config user.email "actions@users.noreply.github.com"
git add docs/content/download-and-install.md
git commit -m "docs: $SERVER_VERSION [skip ci]" || exit 0
git push
echo "Checksums page updated successfully!"
@@ -0,0 +1,95 @@
set -eux -o pipefail
echo "Generating checksums for $SERVER_VERSION..."
release_json="/tmp/release-$SERVER_VERSION.json"
curl \
-Lo $release_json \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token $GITHUB_TOKEN" \
"https://api.github.com/repos/static-web-server/static-web-server/releases/tags/$SERVER_VERSION"
release_dir=/tmp/release-$SERVER_VERSION
cwd=$(pwd)
rm -rf $release_dir
mkdir -p $release_dir
cd $release_dir
server_version_num=$(echo $SERVER_VERSION | sed "s/v//")
while read -r file_url; do
curl -LO --progress-bar $file_url
done < <(cat $release_json | jq -r ".assets[] | .browser_download_url")
echo "Downloading source code assets..."
curl -Lo static-web-server-$server_version_num.zip --progress-bar \
https://github.com/static-web-server/static-web-server/archive/refs/tags/$SERVER_VERSION.zip
curl -Lo static-web-server-$server_version_num.tar.gz --progress-bar \
https://github.com/static-web-server/static-web-server/archive/refs/tags/$SERVER_VERSION.tar.gz
checksum_file_name="static-web-server-$SERVER_VERSION-SHA256SUM"
rm -rf $checksum_file_name
echo "Calculating and verifying checksum file..."
sha256sum static-web-server-* > $checksum_file_name
sha256sum -c $checksum_file_name
echo "Uploading checksum file to $SERVER_VERSION GitHub release..."
release_id=$(cat $release_json | jq -r ".id")
curl -LX POST \
--data-binary @$checksum_file_name \
--header "Authorization: token $GITHUB_TOKEN" \
--header "Content-Type: application/octet-stream" \
https://uploads.github.com/repos/static-web-server/static-web-server/releases/$release_id/assets?name=$checksum_file_name
echo "Checksum file uploaded successfully!"
echo
echo "Updating $SERVER_VERSION checksums for 'Download and Install' page..."
cd $cwd
release_date=$(date +%Y-%m-%d)
filename_version="static-web-server-$SERVER_VERSION"
filename_version_num="static-web-server-$server_version_num"
sed "s/{{RELEASE_DATE}}/$release_date/g" docs/content/download-and-install.tmpl.md > docs/content/download-and-install.md
while read -r line; do
checksum=$(echo $line | awk -F ' ' '{print $1}')
filename=$(echo $line | awk -F ' ' '{print $2}')
placeholder_checksum=$(echo $filename | sed "s/^$filename_version-//")
sed -i '' "s/{{$placeholder_checksum}}/$checksum/" docs/content/download-and-install.md
if [[ "$placeholder_checksum" = "$filename_version_num.tar.gz" ]]; then
sed -i '' "s/{{SRC_TAR}}/$checksum/" docs/content/download-and-install.md
fi
if [[ "$placeholder_checksum" = "$filename_version_num.zip" ]]; then
sed -i '' "s/{{SRC_ZIP}}/$checksum/" docs/content/download-and-install.md
fi
done < <(cat "$release_dir/$checksum_file_name")
sed -i '' "s/{{RELEASE_VERSION}}/$SERVER_VERSION/g" docs/content/download-and-install.md
sed -i '' "s/{{RELEASE_VERSION_NUM}}/$server_version_num/g" docs/content/download-and-install.md
echo "Download and install pages updated!"
sed -i '' "s/version=\".*\"/version=\"$server_version_num\"/g" scripts/installer.sh
echo "Installer script $server_version_num version updated!"
echo
echo "Committing post release page updates..."
git config user.name "github-actions"
git config user.email "actions@users.noreply.github.com"
git add docs/content/download-and-install.md
git add scripts/installer.sh
git commit -m "chore: release $SERVER_VERSION updates [skip ci]" || exit 0
git push
echo "All changes after release were done successfully!"