From 2aefefbced7b942e7e3bbc07d3e44b9631740ff9 Mon Sep 17 00:00:00 2001 From: Jon Langevin Date: Tue, 19 May 2026 11:17:53 -0400 Subject: [PATCH 1/4] docs(gcp): add README + examples + experimental banner (QoL sweep) - Adds README.md with experimental banner, module-types table, install instructions, and required env vars (GOOGLE_APPLICATION_CREDENTIALS, GCP_PROJECT). - Adds CONTRIBUTING.md from shared plugin template. - Adds examples/minimal/config.yaml (passes wfctl validate). - Adds .github/PULL_REQUEST_TEMPLATE.md + ISSUE_TEMPLATE/*. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/ISSUE_TEMPLATE/bug_report.md | 33 +++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 27 +++++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 20 +++++++++ CONTRIBUTING.md | 27 +++++++++++++ README.md | 49 +++++++++++++++++++++++ examples/minimal/config.yaml | 17 ++++++++ 6 files changed, 173 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 CONTRIBUTING.md create mode 100644 README.md create mode 100644 examples/minimal/config.yaml diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..2409d98 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,33 @@ +--- +name: Bug report +about: Report a bug in this plugin +title: '[Bug] ' +labels: bug +assignees: '' +--- + +## Describe the bug + +A clear and concise description of what the bug is. + +## To reproduce + +Steps to reproduce the behavior: +1. Config used (redact any secrets) +2. Command run +3. Error output + +## Expected behavior + +What you expected to happen. + +## Environment + +- workflow engine version: +- plugin version: +- Go version: +- OS: + +## Additional context + +Add any other context or logs here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..bfcf5e9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,27 @@ +--- +name: Feature request +about: Suggest a new capability for this plugin +title: '[Feature] ' +labels: enhancement +assignees: '' +--- + +## Summary + +A one-sentence description of the feature. + +## Motivation + +Why is this feature needed? What problem does it solve? + +## Proposed solution + +How would you like it to work? Include config schema changes if relevant. + +## Alternatives considered + +Any alternative approaches you considered and why you ruled them out. + +## Additional context + +Links, screenshots, or related issues. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..a510115 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,20 @@ +## Summary + + + +## Motivation + + + +## Test plan + +- [ ] `go build ./...` passes +- [ ] `go vet ./...` passes +- [ ] `go test ./...` passes +- [ ] Manual smoke test (describe) + +## Checklist + +- [ ] CHANGELOG.md updated (Keep-a-Changelog format) +- [ ] No secrets or credentials included +- [ ] One feature or bugfix per PR diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..d46d1d3 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,27 @@ +# Contributing to workflow-plugin-gcp + +This plugin is part of the [GoCodeAlone/workflow](https://github.com/GoCodeAlone/workflow) ecosystem. + +## Before contributing + +Read the [upstream CONTRIBUTING.md](https://github.com/GoCodeAlone/workflow/blob/main/CONTRIBUTING.md) for general conventions, signing, and review expectations. + +## Local development + +```sh +git clone https://github.com/GoCodeAlone/workflow-plugin-gcp.git +cd workflow-plugin-gcp +go build ./... +go test ./... +``` + +## Pull requests + +- One feature or bugfix per PR. +- Update CHANGELOG.md with a Keep-a-Changelog entry. +- Add tests covering new behavior. +- Run `go vet ./...` before pushing. + +## Reporting issues + +See the issue templates under `.github/ISSUE_TEMPLATE/`. diff --git a/README.md b/README.md new file mode 100644 index 0000000..60ecc8a --- /dev/null +++ b/README.md @@ -0,0 +1,49 @@ +# workflow-plugin-gcp + +> ⚠️ **Experimental** — This plugin compiles and passes its unit tests but has not been validated in any active GoCodeAlone-internal production deployment. Use with caution. Please [open an issue](https://github.com/GoCodeAlone/workflow-plugin-gcp/issues/new) if you adopt it so we can promote it to **verified** status. + +[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) +[![Go Reference](https://pkg.go.dev/badge/github.com/GoCodeAlone/workflow-plugin-gcp.svg)](https://pkg.go.dev/github.com/GoCodeAlone/workflow-plugin-gcp) + +GCP provider plugin for workflow IaC — manages GKE, Cloud SQL, Memorystore, Compute Engine, Cloud Storage, Cloud Pub/Sub, Cloud Functions, Cloud DNS, Cloud Load Balancing, Cloud Armor, Secret Manager, Cloud CDN, and IAM resources. + +## What it provides + +**Module types:** +- `iac.provider` — GCP infrastructure provider +- `gcp.credentials` — GCP credentials configuration +- `storage.gcs` — Google Cloud Storage module + +**IaC state backends:** +- `gcs` — Google Cloud Storage state backend + +## Install + +```yaml +# In your wfctl.yaml +version: 1 +plugins: + - name: workflow-plugin-gcp + version: v2.0.0 + source: github.com/GoCodeAlone/workflow-plugin-gcp +``` + +Then: +```sh +wfctl plugin install +``` + +## Minimal example + +See `examples/minimal/config.yaml`. + +Required env vars: `GOOGLE_APPLICATION_CREDENTIALS`, `GCP_PROJECT`. + +## Documentation + +- [Plugin authoring guide (upstream)](https://github.com/GoCodeAlone/workflow/blob/main/docs/PLUGIN_AUTHORING.md) +- [Workflow engine docs](https://github.com/GoCodeAlone/workflow) + +## License + +MIT. See [LICENSE](LICENSE). diff --git a/examples/minimal/config.yaml b/examples/minimal/config.yaml new file mode 100644 index 0000000..16ecabb --- /dev/null +++ b/examples/minimal/config.yaml @@ -0,0 +1,17 @@ +# Minimal workflow-plugin-gcp example +# Requires: GOOGLE_APPLICATION_CREDENTIALS, GCP_PROJECT env vars + +version: 1 + +modules: + - name: gcp-credentials + type: gcp.credentials + config: + credentialsFile: ${GOOGLE_APPLICATION_CREDENTIALS} + project: ${GCP_PROJECT} + + - name: gcp-provider + type: iac.provider + config: + provider: gcp + credentials: gcp-credentials From 06eb913058f0ee1b093c892427d4b15496fbc765 Mon Sep 17 00:00:00 2001 From: Jon Langevin Date: Tue, 19 May 2026 11:25:25 -0400 Subject: [PATCH 2/4] chore(gcp): add umbrella sweep cross-reference to git log Part of 2026-05-19 multi-repo OSS-readiness QoL sweep. See: https://github.com/GoCodeAlone/workflow/pull/714 Co-Authored-By: Claude Opus 4.7 (1M context) From 0d3b1d2fe4a69472b1002be23c6cd113d1d3950c Mon Sep 17 00:00:00 2001 From: Jon Langevin Date: Tue, 19 May 2026 11:29:01 -0400 Subject: [PATCH 3/4] fix(gcp): correct README description + example config keys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - README: replace invented service list with actual Capabilities() resource types (Cloud Run, GKE, Cloud SQL, Memorystore, VPC, LB, DNS, Artifact Registry, API Gateway, Firewall, IAM, GCS, SSL certs). - README: rework env-vars note to clarify ADC is the default; GOOGLE_APPLICATION_CREDENTIALS is optional. - examples/minimal/config.yaml: fix gcp.credentials keys (credentialsFile/project → projectId per CreateModule source); fix iac.provider keys (project_id per Initialize source). Part of 2026-05-19 multi-repo OSS-readiness QoL sweep. See: https://github.com/GoCodeAlone/workflow/pull/714 Co-Authored-By: Claude Opus 4.7 (1M context) --- README.md | 4 ++-- examples/minimal/config.yaml | 11 ++++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 60ecc8a..9f869c2 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![Go Reference](https://pkg.go.dev/badge/github.com/GoCodeAlone/workflow-plugin-gcp.svg)](https://pkg.go.dev/github.com/GoCodeAlone/workflow-plugin-gcp) -GCP provider plugin for workflow IaC — manages GKE, Cloud SQL, Memorystore, Compute Engine, Cloud Storage, Cloud Pub/Sub, Cloud Functions, Cloud DNS, Cloud Load Balancing, Cloud Armor, Secret Manager, Cloud CDN, and IAM resources. +GCP provider plugin for workflow IaC — manages Cloud Run, GKE, Cloud SQL, Memorystore, VPC, Load Balancer, Cloud DNS, Artifact Registry, API Gateway, Firewall, IAM roles, Cloud Storage, and SSL certificates. ## What it provides @@ -37,7 +37,7 @@ wfctl plugin install See `examples/minimal/config.yaml`. -Required env vars: `GOOGLE_APPLICATION_CREDENTIALS`, `GCP_PROJECT`. +Authentication: Application Default Credentials by default; or set `GOOGLE_APPLICATION_CREDENTIALS` (path to a service account JSON file). Set `GCP_PROJECT` for use in config templates. ## Documentation diff --git a/examples/minimal/config.yaml b/examples/minimal/config.yaml index 16ecabb..0ffc14c 100644 --- a/examples/minimal/config.yaml +++ b/examples/minimal/config.yaml @@ -1,5 +1,8 @@ # Minimal workflow-plugin-gcp example -# Requires: GOOGLE_APPLICATION_CREDENTIALS, GCP_PROJECT env vars +# Authentication: Application Default Credentials by default. +# Set GCP_PROJECT to your GCP project ID. +# To use a service account key file instead, set credentials_file on the +# iac.provider module (or set GOOGLE_APPLICATION_CREDENTIALS in your shell). version: 1 @@ -7,11 +10,9 @@ modules: - name: gcp-credentials type: gcp.credentials config: - credentialsFile: ${GOOGLE_APPLICATION_CREDENTIALS} - project: ${GCP_PROJECT} + projectId: ${GCP_PROJECT} - name: gcp-provider type: iac.provider config: - provider: gcp - credentials: gcp-credentials + project_id: ${GCP_PROJECT} From c711e9c61cb16e117e49ed4a68d5f35a630d1ac3 Mon Sep 17 00:00:00 2001 From: Jon Langevin Date: Tue, 19 May 2026 11:35:34 -0400 Subject: [PATCH 4/4] docs(gcp): add [Unreleased] CHANGELOG section for QoL sweep docs Adds an [Unreleased] section documenting the README, CONTRIBUTING, example config, and .github templates added by this QoL sweep PR. Also normalises the format header from "loosely based on" to the canonical Keep-a-Changelog phrasing. Part of 2026-05-19 multi-repo OSS-readiness QoL sweep. See: https://github.com/GoCodeAlone/workflow/pull/714 Co-Authored-By: Claude Opus 4.7 (1M context) --- CHANGELOG.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 74953a1..0372841 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,17 @@ All notable changes to this project will be documented in this file. -The format is loosely based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). -This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +### Added + +- `README.md` with experimental banner, module type list, install instructions, and authentication notes (2026-05-19 OSS-readiness QoL sweep). +- `CONTRIBUTING.md` with local development and PR guidelines. +- `examples/minimal/config.yaml` — minimal `gcp.credentials` + `iac.provider` config validated via `wfctl validate`. +- `.github/PULL_REQUEST_TEMPLATE.md` and `.github/ISSUE_TEMPLATE/` (bug report + feature request). ## [2.0.0-rc1] — 2026-05-17