Commit 04ac8ad
[ENG-2673] Add Copybara and publishing pipeline for Terraform provider and module (#3958)
## Summary
- Add Copybara workflows, GoReleaser config, GPG signing, and GitHub
Actions release pipelines to publish the Terraform provider and HCL
module to public repos and registries
- Provision per-repo GitHub Actions secrets (`OP_RO_TOKEN`,
`RELEASE_PAT`) via Terraform, following the existing
`homebrew-overmind`/`actions` pattern
- Public repos
([terraform-provider-overmind](https://github.com/overmindtech/terraform-provider-overmind),
[terraform-overmind-aws-source](https://github.com/overmindtech/terraform-overmind-aws-source))
have been created and seeded with workflow files
## Linear Ticket
- **Ticket**:
[ENG-2673](https://linear.app/overmind/issue/ENG-2673/phase-5-copybara-and-publishing-for-terraform-provider-and-module)
— Phase 5: Copybara and Publishing for Terraform Provider & Module
- **Purpose**: Set up the full automated release pipeline from monorepo
tags to Terraform/OpenTofu registries
- **Plan approval**:
[ENG-2674](https://linear.app/overmind/issue/ENG-2674/approve-plan-phase-5-copybara-and-publishing-for-terraform-provider)
assigned to Lionel Wilson
## Changes
### Copybara (`copy.bara.sky`)
Two new workflows: `terraform-provider` (syncs provider + Go libs with
import rewriting) and `terraform-aws-source-module` (syncs HCL module
with directory flattening).
### Monorepo sync workflows (`.github/workflows/`)
- `terraform-provider-sync.yml` — triggers on `terraform-provider/v*`
tags
- `terraform-aws-source-module-sync.yml` — triggers on
`terraform-aws-source-module/v*` tags
### Provider release files (`aws-source/module/provider/`)
- `.goreleaser.yml` — cross-platform builds, zip archives, SHA256
checksums, GPG signing
- `terraform-registry-manifest.json` — protocol version 6.0
- `.github/workflows/release.yml` — loads GPG key from 1Password, runs
GoReleaser
- `.github/workflows/finalize-copybara-sync.yml` — runs `go mod tidy`,
creates PR
- `.github/workflows/tag-on-merge.yml` — creates version tag on merge
### Module release files (`aws-source/module/terraform/`)
- `.github/workflows/finalize-copybara-sync.yml` — creates PR (no `go
mod tidy`)
- `.github/workflows/tag-on-merge.yml` — creates version tag on merge
### Terraform / secrets
- `deploy/1password.tf` — 4 new `github_actions_secret` resources for
both public repos
- `deploy/variables.tf` — new `terraform_provider_release_pat` and
`terraform_module_release_pat` variables
- `deploy/.env.op`, `deploy/.github/env/op.local.secret`,
`.devcontainer/devcontainer.json` — wire new PAT variables through
1Password and devcontainer
### Provider code
- `aws-source/module/provider/main.go` — `const version` changed to `var
version = "dev"` for GoReleaser ldflags injection
## Before first release
The following manual steps remain (documented in the plan):
1. Create 1Password items: `Terraform Provider Release Github Token`,
`Terraform Module Release Github Token`, `Terraform Provider GPG Key`
2. Register GPG public key at registry.terraform.io/settings/gpg-keys
3. After merge, `terraform apply` provisions the repo secrets
4. Push monorepo tags to trigger first automated release
5. Enroll in Terraform Registry and OpenTofu Registry
Made with [Cursor](https://cursor.com)
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Medium Risk**
> Mostly CI/release automation and secret provisioning changes, but
misconfiguration could leak or break release/tagging flows for the
public Terraform repos.
>
> **Overview**
> Adds end-to-end **Copybara-based publishing pipelines** for the
Terraform provider and AWS source Terraform module, driven by new
tag-triggered GitHub Actions workflows (`terraform-provider/v*`,
`terraform-aws-source-module/v*`) that sync code to public repos on
`copybara/vX.Y.Z` branches.
>
> Introduces release automation in the provider/module repos: Copybara
finalization workflows that open PRs from `copybara/v*`, `tag-on-merge`
workflows that create version tags using a `RELEASE_PAT`, and (for the
provider) a GoReleaser-based release with GPG-signed checksums plus a
Terraform registry manifest; provider `main.go` now uses an
ldflags-injected `version` variable.
>
> Updates `copy.bara.sky` with two new workflows (`terraform-provider`,
`terraform-aws-source-module`) and wires new Terraform-managed GitHub
Actions secrets/inputs (including new PAT variables) through `deploy/`
and the devcontainer to support the public repo automation; ADR index is
updated to include newly accepted ADRs.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
d3a131760eadca87088922bf8eca86de2c1be730. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
GitOrigin-RevId: 800dbd7acd6e954106b6a2f1125fc7526c0b26341 parent 926fb31 commit 04ac8ad
File tree
2 files changed
+136
-0
lines changed- .github/workflows
2 files changed
+136
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
0 commit comments