Skip to content

Create Prod Region Issues From Stage #3

Create Prod Region Issues From Stage

Create Prod Region Issues From Stage #3

name: Create Prod Region Issues From Stage
on:
workflow_dispatch:
inputs:
stage_issue_number:
description: "Stage issue number to copy from"
required: true
region:
description: "Optional: specific region (e.g. us-east-1). Leave empty for all regions."
required: false
jobs:
create-prod-issues:
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- name: Create prod issues
uses: actions/github-script@v7
with:
script: |
const regions = [
"CA-MON",
"AU-SYD",
"BR-SAO",
"CA-TOR",
"JP-OSA",
"JP-TOK",
"US-EAST",
"US-SOUTH",
"IN-CHE",
"EU-GB",
"EU-ES",
"EU-DE",
"EU-FR2"
];
const stageIssueNumber = context.payload.inputs.stage_issue_number;
const inputRegion = context.payload.inputs.region;
const { data: stageIssue } = await github.rest.issues.get({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: stageIssueNumber
});
const baseBody = stageIssue.body || "";
const baseTitle = stageIssue.title.replace(/STAGE/i, "");
const regionsToCreate =
inputRegion && inputRegion.trim() !== ""
? [inputRegion.trim()]
: regions;
for (const region of regionsToCreate) {
await github.rest.issues.create({
owner: context.repo.owner,
repo: context.repo.repo,
title: `${baseTitle} ${region}`,
body: `${baseBody}\n\nRegion: ${region}\nCloned from #${stageIssueNumber}`,
labels: ["deployment", "prod"]
});
}
console.log(`Created ${regionsToCreate.length} issue(s).`);