diff --git a/.github/workflows/update_versions.yaml b/.github/workflows/update_versions.yaml index 16e2cae..dc4650a 100644 --- a/.github/workflows/update_versions.yaml +++ b/.github/workflows/update_versions.yaml @@ -1,6 +1,8 @@ name: Update Versions PR on: + schedule: + - cron: "0 0 * * *" workflow_dispatch: {} permissions: @@ -12,24 +14,18 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - - name: Fetch versions + - name: Mirror versions + id: mirror-versions run: |- - bazel run //scripts:mirror_terraform_releases > terraform/private/versions_new.bzl - - - name: Commit and push update - run: |- - mv terraform/private/versions_new.bzl terraform/private/versions.bzl git config --global user.name "GitHub Actions" git config --global user.email "actions@github.com" - git checkout -b update-terraform-versions - git add terraform/private/versions.bzl - git commit -m "Updated Terraform Versions" - git push origin -u update-terraform-versions + bazel run //scripts:mirror_terraform_releases - name: Create PR + if: steps.mirror-versions.outputs.has_changes run: >- - gh pr create --base main --title 'Update Terraform Versions' --body 'Created by Github action' + gh pr create --base main --fill env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/scripts/mirror_terraform_releases.sh b/scripts/mirror_terraform_releases.sh index e05da03..7d75b77 100755 --- a/scripts/mirror_terraform_releases.sh +++ b/scripts/mirror_terraform_releases.sh @@ -3,6 +3,8 @@ # replace the `./terraform/private/versions.bzl` file. set -Eeuo pipefail +VERSIONS_FILE="$(git rev-parse --show-toplevel)/terraform/private/versions.bzl" + # https://www.hashicorp.com/.well-known/pgp-key.txt hashicorp_pgp_key_file="$1" @@ -68,7 +70,7 @@ for terraform_release_url in "${terraform_release_url_dirs[@]}"; do done -cat < "$VERSIONS_FILE" """ GENERATED by \`bazel run //scripts/mirror_terraform_releases\` Mirror of Terraform Release info. @@ -76,3 +78,23 @@ Mirror of Terraform Release info. TERRAFORM_VERSIONS = $json EOF + +>&2 echo "Wrote $VERSIONS_FILE" + + +if [ -z "$(git status --porcelain "$VERSIONS_FILE")" ]; then + >&2 echo "No new version information generated, exiting" + exit 0 +fi + +date="$(date --utc -I)" + +>&2 echo "New version information generated, committing" +git checkout -b "auto-update-versions-$date" +git add "$VERSIONS_FILE" +git commit -m "Auto updated Terraform versions $date" +git push origin -u "auto-update-versions-$date" + +if [ -n "${GITHUB_OUTPUT:-}" ]; then + echo "has_changes=true" >> "$GITHUB_OUTPUT" +fi