mirror of
https://github.com/hashicorp/vault.git
synced 2025-11-12 22:31:39 +01:00
* [VAULT-39424] pipeline(close-origin-pr): add support for closing the origin of copied PRs
When we copy a community contributed Pull Request to Enterprise the
source PR is effectively orphaned, leaving the original PR still
opened, the author unsure of what state the copied PR is in, and any
issues associated with it open.
When the copied PR is closed we ought to close the origin PR if it's
still open, and any other issues that might be associated with either
the origin PR or the copied PR.
We can also add comments to both PRs that include links to each other
and the squash commit to make discovery of the work visible to those
with access to both repos. Unfortunately there is no way to know what
the SHA will be when it's synced so we have to rely on the
'Co-Authored-By:' trailers in commit message.
There are some challenges to this:
- The automation should only execute when copied PRs are closed
- How to determine the origin PR from only the copied PR
- How to determine the PR's linked issues (which the v3 REST API does not expose)
We solved them by:
- Requiring the PR HEAD ref to start with `copy/`
- Encoding the origin PR information in the PR HEAD ref.
e.g. `copy/hashicorp/vault/31580/ryan/VAULT-39424-test-ce`
- Using the V4 GraphQL API to determine "closed issue references"
The result is a new `pipeline` CLI command that can close the origin PR,
all of the issues, and write status comments on each PR with links to
everything to establish omnidirectional linking in the Github UI.
```bash
pipeline github close origin-pull-request 9903
```
* fix feedback
---------
Signed-off-by: Ryan Cragun <me@ryan.ec>
Co-authored-by: Ryan Cragun <me@ryan.ec>
78 lines
3.3 KiB
Modula-2
78 lines
3.3 KiB
Modula-2
module github.com/hashicorp/vault/tools/pipeline
|
|
|
|
go 1.24.0
|
|
|
|
require (
|
|
github.com/Masterminds/semver v1.5.0
|
|
github.com/avast/retry-go/v4 v4.6.1
|
|
github.com/google/go-github/v74 v74.0.0
|
|
github.com/hashicorp/hcl/v2 v2.24.0
|
|
github.com/hashicorp/releases-api v0.2.3
|
|
github.com/jedib0t/go-pretty/v6 v6.6.8
|
|
github.com/shurcooL/githubv4 v0.0.0-20240727222349-48295856cce7
|
|
github.com/spf13/cobra v1.9.1
|
|
github.com/stretchr/testify v1.10.0
|
|
github.com/veqryn/slog-context v0.8.0
|
|
github.com/zclconf/go-cty v1.16.4
|
|
golang.org/x/oauth2 v0.31.0
|
|
)
|
|
|
|
require (
|
|
github.com/agext/levenshtein v1.2.3 // indirect
|
|
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
|
|
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
|
|
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
|
github.com/docker/go-units v0.5.0 // indirect
|
|
github.com/fatih/color v1.18.0 // indirect
|
|
github.com/go-logr/logr v1.4.3 // indirect
|
|
github.com/go-logr/stdr v1.2.2 // indirect
|
|
github.com/go-openapi/analysis v0.23.0 // indirect
|
|
github.com/go-openapi/errors v0.22.2 // indirect
|
|
github.com/go-openapi/jsonpointer v0.21.2 // indirect
|
|
github.com/go-openapi/jsonreference v0.21.0 // indirect
|
|
github.com/go-openapi/loads v0.22.0 // indirect
|
|
github.com/go-openapi/runtime v0.28.0 // indirect
|
|
github.com/go-openapi/spec v0.21.0 // indirect
|
|
github.com/go-openapi/strfmt v0.23.0 // indirect
|
|
github.com/go-openapi/swag v0.23.1 // indirect
|
|
github.com/go-openapi/validate v0.24.0 // indirect
|
|
github.com/google/go-cmp v0.7.0 // indirect
|
|
github.com/google/go-querystring v1.1.0 // indirect
|
|
github.com/google/uuid v1.6.0 // indirect
|
|
github.com/hashicorp/go-hclog v1.6.3 // indirect
|
|
github.com/hashicorp/go-uuid v1.0.3 // indirect
|
|
github.com/hashicorp/go-version v1.7.0 // indirect
|
|
github.com/imdario/mergo v0.3.16 // indirect
|
|
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
|
github.com/jessevdk/go-flags v1.6.1 // indirect
|
|
github.com/josharian/intern v1.0.0 // indirect
|
|
github.com/mailru/easyjson v0.9.0 // indirect
|
|
github.com/mattn/go-colorable v0.1.14 // indirect
|
|
github.com/mattn/go-isatty v0.0.20 // indirect
|
|
github.com/mattn/go-runewidth v0.0.16 // indirect
|
|
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
|
|
github.com/mitchellh/hashstructure v1.1.0 // indirect
|
|
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
|
github.com/mitchellh/pointerstructure v1.2.1 // indirect
|
|
github.com/oklog/ulid v1.3.1 // indirect
|
|
github.com/oklog/ulid/v2 v2.1.1 // indirect
|
|
github.com/opentracing/opentracing-go v1.2.0 // indirect
|
|
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
|
|
github.com/rivo/uniseg v0.4.7 // indirect
|
|
github.com/shurcooL/graphql v0.0.0-20230722043721-ed46e5a46466 // indirect
|
|
github.com/spf13/pflag v1.0.7 // indirect
|
|
go.mongodb.org/mongo-driver v1.17.4 // indirect
|
|
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
|
|
go.opentelemetry.io/otel v1.37.0 // indirect
|
|
go.opentelemetry.io/otel/metric v1.37.0 // indirect
|
|
go.opentelemetry.io/otel/trace v1.37.0 // indirect
|
|
golang.org/x/mod v0.27.0 // indirect
|
|
golang.org/x/net v0.43.0 // indirect
|
|
golang.org/x/sync v0.16.0 // indirect
|
|
golang.org/x/sys v0.35.0 // indirect
|
|
golang.org/x/text v0.28.0 // indirect
|
|
golang.org/x/tools v0.36.0 // indirect
|
|
google.golang.org/protobuf v1.36.8 // indirect
|
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
|
)
|