Skip to content

feat!: migrate CI secrets to 1Password via load-secrets-action - #107

Merged
square360-george merged 3 commits into
mainfrom
feat/1password-v4
Jun 15, 2026
Merged

feat!: migrate CI secrets to 1Password via load-secrets-action#107
square360-george merged 3 commits into
mainfrom
feat/1password-v4

Conversation

@square360-george

@square360-george square360-george commented Jun 15, 2026

Copy link
Copy Markdown
Member

Summary

Migrates all Square360 shared GitHub Actions workflows from individual GitHub org secrets to 1Password's load-secrets-action v2.

  • All 8 reusable workflows updated to a single OP_SERVICE_ACCOUNT_TOKEN secret
  • Each job loads its own credentials via Configure + Load step pair (op://s360-cicd/... URIs)
  • Sub-workflow calls forward OP_SERVICE_ACCOUNT_TOKEN explicitly
  • All ${{ secrets.X }} references replaced with ${{ env.X }}

Validated end-to-end on budgetlab PR #68 (feat/1password-betaYBL-404) — all jobs green including Pantheon deploy, ClickUp comment, and Slack notification.

Breaking change

Callers must now pass a single OP_SERVICE_ACCOUNT_TOKEN secret instead of the previous 9 individual secrets. Existing callers passing the old secrets will silently ignore the extras, but the secrets will no longer be loaded from GitHub — update all caller workflows to pass OP_SERVICE_ACCOUNT_TOKEN.

Test plan

  • Beta tested on budgetlab (v4.0.0-beta.3) — run 27583245663 all jobs green
  • 1Password Configure + Load steps verified working
  • ClickUp and Slack notifications confirmed

🤖 Generated with Claude Code
BREAKING CHANGE: moved secrets to 1Password

Replace per-workflow GitHub secrets with a single OP_SERVICE_ACCOUNT_TOKEN.
All credentials (Pantheon, Slack, GitHub PAT) now resolve at runtime from
the s360-cicd 1Password vault using op:// URIs. Each job loads only the
secrets it needs.

BREAKING CHANGE: callers must remove PANTHEON_SSH_KEY, PANTHEON_MACHINE_TOKEN,
CI_GH_TOKEN, and SLACK_BOT_TOKEN from their secrets: blocks and pass
OP_SERVICE_ACCOUNT_TOKEN instead.

Co-Authored-By: Claude
Replace PANTHEON_SSH_KEY, PANTHEON_MACHINE_TOKEN, SLACK_BOT_TOKEN,
CLICKUP_API_TOKEN, and CLICKUP_TEAM_ID with OP_SERVICE_ACCOUNT_TOKEN.
Each job loads only the secrets it needs from the s360-cicd vault.

Co-Authored-By: Claude
All specialized multidev reusable workflows (pr, rc, epic) and the
security-scan and VRT workflows now accept a single OP_SERVICE_ACCOUNT_TOKEN
instead of individual GitHub secrets. Each job loads its own secrets from
the s360-cicd vault via 1password/load-secrets-action at runtime.

Co-Authored-By: Claude
Copilot AI review requested due to automatic review settings June 15, 2026 23:47
@square360-george
square360-george merged commit 724a5c4 into main Jun 15, 2026
1 check passed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR migrates the repository’s reusable GitHub Actions workflows away from multiple GitHub org/repo secrets and onto 1Password load-secrets-action@v2, standardizing callers on a single OP_SERVICE_ACCOUNT_TOKEN secret and switching secret consumption from ${{ secrets.* }} to ${{ env.* }}.

Changes:

  • Replaces per-workflow secret lists with a single required OP_SERVICE_ACCOUNT_TOKEN across the reusable workflows.
  • Adds 1Password “Configure + Load secrets” step pairs and exports needed credentials to the job environment.
  • Updates downstream workflow calls to explicitly forward OP_SERVICE_ACCOUNT_TOKEN and updates token usage sites to read from env.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
.github/workflows/reusable-semantic-release.yml Loads CI_GH_TOKEN from 1Password and uses it via ${{ env.CI_GH_TOKEN }}.
.github/workflows/reusable-pantheon-vrt.yml Loads Pantheon/AWS/ClickUp/Slack credentials from 1Password and switches usage to env.*.
.github/workflows/reusable-pantheon-security-scan.yml Loads Pantheon/AWS/ClickUp/Slack credentials from 1Password and switches usage to env.*.
.github/workflows/reusable-pantheon-deploy-rc-multidev.yml Loads Pantheon secrets from 1Password and forwards OP_SERVICE_ACCOUNT_TOKEN to sub-workflows.
.github/workflows/reusable-pantheon-deploy-pr-multidev.yml Loads Pantheon/ClickUp secrets from 1Password and forwards OP_SERVICE_ACCOUNT_TOKEN to sub-workflows.
.github/workflows/reusable-pantheon-deploy-epic-multidev.yml Loads Pantheon/ClickUp secrets from 1Password and forwards OP_SERVICE_ACCOUNT_TOKEN to sub-workflows.
.github/workflows/reusable-pantheon-deploy-dev.yml Loads Pantheon/Slack secrets from 1Password and forwards OP_SERVICE_ACCOUNT_TOKEN to semantic-release.
.github/workflows/reusable-deploy-multidev.yml Loads Pantheon/ClickUp/Slack secrets from 1Password and switches usage to env.* (but introduces YAML issues in steps: indentation).

Comment on lines 44 to 48
steps:
- uses: actions/checkout@v6
with:
# Use shallow clone to let pantheon action handle unshallowing
fetch-depth: 1
Comment on lines 301 to 317
steps:
- name: Configure 1Password
uses: 1password/load-secrets-action/configure@v2
with:
service-account-token: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }}

- name: Load secrets
uses: 1password/load-secrets-action@v2
with:
export-env: true
env:
SLACK_BOT_TOKEN: op://s360-cicd/slack/bot-token

- name: Send Slack notification
env:
SLACK_BOT_TOKEN: ${{ env.SLACK_BOT_TOKEN }}
run: |
CLICKUP_API_TOKEN: ${{ env.CLICKUP_API_TOKEN }}
CLICKUP_TEAM_ID: ${{ env.CLICKUP_TEAM_ID }}
run: |
set -x
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants