From a0f92f5c4a2fc623b7d34a08abb517731ee84c0a Mon Sep 17 00:00:00 2001 From: Jose Quintana Date: Thu, 15 Jun 2023 23:09:10 +0200 Subject: [PATCH] refactor: post release updates ci script [skip ci] --- .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(-) delete mode 100644 .github/workflows/release.checksums.yml create mode 100644 .github/workflows/release.updates.yml delete mode 100755 scripts/ci/generate_checksums.sh create mode 100755 scripts/ci/post_release_updates.sh diff --git a/.github/workflows/release.checksums.yml b/.github/workflows/release.checksums.yml deleted file mode 100644 index 3b6d7cd..0000000 --- a/.github/workflows/release.checksums.yml +++ /dev/null @@ -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 diff --git a/.github/workflows/release.updates.yml b/.github/workflows/release.updates.yml new file mode 100644 index 0000000..6b40840 --- /dev/null +++ b/.github/workflows/release.updates.yml @@ -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 diff --git a/scripts/ci/generate_checksums.sh b/scripts/ci/generate_checksums.sh deleted file mode 100755 index 7e2aa4f..0000000 --- a/scripts/ci/generate_checksums.sh +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/bash - -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//") - -# Download precompiled binary assets -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 - -# Compose checksum file name -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" - -# Replace placeholder occurrences -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!" diff --git a/scripts/ci/post_release_updates.sh b/scripts/ci/post_release_updates.sh new file mode 100755 index 0000000..2d97cde --- /dev/null +++ b/scripts/ci/post_release_updates.sh @@ -0,0 +1,95 @@ +#!/bin/bash + +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//") + +# Download precompiled binary assets +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 + +# Compose checksum file name +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" + +# Replace placeholder occurrences +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!" + +# Update current installer script version +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!" -- libgit2 1.7.2