Skip to content

Auto update AWS LibAwsChecksums package #2057

Auto update AWS LibAwsChecksums package

Auto update AWS LibAwsChecksums package #2057

name: Auto update AWS LibAwsChecksums package
on:
schedule:
- cron: '0 * * * *' # Run every hour
workflow_dispatch:
permissions:
contents: write
pull-requests: write
env:
LIBAWS_REPO: "JuliaServices/LibAwsChecksums.jl"
JLL_REPO: "JuliaBinaryWrappers/aws_checksums_jll.jl"
LIBAWS_PATH: "libaws" # Path for LibAwsX.jl repo
JLL_PATH: "jll" # Path for aws_c_X_jll.jl repo
LIBRARY_NAME: "aws_checksums"
JLL_NAME: "aws_checksums_jll"
jobs:
update-awscal-package:
runs-on: ubuntu-latest
steps:
- name: Checkout LibAwsChecksums repository
uses: actions/checkout@v4
with:
repository: ${{ env.LIBAWS_REPO }}
ref: main
path: ${{ env.LIBAWS_PATH }}
token: ${{ secrets.GITHUB_TOKEN }}
- name: Checkout BinaryWrapper repository
uses: actions/checkout@v4
with:
repository: ${{ env.JLL_REPO }}
ref: main
path: ${{ env.JLL_PATH }}
token: ${{ secrets.GITHUB_TOKEN }}
- name: Parse current JLL version
run: |
RAW_JLL_VERSION=$(grep -oP -m 1 '(?<=version = ")[^"]+' ${{ env.JLL_PATH }}/Project.toml)
JLL_VERSION=$(echo "$RAW_JLL_VERSION" | sed 's/+[0-9]*//')
echo "JLL_VERSION=${JLL_VERSION}" >> $GITHUB_ENV
- name: Parse Project.toml compat version
run: |
COMPAT_SECTION=$(awk '/^\[compat\]/ {flag=1; next} /^\[/{flag=0} flag' ${{ env.LIBAWS_PATH }}/Project.toml)
PROJECT_VERSION=$(echo "$COMPAT_SECTION" | grep -oP "(?<=${{ env.JLL_NAME }} = \")[^\"]+" | sed 's/^=//')
echo "PROJECT_VERSION=${PROJECT_VERSION}" >> $GITHUB_ENV
- name: Check for version updates
id: check_version
run: |
if [[ "$JLL_VERSION" != "$PROJECT_VERSION" ]]; then
echo "New version found: $JLL_VERSION (was $PROJECT_VERSION)"
echo "update_needed=true" >> $GITHUB_ENV
else
echo "No update needed."
exit 0
fi
- name: Update Project.toml Versions
if: env.update_needed == 'true'
run: |
sed -i "s/${{ env.JLL_NAME }} = \"=$PROJECT_VERSION\"/${{ env.JLL_NAME }} = \"=$JLL_VERSION\"/" ${{ env.LIBAWS_PATH }}/Project.toml
sed -i "s/${{ env.JLL_NAME }} = \"=$PROJECT_VERSION\"/${{ env.JLL_NAME }} = \"=$JLL_VERSION\"/" ${{ env.LIBAWS_PATH }}/gen/Project.toml
CURRENT_LIBAWS_VERSION=$(grep -oP -m 1 '(?<=version = ")[^"]+' ${{ env.LIBAWS_PATH }}/Project.toml)
PATCH=$(echo $CURRENT_LIBAWS_VERSION | awk -F. '{print $3+1}')
NEW_LIBAWS_VERSION=$(echo $CURRENT_LIBAWS_VERSION | awk -F. '{print $1"."$2"."'"$PATCH"'}')
sed -i "s/version = \"$CURRENT_LIBAWS_VERSION\"/version = \"$NEW_LIBAWS_VERSION\"/" ${{ env.LIBAWS_PATH }}/Project.toml
- uses: julia-actions/cache@v2
- name: Run the generator
if: env.update_needed == 'true'
run: |
cd ${{ env.LIBAWS_PATH }}
./gen/generate.sh
- name: Check for Changes in Bindings
if: env.update_needed == 'true'
id: check_bindings
run: |
cd ${{ env.LIBAWS_PATH }}
if git diff --quiet; then
echo "No bindings changes detected."
echo "bindings_changed=false" >> $GITHUB_ENV
else
echo "Bindings changed."
echo "bindings_changed=true" >> $GITHUB_ENV
fi
- name: Commit and Open PR
if: env.bindings_changed == 'true'
uses: peter-evans/create-pull-request@v6
with:
path: ${{ env.LIBAWS_PATH }}
branch: update-${{ env.JLL_NAME }}-${{ env.JLL_VERSION }}
commit-message: "Update ${{ env.JLL_NAME }} to version ${{ env.JLL_VERSION }}"
title: "Update ${{ env.JLL_NAME }} to version ${{ env.JLL_VERSION }}"
body: |
This PR updates the JLL dependency and regenerates bindings automatically.
- Updated **${{ env.JLL_NAME }}** to version **${{ env.JLL_VERSION }}**
- Updated **${{ env.LIBAWS_REPO }}** version number
- **Bindings regeneration:**
- ${{ env.bindings_changed == 'true' && '✅ Updated bindings' || '⚠️ No bindings changes detected' }}
reviewers: quinnj, Octogonapus
token: ${{ secrets.ORG_PAT }}