Skip to content

[feature] refactor CI workflow #1

[feature] refactor CI workflow

[feature] refactor CI workflow #1

Workflow file for this run

name: Build and Upload iliad Binary
on:
workflow_dispatch:
push:
branches:
- main
pull_request:
branches:
- main
permissions:
id-token: write
contents: write
pull-requests: write
actions: write
env:
NUM_INTERNAL_BINARIES_TO_KEEP: 50
NUM_PUBLIC_BINARIES_TO_KEEP: 400
jobs:
# Add timestamp
Timestamp:
uses: storyprotocol/gha-workflows/.github/workflows/reusable-timestamp.yml@main
# Build and upload the iliad binary
build_and_push:
needs: Timestamp
runs-on: ubuntu-latest
strategy:
matrix:
platform: [linux-386, linux-amd64, linux-arm, linux-arm64, darwin-amd64, darwin-arm64, windows-amd64, windows-386]
steps:
- name: Checkout code
uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
role-to-assume: arn:aws:iam::478656756051:role/iac-max-role
aws-region: us-west-1
role-session-name: github-actions
# - name: Extract the version
# run: |
# PARAMS_FILE="./lib/buildinfo/buildinfo.go"
# VERSION_MAJOR=$(awk -F= '/VersionMajor/ {gsub(/[^0-9]/, "", $2); printf "%s", $2}' $PARAMS_FILE)
# VERSION_MINOR=$(awk -F= '/VersionMinor/ {gsub(/[^0-9]/, "", $2); printf "%s", $2}' $PARAMS_FILE)
# VERSION_PATCH=$(awk -F= '/VersionPatch/ {gsub(/[^0-9]/, "", $2); printf "%s", $2}' $PARAMS_FILE)
# VERSION_META=$(awk -F\" '/VersionMeta/ {print $2; exit}' $PARAMS_FILE)
# VERSION="$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH"
# if [ "$VERSION_META" != "stable" ]; then
# VERSION+="-${VERSION_META}"
# fi
# echo "Version extracted: $VERSION"
# echo "VERSION=$VERSION" >> $GITHUB_ENV
# - name: Build the iliad binary
# run: |
# IFS="-" read -r GOOS GOARCH <<< "${{ matrix.platform }}"
# bin_name=iliad
# if [ "$GOOS" = "windows" ]; then
# bin_name+='.exe'
# fi
# echo "Building for $GOOS/$GOARCH..."
# cd client
# env GOOS=$GOOS GOARCH=$GOARCH go build -o $bin_name > /dev/null 2>&1
# chmod +x $bin_name
# - name: Upload the iliad binary to S3
# run: |
# export TZ=America/Los_Angeles
# IFS="-" read -r GOOS GOARCH <<< "${{ matrix.platform }}"
# TIMESTAMP=$(date +%Y%m%d%H%M%S)
# HUMAN_READABLE_VERSION=$(date)
# COMMIT_HASH=$(git rev-parse --short HEAD)
# FOLDER_NAME="iliad-${{ matrix.platform }}-${VERSION}-${COMMIT_HASH}"
# ARCHIVE_NAME="${FOLDER_NAME}.tar.gz"
# bin_name=./client/iliad
# if [ "$GOOS" = "windows" ]; then
# bin_name+='.exe'
# fi
# mkdir $FOLDER_NAME
# mv $bin_name $FOLDER_NAME/
# echo "Archiving the iliad binary..."
# tar -czvf $ARCHIVE_NAME $FOLDER_NAME
# if [ $? -ne 0 ]; then
# echo "Failed to create the archive: $ARCHIVE_NAME"
# exit 1
# fi
# aws s3 cp $ARCHIVE_NAME s3://iliad-geth-binaries/iliad-public/$ARCHIVE_NAME --quiet
# if [ "${{ matrix.platform }}" = "linux-amd64" ]; then
# echo "Uploading binary for internal use..."
# aws s3 cp $ARCHIVE_NAME s3://iliad-geth-binaries/iliad/iliad-$TIMESTAMP --quiet
# # Update manifest file
# aws s3 cp s3://iliad-geth-binaries/iliad/manifest.txt manifest.txt --quiet || touch manifest.txt
# echo "$TIMESTAMP" >> manifest.txt
# aws s3 cp manifest.txt s3://iliad-geth-binaries/iliad/manifest.txt --quiet
# fi
# cleanup:
# runs-on: ubuntu-latest
# needs: build_and_push
# steps:
# - name: Configure AWS credentials
# uses: aws-actions/configure-aws-credentials@v1
# with:
# role-to-assume: arn:aws:iam::478656756051:role/iac-max-role
# aws-region: us-west-1
# role-session-name: github-actions
# - name: Cleanup internal binaries
# run: |
# cleanup_s3() {
# PREFIX=$1
# KEEP=$2
# echo "Cleaning up in bucket iliad-geth-binaries with prefix: $PREFIX, keeping latest $KEEP binaries"
# aws s3api list-objects-v2 --bucket iliad-geth-binaries --prefix $PREFIX --query "sort_by(Contents,&LastModified)[*].Key" > all_binaries.json
# # Extract the list of keys, remove the latest $KEEP binaries
# BINARIES_TO_DELETE=$(jq -r ".[0:-${KEEP}][]" all_binaries.json)
# if [ -n "$BINARIES_TO_DELETE" ]; then
# # Delete old binaries
# for key in $BINARIES_TO_DELETE; do
# aws s3 rm s3://iliad-geth-binaries/$key --quiet
# done
# echo "Deleted old binaries: $BINARIES_TO_DELETE"
# else
# echo "No old binaries to delete."
# fi
# }
# # Cleanup internal binaries
# cleanup_s3 "iliad/" "${NUM_INTERNAL_BINARIES_TO_KEEP}"
# # Cleanup public binaries
# cleanup_s3 "iliad-public/" "${NUM_PUBLIC_BINARIES_TO_KEEP}"