{"id":21820570,"url":"https://github.com/sue445/terraform-version-updater","last_synced_at":"2026-02-11T07:19:49.607Z","repository":{"id":245555001,"uuid":"817766752","full_name":"sue445/terraform-version-updater","owner":"sue445","description":"Automatically update .terraform-version","archived":false,"fork":false,"pushed_at":"2025-03-12T06:42:59.000Z","size":83,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-12T07:29:20.699Z","etag":null,"topics":["terraform","tfenv"],"latest_commit_sha":null,"homepage":"https://pkg.go.dev/github.com/sue445/terraform-version-updater","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sue445.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-20T11:54:43.000Z","updated_at":"2025-03-12T06:43:03.000Z","dependencies_parsed_at":"2024-11-16T02:20:59.682Z","dependency_job_id":"e34c3d8e-4a13-48b6-9b7d-dd849d36f149","html_url":"https://github.com/sue445/terraform-version-updater","commit_stats":null,"previous_names":["sue445/terraform-version-updater"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sue445%2Fterraform-version-updater","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sue445%2Fterraform-version-updater/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sue445%2Fterraform-version-updater/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sue445%2Fterraform-version-updater/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sue445","download_url":"https://codeload.github.com/sue445/terraform-version-updater/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244787014,"owners_count":20510039,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["terraform","tfenv"],"created_at":"2024-11-27T16:37:45.289Z","updated_at":"2026-02-11T07:19:49.552Z","avatar_url":"https://github.com/sue445.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# terraform-version-updater\nAutomatically update [`.terraform-version`](https://github.com/tfutils/tfenv)\n\n[![Latest Version](https://img.shields.io/github/v/release/sue445/terraform-version-updater)](https://github.com/sue445/terraform-version-updater/releases)\n[![test](https://github.com/sue445/terraform-version-updater/actions/workflows/test.yml/badge.svg)](https://github.com/sue445/terraform-version-updater/actions/workflows/test.yml)\n[![Coverage Status](https://coveralls.io/repos/github/sue445/terraform-version-updater/badge.svg)](https://coveralls.io/github/sue445/terraform-version-updater)\n[![Go Report Card](https://goreportcard.com/badge/github.com/sue445/terraform-version-updater)](https://goreportcard.com/report/github.com/sue445/terraform-version-updater)\n[![Go Reference](https://pkg.go.dev/badge/github.com/sue445/terraform-version-updater.svg)](https://pkg.go.dev/github.com/sue445/terraform-version-updater)\n\n## Install\nDownload latest binary from https://github.com/sue445/terraform-version-updater/releases\n\n## Build\n```bash\ngo install github.com/sue445/terraform-version-updater/cmd/terraform-version-updater@latest\n```\n\n## Example\n```bash\ncd /path/to/terraform-repo\n\n# Update terraform to latest version\nterraform-version-updater\n\n# Update terraform to latest version (dry-run)\nterraform-version-updater --dry-run\n\n# Update terraform to specified version\nterraform-version-updater --target 1.8.5\n\n# Update terraform to latest version with specified .terraform-version file\nterraform-version-updater --file /path/to/.terraform-version\n\n# Show terraform-version-updater's version\nterraform-version-updater --version\n```\n\n## Usage\n```bash\n$ terraform-version-updater --help\nUsage of terraform-version-updater:\n  -d, --dry-run         Whether dry-run\n  -f, --file string     Path to .terraform-version file (default \".terraform-version\")\n  -h, --help            Whether show help\n  -t, --target string   Version to be updated (default \"latest\")\n  -v, --version         Whether showing version\n```\n\n## vs [tfupdate](https://github.com/minamijoyo/tfupdate)\n* _terraform-version-updater_ supports `.terraform-version`\n* _tfupdate_ supports `required_version` in `*.tf`\n\n## GitHub Actions Example\nPut the following yaml to your repository (e.g. `.github/workflows/terraform-version-updater.yml`)\n\ne.g.\n\n```yml\nname: Upgrade Terraform to latest version\n\non:\n  schedule:\n    - cron: \"0 0 1 * *\" # Run monthly\n  workflow_dispatch: # Run manually\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Get latest release info\n        id: get_latest_release\n        uses: octokit/request-action@v2.x\n        with:\n          route: GET /repos/sue445/terraform-version-updater/releases/latest\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Add LATEST_VERSION to GITHUB_ENV\n        run: echo \"LATEST_VERSION=${{ fromJson(steps.get_latest_release.outputs.data).tag_name }}\" \u003e\u003e $GITHUB_ENV\n\n      - name: Download and install terraform-version-updater\n        run: |\n          wget https://github.com/sue445/terraform-version-updater/releases/download/${LATEST_VERSION}/terraform-version-updater_Linux_x86_64.tar.gz\n          tar -zxvf terraform-version-updater_Linux_x86_64.tar.gz\n          mv terraform-version-updater /usr/local/bin\n        working-directory: /tmp\n\n      - name: Add BEFORE_TERRAFORM_VERSION to GITHUB_ENV\n        run: echo \"BEFORE_TERRAFORM_VERSION=$(cat .terraform-version)\" \u003e\u003e $GITHUB_ENV\n\n      - name: Run terraform-version-updater\n        run: terraform-version-updater\n\n      - name: Add AFTER_TERRAFORM_VERSION to GITHUB_ENV\n        run: echo \"AFTER_TERRAFORM_VERSION=$(cat .terraform-version)\" \u003e\u003e $GITHUB_ENV\n\n      - name: Create Terraform version up PullRequest\n        uses: peter-evans/create-pull-request@v6\n        with:\n          token:          ${{ secrets.GITHUB_TOKEN }}\n          title:          \"Bump Terraform from ${{ env.BEFORE_TERRAFORM_VERSION }} to ${{ env.AFTER_TERRAFORM_VERSION }}\"\n          commit-message: \"Bump Terraform from ${{ env.BEFORE_TERRAFORM_VERSION }} to ${{ env.AFTER_TERRAFORM_VERSION }}\"\n          labels:         \"terraform-version-updater\"\n          branch:         \"terraform-version-updater/terraform_${{ env.AFTER_TERRAFORM_VERSION }}\"\n          body: |\n            Bumps [Terraform](https://github.com/hashicorp/terraform) from ${{ env.BEFORE_TERRAFORM_VERSION }} to ${{ env.AFTER_TERRAFORM_VERSION }}\n\n            * Release: https://github.com/hashicorp/terraform/releases/tag/v${{ env.AFTER_TERRAFORM_VERSION }}\n            * See full diff in [compare view](https://github.com/hashicorp/terraform/compare/v${{ env.BEFORE_TERRAFORM_VERSION }}...v${{ env.AFTER_TERRAFORM_VERSION }})\n```\n\nWhen using this workflow, it is recommended to use `.terraform-version` in `hashicorp/setup-terraform` as follows\n\ne.g.\n\n```yml\n- name: Add TERRAFORM_VERSION to GITHUB_ENV\n  run: echo \"TERRAFORM_VERSION=$(cat .terraform-version)\" \u003e\u003e $GITHUB_ENV\n\n- uses: hashicorp/setup-terraform@v3\n  with:\n    terraform_version: ${{ env.TERRAFORM_VERSION }}\n```\n\n### Known problem\nGitHub Actions don't allow recursive builds.\n\nSo a Pull Request created using `secrets.GITHUB_TOKEN` will not execute build.\n\nc.f. https://docs.github.com/en/actions/security-guides/automatic-token-authentication#using-the-github_token-in-a-workflow\n\nTherefore, the use of App Token by [`actions/create-github-app-token`](https://github.com/marketplace/actions/create-github-app-token) is **strongly recommended**.\n\ne.g.\n\n```yml\n- uses: actions/create-github-app-token@v1\n  id: app-token\n  with:\n    app-id: ${{ secrets.APP_ID }}\n    private-key: ${{ secrets.PRIVATE_KEY }}\n\n- name: Create Terraform version up PullRequest\n  uses: peter-evans/create-pull-request@v6\n  with:\n    # Use steps.app-token.outputs.token instead of secrets.GITHUB_TOKEN\n    token: ${{ steps.app-token.outputs.token }}\n```\n\nApp permissions required to create a Pull Request are as follows\n\n* Contents: Read and write\n* Metadata: Read-only\n* Pull requests: Read and write\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsue445%2Fterraform-version-updater","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsue445%2Fterraform-version-updater","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsue445%2Fterraform-version-updater/lists"}