Auto update AWS LibAwsS3 package #1562
This file contains hidden or 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: Auto update AWS LibAwsS3 package | |
| on: | |
| schedule: | |
| - cron: '0 * * * *' # Run every hour | |
| workflow_dispatch: | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| env: | |
| LIBAWS_REPO: "JuliaServices/LibAwsS3.jl" | |
| JLL_REPO: "JuliaBinaryWrappers/aws_c_s3_jll.jl" | |
| LIBAWS_PATH: "libaws" # Path for LibAwsX.jl repo | |
| JLL_PATH: "jll" # Path for aws_c_X_jll.jl repo | |
| LIBRARY_NAME: "aws_c_s3" | |
| JLL_NAME: "aws_c_s3_jll" | |
| jobs: | |
| update-awss3-package: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout LibAwsS3 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 }} |