-
Notifications
You must be signed in to change notification settings - Fork 17
166 lines (159 loc) · 6.01 KB
/
Copy pathrelease-spec-runner.yml
File metadata and controls
166 lines (159 loc) · 6.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
name: 'Release Runner: Start the Release Process for DEV, QA, STAGING and PROD'
on:
workflow_dispatch:
inputs:
env_to_release:
description: 'List of environments to release the OpenAPI Spec to.'
type: choice
options:
- dev
- qa
- staging
- prod
- dev,qa,staging,prod
- dev,qa,staging
- dev,qa
default: 'dev'
required: false
schedule:
- cron: '0 */2 * * 1-5' # Run every 2 hours from Monday to Friday
permissions:
contents: write
pull-requests: write
issues: write
id-token: write
jobs:
release-preparation:
name: Release Preparation
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10
with:
ref: main
token: ${{secrets.api_bot_pat}}
sparse-checkout: |
.github
# We upload the scripts in .github/scripts/* (defined only in main) so that they can be downloaded and reused
# when releasing in all the branches.
- name: Upload release scripts
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: release-scripts
retention-days: 1
path: .github/scripts/*
release-spec-dev:
name: Release OpenAPI Spec for DEV
needs: release-preparation
if: >-
github.event_name == 'schedule' || contains(inputs.env_to_release, 'dev')
uses: ./.github/workflows/release-spec.yml
secrets:
api_bot_pat: ${{ secrets.API_BOT_PAT }}
jira_api_token: ${{ secrets.JIRA_API_TOKEN }}
bump_token: ${{secrets.BUMP_TOKEN}}
with:
aws_default_region: ${{ vars.AWS_DEFAULT_REGION}}
aws_s3_bucket: ${{ vars.S3_BUCKET_DEV}}
aws_s3_role_to_assume: ${{ vars.AWS_S3_ROLE_TO_ASSUME }}
env: dev
branch: dev
spectral_version: ${{ vars.SPECTRAL_VERSION }}
foascli_version: ${{ vars.FOASCLI_VERSION }}
atlas_admin_v2_doc_id: ${{vars.ATLAS_ADMIN_V2_DOC_ID_DEV }}
release-spec-qa:
name: Release OpenAPI Spec for QA
needs: release-preparation
if: >-
github.event_name == 'schedule' || contains(inputs.env_to_release, 'qa')
uses: ./.github/workflows/release-spec.yml
secrets:
api_bot_pat: ${{ secrets.API_BOT_PAT }}
jira_api_token: ${{ secrets.JIRA_API_TOKEN }}
bump_token: ${{secrets.BUMP_TOKEN}}
with:
aws_default_region: ${{ vars.AWS_DEFAULT_REGION}}
aws_s3_role_to_assume: ${{ vars.AWS_S3_ROLE_TO_ASSUME }}
aws_s3_bucket: ${{ vars.S3_BUCKET_QA}}
env: qa
branch: qa
spectral_version: ${{ vars.SPECTRAL_VERSION }}
foascli_version: ${{ vars.FOASCLI_VERSION }}
atlas_admin_v2_doc_id: ${{vars.ATLAS_ADMIN_V2_DOC_ID_QA }}
release-spec-staging:
name: Release OpenAPI Spec for STAGING
needs: release-preparation
if: >-
github.event_name == 'schedule' || contains(inputs.env_to_release, 'staging')
uses: ./.github/workflows/release-spec.yml
secrets:
api_bot_pat: ${{ secrets.API_BOT_PAT }}
jira_api_token: ${{ secrets.JIRA_API_TOKEN }}
bump_token: ${{secrets.BUMP_TOKEN}}
with:
aws_default_region: ${{ vars.AWS_DEFAULT_REGION}}
aws_s3_role_to_assume: ${{ vars.AWS_S3_ROLE_TO_ASSUME }}
aws_s3_bucket: ${{ vars.S3_BUCKET_STAGING}}
env: stage
branch: staging
spectral_version: ${{ vars.SPECTRAL_VERSION }}
foascli_version: ${{ vars.FOASCLI_VERSION }}
atlas_admin_v2_doc_id: ${{vars.ATLAS_ADMIN_V2_DOC_ID_STAGING }}
release-spec-prod:
name: Release OpenAPI Spec for PROD
needs: release-preparation
if: >-
github.event_name == 'schedule' || contains(inputs.env_to_release, 'prod')
uses: ./.github/workflows/release-spec.yml
secrets:
api_bot_pat: ${{ secrets.API_BOT_PAT }}
postman_api_key: ${{ secrets.POSTMAN_API_KEY }}
workspace_id: ${{ secrets.WORKSPACE_ID }}
jira_api_token: ${{ secrets.JIRA_API_TOKEN }}
bump_token: ${{secrets.BUMP_TOKEN}}
with:
aws_default_region: ${{ vars.AWS_DEFAULT_REGION}}
aws_s3_role_to_assume: ${{ vars.AWS_S3_ROLE_TO_ASSUME }}
aws_s3_bucket: ${{ vars.S3_BUCKET_PROD}}
env: prod
branch: main
spectral_version: ${{ vars.SPECTRAL_VERSION }}
foascli_version: ${{ vars.FOASCLI_VERSION }}
atlas_prod_base_url: ${{ vars.ATLAS_PROD_BASE_URL }}
atlas_admin_v2_doc_id: ${{vars.ATLAS_ADMIN_V2_DOC_ID }}
atlas_admin_v1_doc_id: ${{vars.ATLAS_ADMIN_V1_DOC_ID }}
release-spec-v1-prod:
name: Release OpenAPI Spec V1 (Deprecated) for PROD
if: >-
github.event_name == 'schedule' || contains(inputs.env_to_release, 'prod')
uses: ./.github/workflows/release-spec-v1.yml
secrets:
api_bot_pat: ${{ secrets.API_BOT_PAT }}
mms_deployed_sha_url: ${{ secrets.MMS_DEPLOYED_SHA_URL_PROD }}
jira_api_token: ${{ secrets.JIRA_API_TOKEN }}
with:
aws_default_region: ${{ vars.AWS_DEFAULT_REGION}}
aws_s3_role_to_assume: ${{ vars.AWS_S3_ROLE_TO_ASSUME }}
aws_s3_bucket: ${{ vars.S3_BUCKET_PROD}}
env: prod
branch: main
retry-handler:
needs: [ release-preparation ]
if: ${{ always() && contains(needs.*.result, 'failure') && fromJSON(github.run_attempt) < 3}}
runs-on: ubuntu-latest
steps:
- env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ secrets.api_bot_pat }}
run: gh workflow run retry-handler.yml -F run_id=${{ github.run_id }}
failure-handler:
name: Failure Handler
needs: [release-preparation, retry-handler]
if: ${{ always() && contains(needs.*.result, 'failure') && needs.retry-handler.result == 'skipped' }}
uses: ./.github/workflows/failure-handler.yml
with:
env: ${{ inputs.env_to_release }}
release_name: "OpenAPI Spec Release Preparation"
team_id: ${{ vars.JIRA_TEAM_ID_APIX_PLATFORM }}
secrets:
jira_api_token: ${{ secrets.JIRA_API_TOKEN }}