diff --git a/.github/workflows/update-jib-base-image.yml b/.github/workflows/update-jib-base-image.yml new file mode 100644 index 0000000..5665734 --- /dev/null +++ b/.github/workflows/update-jib-base-image.yml @@ -0,0 +1,68 @@ +name: Auto-Update Jib Base Image + +on: + workflow_dispatch: + schedule: + - cron: "0 0 * * 5" # Every Friday at Midnight + +jobs: + update_build_gradle: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install GitHub CLI + run: | + sudo apt-get update + sudo apt-get install gh + + - name: Run bash script + run: | + # Extract current version from JShellAPI build.gradle + gradle_file="JShellAPI/build.gradle" + current_version=$(grep -oP "(?<=from\.image\s=\s'eclipse-temurin:)\d+" $gradle_file) + + if [ -z "$current_version" ]; then + echo "Failed to extract version from $gradle_file \"from.image\"" + exit 1 + fi + + # Fetch the latest eclipse-temurin image + latest_version=$(curl -s "https://hub.docker.com/v2/repositories/library/eclipse-temurin/tags/?page_size=100" | \ + jq -r '[.results[].name | select(test("^[0-9]+"))] | map(capture("^(?[0-9]+)")) | max_by(.major | tonumber) | .major') + + # Check if a new version is available + if [ "$latest_version" -le "$current_version" ]; then + echo "No new versions available" + exit 1 + fi + + # Update the build.gradle with the new version + sed -i "s/eclipse-temurin:$current_version/eclipse-temurin:$latest_version/" $gradle_file + + echo "Updated eclipse-temurin version from $current_version to $latest_version" + + - name: Commit changes + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + + # Create a new branch + branch_name="update-eclipse-temurin-$latest_version" + git checkout -b "$branch_name" + + # Add and commit the changes + git add JShellAPI/build.gradle + git commit -m "Update eclipse-temurin version to $latest_version" + + # Push the new branch to the remote repository + git push origin "$branch_name" + + - name: Create a pull request + run: | + gh pr create --title "Update eclipse-temurin version to $latest_version" \ + --body "This PR updates the eclipse-temurin version in the JShellAPI build.gradle file from $current_version to $latest_version." \ + --head "$branch_name" \ + --base "main"