11name : " OSDC: Deploy production"
22
3- # Manual rollout for prod. Protected by the `osdc-production` GitHub
4- # environment (configure required reviewers in repo Settings → Environments) —
5- # the prod IAM role additionally trusts only tokens with
6- # `environment:osdc-production` in the sub claim, so IAM enforces the gate too.
3+ # Manual rollout for prod. Protected by per-account GitHub environments:
4+ # - Meta clusters: `osdc-production` environment
5+ # - LF clusters: `osdc-lf-production` environment
6+ # Each environment's IAM role trusts only tokens carrying that environment
7+ # name in the sub claim, so IAM enforces the gate independently.
78#
8- # Default behavior (target = all): sequential rollout.
9- # 1. Deploy arc-cbr-production-uw1 + smoke.
10- # 2. Deploy arc-cbr-production (ue2) + smoke.
11- # 3. Deploy meta-prod-aws-ue1 + smoke.
9+ # Default behavior (target = all): sequential rollout of all clusters.
10+ # Meta: arc-cbr-production-uw1 → arc-cbr-production → meta-prod-aws-ue1
11+ # LF: lf-prod-aws-ue1 → lf-prod-aws-ue2 (runs in parallel with Meta)
12+ #
13+ # Use `all-meta` or `all-lf` to deploy only one account's clusters.
1214#
1315# Picking a specific cluster from the dropdown bypasses the sequencing and
1416# deploys only that one — useful for hotfixes or to recover from a partial
2729 default : all
2830 options :
2931 - all
30- - meta-prod-aws-ue1
32+ - all-meta
33+ - all-lf
3134 - arc-cbr-production-uw1
3235 - arc-cbr-production
36+ - meta-prod-aws-ue1
37+ - lf-prod-aws-ue1
38+ - lf-prod-aws-ue2
3339 taint_nodes :
3440 description : " Taint ARC runner nodes before deploy (graceful refresh)"
3541 required : false
@@ -55,8 +61,10 @@ permissions:
5561 contents : read
5662
5763jobs :
64+ # --- Meta clusters ---
65+
5866 deploy_uw1 :
59- if : ${{ inputs.target == 'all' || inputs.target == 'arc-cbr-production-uw1' }}
67+ if : ${{ inputs.target == 'all' || inputs.target == 'all-meta' || inputs.target == ' arc-cbr-production-uw1' }}
6068 uses : ./.github/workflows/_osdc-deploy.yml
6169 with :
6270 cluster : arc-cbr-production-uw1
7280 if : |
7381 !cancelled() && (
7482 inputs.target == 'arc-cbr-production' ||
75- (inputs.target == 'all' && needs.deploy_uw1.result == 'success')
83+ (( inputs.target == 'all' || inputs.target == 'all-meta') && needs.deploy_uw1.result == 'success')
7684 )
7785 uses : ./.github/workflows/_osdc-deploy.yml
7886 with :
8997 if : |
9098 !cancelled() && (
9199 inputs.target == 'meta-prod-aws-ue1' ||
92- (inputs.target == 'all' && needs.deploy_ue2.result == 'success')
100+ (( inputs.target == 'all' || inputs.target == 'all-meta') && needs.deploy_ue2.result == 'success')
93101 )
94102 uses : ./.github/workflows/_osdc-deploy.yml
95103 with :
@@ -100,3 +108,36 @@ jobs:
100108 skip_lint_test : ${{ inputs.skip_lint_test }}
101109 run_smoke : true
102110 secrets : inherit
111+
112+ # --- LF clusters ---
113+
114+ deploy_lf_ue1 :
115+ if : ${{ inputs.target == 'all' || inputs.target == 'all-lf' || inputs.target == 'lf-prod-aws-ue1' }}
116+ uses : ./.github/workflows/_osdc-deploy.yml
117+ with :
118+ cluster : lf-prod-aws-ue1
119+ environment : osdc-production
120+ aws_role_arn : ${{ secrets.LF_AWS_DEPLOY_ROLE_ARN }}
121+ taint_nodes : ${{ inputs.taint_nodes }}
122+ restart_listeners : ${{ inputs.restart_listeners }}
123+ skip_lint_test : ${{ inputs.skip_lint_test }}
124+ run_smoke : true
125+ secrets : inherit
126+
127+ deploy_lf_ue2 :
128+ needs : deploy_lf_ue1
129+ if : |
130+ !cancelled() && (
131+ inputs.target == 'lf-prod-aws-ue2' ||
132+ ((inputs.target == 'all' || inputs.target == 'all-lf') && needs.deploy_lf_ue1.result == 'success')
133+ )
134+ uses : ./.github/workflows/_osdc-deploy.yml
135+ with :
136+ cluster : lf-prod-aws-ue2
137+ environment : osdc-production
138+ aws_role_arn : ${{ secrets.LF_AWS_DEPLOY_ROLE_ARN }}
139+ taint_nodes : ${{ inputs.taint_nodes }}
140+ restart_listeners : ${{ inputs.restart_listeners }}
141+ skip_lint_test : ${{ inputs.skip_lint_test }}
142+ run_smoke : true
143+ secrets : inherit
0 commit comments