Sync and Update AWS Libraries #526
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Sync and Update AWS Libraries | |
on: | |
schedule: | |
- cron: '0 * * * *' # Run every hour | |
workflow_dispatch: | |
jobs: | |
update-library: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
library: ["aws_c_auth","aws_c_cal","aws_c_common","aws_c_compression","aws_c_event_stream","aws_c_http","aws_c_io","aws_c_iot","aws_c_mqtt","aws_c_s3","aws_c_sdkutils","aws_checksums","aws_lc","s2n_tls"] | |
steps: | |
- name: Checkout JuliaPackaging/Yggdrasil repository | |
uses: actions/checkout@v4 | |
with: | |
ref: master | |
repository: JuliaPackaging/Yggdrasil | |
token: ${{ secrets.PAT }} | |
- name: Check latest release version | |
run: | | |
LIBRARY=${{ matrix.library }} | |
if [[ "$LIBRARY" == "s2n_tls" ]]; then | |
OWNER="aws" | |
else | |
OWNER="awslabs" | |
fi | |
REPO="$OWNER/$(echo "$LIBRARY" | tr '_' '-')" # Replace '_' with '-' | |
echo "REPO=$REPO" | |
# Get the tags | |
RELEASES=$(curl --retry 5 -L -H "Authorization: token ${{ secrets.PAT }}" https://api.github.com/repos/${REPO}/git/refs/tags) | |
echo "RELEASES=$RELEASES" | |
# Parse and sort the versions to get the highest version | |
LATEST_VERSION=$(echo $RELEASES | jq -r '.[] | select(.ref | test("refs/tags/v")) | .ref' | sed 's/refs\/tags\/v//' | sort -V | tail -n 1) | |
LATEST_SHA=$(echo $RELEASES | jq -r --arg LATEST_VERSION "refs/tags/v$LATEST_VERSION" '.[] | select(.ref == $LATEST_VERSION) | .object.sha') | |
echo "LATEST_VERSION=${LATEST_VERSION}" >> $GITHUB_ENV | |
echo "LATEST_SHA=$LATEST_SHA" >> $GITHUB_ENV | |
echo "LATEST_VERSION=$LATEST_VERSION, LATEST_SHA=$LATEST_SHA" | |
- name: Parse current version and sha in build_tarballs.jl | |
run: | | |
LIBRARY=${{ matrix.library }} | |
LIBRARY_DIR=$(echo "${LIBRARY:0:1}" | tr '[:lower:]' '[:upper:]')/${LIBRARY} | |
CURRENT_VERSION=$(grep -oP -m 1 '(?<=version = v")[^"]+' $LIBRARY_DIR/build_tarballs.jl | sed 's/^v//') | |
echo "CURRENT_VERSION=${CURRENT_VERSION}" >> $GITHUB_ENV | |
echo "CURRENT_VERSION=${CURRENT_VERSION}" | |
if [[ "$LIBRARY" == "s2n_tls" ]]; then | |
OWNER="aws" | |
else | |
OWNER="awslabs" | |
fi | |
REPO="$OWNER/$(echo "$LIBRARY" | tr '_' '-')" # Replace '_' with '-' | |
CURRENT_SHA=$(grep -oP -m 1 '(?<=GitSource\("https://github.com/'${REPO//\//\\/}'.git", ")[a-f0-9]{40}' $LIBRARY_DIR/build_tarballs.jl) | |
echo "CURRENT_SHA=${CURRENT_SHA}" >> $GITHUB_ENV | |
echo "CURRENT_SHA=${CURRENT_SHA}" | |
- name: Compare versions and update if necessary | |
if: env.LATEST_VERSION != env.CURRENT_VERSION | |
run: | | |
LIBRARY=${{ matrix.library }} | |
LIBRARY_DIR=$(echo "${LIBRARY:0:1}" | tr '[:lower:]' '[:upper:]')/${LIBRARY} | |
if [[ "$LIBRARY" == "s2n_tls" ]]; then | |
OWNER="aws" | |
else | |
OWNER="awslabs" | |
fi | |
REPO="$OWNER/$(echo "$LIBRARY" | tr '_' '-')" # Replace '_' with '-' | |
sed -i "s/version = v\"${CURRENT_VERSION}\"/version = v\"${LATEST_VERSION}\"/" $LIBRARY_DIR/build_tarballs.jl | |
sed -i "s#${CURRENT_SHA}#${LATEST_SHA}#" $LIBRARY_DIR/build_tarballs.jl | |
git config --global user.name 'github-actions' | |
git config --global user.email '[email protected]' | |
git checkout -b update-versions-$LIBRARY-${LATEST_VERSION} | |
git add . | |
git commit -m "[$LIBRARY] Update to ${LATEST_VERSION}" | |
git push -f https://github.com/quinnj2/Yggdrasil update-versions-$LIBRARY-${LATEST_VERSION} | |
- name: Checkout fork | |
uses: actions/checkout@v4 | |
if: env.LATEST_VERSION != env.CURRENT_VERSION | |
with: | |
ref: update-versions-${{ matrix.library }}-${{ env.LATEST_VERSION }} | |
repository: quinnj2/Yggdrasil | |
token: ${{ secrets.PAT }} | |
- name: Create a PR | |
if: env.LATEST_VERSION != env.CURRENT_VERSION | |
env: | |
GH_TOKEN: ${{ secrets.PAT }} | |
run: | | |
gh pr create --title "[${{ matrix.library }}] Update to version ${LATEST_VERSION}" \ | |
--body "This PR updates ${{ matrix.library }} to version ${LATEST_VERSION}. cc: @quinnj @Octogonapus" \ | |
--repo JuliaPackaging/Yggdrasil --base master |