Skip to content

Commit 2bd9510

Browse files
authored
Migrate additional Github secrets to Azure Vault (#8528)
1 parent 5d5e3dd commit 2bd9510

File tree

6 files changed

+159
-11
lines changed

6 files changed

+159
-11
lines changed

.github/workflows/ci.yml

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,9 @@ jobs:
248248
unit-tests:
249249
name: Unit Tests
250250
runs-on: ubuntu-24.04
251+
permissions:
252+
contents: read
253+
id-token: write
251254
needs: checks
252255
env:
253256
GOPROXY: ${{ needs.checks.outputs.go_proxy }}
@@ -260,6 +263,23 @@ jobs:
260263
with:
261264
version: 'v3.18.6'
262265

266+
- name: Azure login
267+
uses: azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5 # v2.3.0
268+
with:
269+
client-id: ${{ secrets.AZURE_VAULT_CLIENT_ID }}
270+
tenant-id: ${{ secrets.AZURE_VAULT_TENANT_ID }}
271+
subscription-id: ${{ secrets.AZURE_VAULT_SUBSCRIPTION_ID }}
272+
if: ${{ inputs.force || (needs.checks.outputs.binary_cache_hit != 'true' && needs.checks.outputs.forked_workflow != 'true') }}
273+
274+
- name: Setup secrets
275+
id: secrets
276+
run: |
277+
echo "Setting secrets for job"
278+
CODECOV_TOKEN=$(az keyvault secret show --name code-cov --vault-name ${{ secrets.NIC_KEYVAULT_NAME }} --query value -o tsv)
279+
echo "::add-mask::$CODECOV_TOKEN"
280+
echo "CODECOV_TOKEN=$CODECOV_TOKEN" >> $GITHUB_OUTPUT
281+
if: ${{ inputs.force || (needs.checks.outputs.binary_cache_hit != 'true' && needs.checks.outputs.forked_workflow != 'true') }}
282+
263283
- name: Setup Golang Environment
264284
uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0
265285
with:
@@ -284,7 +304,7 @@ jobs:
284304
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
285305
with:
286306
files: ./coverage.txt
287-
token: ${{ secrets.CODECOV_TOKEN }} # required
307+
token: ${{ steps.secrets.outputs.CODECOV_TOKEN }} # required
288308
if: ${{ needs.checks.outputs.binary_cache_hit != 'true' && (inputs.run_tests && inputs.run_tests || true) }}
289309

290310
- name: Run static check

.github/workflows/notifications.yml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ jobs:
2626
permissions:
2727
contents: read
2828
actions: read # for 8398a7/action-slack
29+
id-token: write # for Azure login
2930
steps:
3031
- name: Data
3132
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
@@ -48,6 +49,21 @@ jobs:
4849
commit_message: message_sanitized,
4950
}
5051
52+
- name: Azure login
53+
uses: azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5 # v2.3.0
54+
with:
55+
client-id: ${{ secrets.AZURE_VAULT_CLIENT_ID }}
56+
tenant-id: ${{ secrets.AZURE_VAULT_TENANT_ID }}
57+
subscription-id: ${{ secrets.AZURE_VAULT_SUBSCRIPTION_ID }}
58+
59+
- name: Setup secrets
60+
id: secrets
61+
run: |
62+
echo "Setting secrets for job"
63+
SLACK_WEBHOOK=$(az keyvault secret show --name slack-pipeline-webhook --vault-name ${{ secrets.NIC_KEYVAULT_NAME }} --query value -o tsv)
64+
echo "::add-mask::$SLACK_WEBHOOK"
65+
echo "SLACK_WEBHOOK=$SLACK_WEBHOOK" >> $GITHUB_OUTPUT
66+
5167
- name: Send Notification
5268
uses: 8398a7/action-slack@77eaa4f1c608a7d68b38af4e3f739dcd8cba273e # v3.19.0
5369
with:
@@ -83,4 +99,4 @@ jobs:
8399
}]
84100
}
85101
env:
86-
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
102+
SLACK_WEBHOOK_URL: ${{ steps.secrets.outputs.SLACK_WEBHOOK }}

.github/workflows/oss-release.yml

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,21 @@ jobs:
121121
with:
122122
ref: ${{ inputs.branch }}
123123

124+
- name: Azure login
125+
uses: azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5 # v2.3.0
126+
with:
127+
client-id: ${{ secrets.AZURE_VAULT_CLIENT_ID }}
128+
tenant-id: ${{ secrets.AZURE_VAULT_TENANT_ID }}
129+
subscription-id: ${{ secrets.AZURE_VAULT_SUBSCRIPTION_ID }}
130+
131+
- name: Setup secrets
132+
id: secrets
133+
run: |
134+
echo "Setting secrets for job"
135+
AWS_ROLE_PUBLIC_ECR=$(az keyvault secret show --name aws-public-role --vault-name ${{ secrets.NIC_KEYVAULT_NAME }} --query value -o tsv)
136+
echo "::add-mask::$AWS_ROLE_PUBLIC_ECR"
137+
echo "AWS_ROLE_PUBLIC_ECR=$AWS_ROLE_PUBLIC_ECR" >> $GITHUB_OUTPUT
138+
124139
- name: Authenticate to Google Cloud
125140
id: gcr-auth
126141
uses: google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093 # v3.0.0
@@ -140,7 +155,7 @@ jobs:
140155
uses: aws-actions/configure-aws-credentials@00943011d9042930efac3dcd3a170e4273319bc8 # v5.1.0
141156
with:
142157
aws-region: us-east-1
143-
role-to-assume: ${{ secrets.AWS_ROLE_PUBLIC_ECR }}
158+
role-to-assume: ${{ steps.secrets.outputs.AWS_ROLE_PUBLIC_ECR }}
144159

145160
- name: Login to Public ECR
146161
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
@@ -214,6 +229,26 @@ jobs:
214229
with:
215230
ref: ${{ inputs.branch }}
216231

232+
- name: Azure login
233+
uses: azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5 # v2.3.0
234+
with:
235+
client-id: ${{ secrets.AZURE_VAULT_CLIENT_ID }}
236+
tenant-id: ${{ secrets.AZURE_VAULT_TENANT_ID }}
237+
subscription-id: ${{ secrets.AZURE_VAULT_SUBSCRIPTION_ID }}
238+
239+
- name: Setup secrets
240+
id: secrets
241+
run: |
242+
echo "Setting secrets for job"
243+
QUAY_CREDS=$(az keyvault secret show --name quay-creds --vault-name ${{ secrets.NIC_KEYVAULT_NAME }} --query value -o tsv)
244+
echo "::add-mask::$QUAY_CREDS"
245+
QUAY_USERNAME=$(echo $QUAY_CREDS | jq -r '.username')
246+
echo "::add-mask::$QUAY_USERNAME"
247+
echo "QUAY_USERNAME=$QUAY_USERNAME" >> $GITHUB_OUTPUT
248+
QUAY_ROBOT_TOKEN=$(echo $QUAY_CREDS | jq -r '.token')
249+
echo "::add-mask::$QUAY_ROBOT_TOKEN"
250+
echo "QUAY_ROBOT_TOKEN=$QUAY_ROBOT_TOKEN" >> $GITHUB_OUTPUT
251+
217252
- name: Authenticate to Google Cloud
218253
id: gcr-auth
219254
uses: google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093 # v3.0.0
@@ -233,8 +268,8 @@ jobs:
233268
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
234269
with:
235270
registry: quay.io
236-
username: ${{ secrets.QUAY_USERNAME }}
237-
password: ${{ secrets.QUAY_ROBOT_TOKEN }}
271+
username: ${{ steps.secrets.outputs.QUAY_USERNAME }}
272+
password: ${{ steps.secrets.outputs.QUAY_ROBOT_TOKEN }}
238273

239274
- name: Publish images
240275
run: |

.github/workflows/plus-release.yml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,21 @@ jobs:
215215
with:
216216
ref: ${{ inputs.branch }}
217217

218+
- name: Azure login
219+
uses: azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5 # v2.3.0
220+
with:
221+
client-id: ${{ secrets.AZURE_VAULT_CLIENT_ID }}
222+
tenant-id: ${{ secrets.AZURE_VAULT_TENANT_ID }}
223+
subscription-id: ${{ secrets.AZURE_VAULT_SUBSCRIPTION_ID }}
224+
225+
- name: Setup secrets
226+
id: secrets
227+
run: |
228+
echo "Setting secrets for job"
229+
AWS_ROLE_MARKETPLACE=$(az keyvault secret show --name aws-mktpl-role --vault-name ${{ secrets.NIC_KEYVAULT_NAME }} --query value -o tsv)
230+
echo "::add-mask::$AWS_ROLE_MARKETPLACE"
231+
echo "AWS_ROLE_MARKETPLACE=$AWS_ROLE_MARKETPLACE" >> $GITHUB_OUTPUT
232+
218233
- name: Authenticate to Google Cloud
219234
id: gcr-auth
220235
uses: google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093 # v3.0.0
@@ -234,7 +249,7 @@ jobs:
234249
uses: aws-actions/configure-aws-credentials@00943011d9042930efac3dcd3a170e4273319bc8 # v5.1.0
235250
with:
236251
aws-region: us-east-1
237-
role-to-assume: ${{ secrets.AWS_ROLE_MARKETPLACE }}
252+
role-to-assume: ${{ steps.secrets.outputs.AWS_ROLE_MARKETPLACE }}
238253

239254
- name: Login to ECR
240255
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0

.github/workflows/regression.yml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,31 @@ jobs:
8383
unit-tests:
8484
name: Unit Tests
8585
runs-on: ubuntu-24.04
86+
permissions:
87+
contents: read
88+
id-token: write
8689
needs: [checks]
8790
steps:
8891
- name: Checkout Repository
8992
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
9093
with:
9194
ref: ${{ needs.checks.outputs.branch }}
9295

96+
- name: Azure login
97+
uses: azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5 # v2.3.0
98+
with:
99+
client-id: ${{ secrets.AZURE_VAULT_CLIENT_ID }}
100+
tenant-id: ${{ secrets.AZURE_VAULT_TENANT_ID }}
101+
subscription-id: ${{ secrets.AZURE_VAULT_SUBSCRIPTION_ID }}
102+
103+
- name: Setup secrets
104+
id: secrets
105+
run: |
106+
echo "Setting secrets for job"
107+
CODECOV_TOKEN=$(az keyvault secret show --name code-cov --vault-name ${{ secrets.NIC_KEYVAULT_NAME }} --query value -o tsv)
108+
echo "::add-mask::$CODECOV_TOKEN"
109+
echo "CODECOV_TOKEN=$CODECOV_TOKEN" >> $GITHUB_OUTPUT
110+
93111
- name: Setup Helm
94112
uses: azure/setup-helm@1a275c3b69536ee54be43f2070a358922e12c8d4 # v4.3.1
95113
with:
@@ -107,7 +125,7 @@ jobs:
107125
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
108126
with:
109127
files: ./coverage.txt
110-
token: ${{ secrets.CODECOV_TOKEN }} # required
128+
token: ${{ steps.secrets.outputs.CODECOV_TOKEN }} # required
111129

112130
helm-tests:
113131
name: Helm Tests ${{ matrix.base-os }}

.github/workflows/release.yml

Lines changed: 48 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -437,11 +437,26 @@ jobs:
437437
# with:
438438
# ref: ${{ inputs.release_branch }}
439439

440+
# - name: Azure login
441+
# uses: azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5 # v2.3.0
442+
# with:
443+
# client-id: ${{ secrets.AZURE_VAULT_CLIENT_ID }}
444+
# tenant-id: ${{ secrets.AZURE_VAULT_TENANT_ID }}
445+
# subscription-id: ${{ secrets.AZURE_VAULT_SUBSCRIPTION_ID }}
446+
447+
# - name: Setup secrets
448+
# id: secrets
449+
# run: |
450+
# echo "Setting secrets for job"
451+
# AWS_ROLE_MARKETPLACE=$(az keyvault secret show --name aws-mktpl-role --vault-name ${{ secrets.NIC_KEYVAULT_NAME }} --query value -o tsv)
452+
# echo "::add-mask::$AWS_ROLE_MARKETPLACE"
453+
# echo "AWS_ROLE_MARKETPLACE=$AWS_ROLE_MARKETPLACE" >> $GITHUB_OUTPUT
454+
440455
# - name: Configure AWS Credentials
441456
# uses: aws-actions/configure-aws-credentials@b47578312673ae6fa5b5096b330d9fbac3d116df # v4.2.1
442457
# with:
443458
# aws-region: us-east-1
444-
# role-to-assume: ${{ secrets.AWS_ROLE_MARKETPLACE }}
459+
# role-to-assume: ${{ steps.secrets.outputs.AWS_ROLE_MARKETPLACE }}
445460

446461
# - name: Publish to AWS Marketplace
447462
# uses: nginx/aws-marketplace-publish@accf7b4c725796b744f2ee27acc2488d76f63d32 # v1.0.8
@@ -527,15 +542,28 @@ jobs:
527542
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
528543
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
529544

545+
- name: Setup secrets
546+
id: secrets
547+
run: |
548+
echo "Setting secrets for job"
549+
AZURE_STORAGE=$(az keyvault secret show --name azure-storage --vault-name ${{ secrets.NIC_KEYVAULT_NAME }} --query value -o tsv)
550+
echo "::add-mask::$AZURE_STORAGE"
551+
AZURE_STORAGE_ACCOUNT=$(echo $AZURE_STORAGE | jq -r '.account')
552+
echo "::add-mask::$AZURE_STORAGE_ACCOUNT"
553+
echo "AZURE_STORAGE_ACCOUNT=$AZURE_STORAGE_ACCOUNT" >> $GITHUB_OUTPUT
554+
AZURE_BUCKET_NAME=$(echo $AZURE_STORAGE | jq -r '.bucket')
555+
echo "::add-mask::$AZURE_BUCKET_NAME"
556+
echo "AZURE_BUCKET_NAME=$AZURE_BUCKET_NAME" >> $GITHUB_OUTPUT
557+
530558
- name: Azure Upload Release Packages
531559
uses: azure/CLI@9f7ce6f37c31b777ec6c6b6d1dfe7db79f497956 # v2.2.0
532560
with:
533561
inlineScript: |
534562
for i in $(find tarballs -type f); do
535563
echo -n "Uploading ${i} to kubernetes-ingress/v${{ inputs.nic_version }}/${i##*/} ... "
536564
if ${{ ! inputs.dry_run}}; then
537-
az storage blob upload --auth-mode=login -f "$i" -c ${{ secrets.AZURE_BUCKET_NAME }} \
538-
--account-name ${{ secrets.AZURE_STORAGE_ACCOUNT }} --overwrite -n kubernetes-ingress/v${{ inputs.nic_version }}/${i##*/}
565+
az storage blob upload --auth-mode=login -f "$i" -c ${{ steps.secrets.outputs.AZURE_BUCKET_NAME }} \
566+
--account-name ${{ steps.secrets.outputs.AZURE_STORAGE_ACCOUNT }} --overwrite -n kubernetes-ingress/v${{ inputs.nic_version }}/${i##*/}
539567
echo "done"
540568
else
541569
echo "skipped, dry_run."
@@ -635,6 +663,7 @@ jobs:
635663
permissions:
636664
contents: read
637665
actions: read
666+
id-token: write
638667
strategy:
639668
fail-fast: false
640669
matrix:
@@ -645,6 +674,21 @@ jobs:
645674
with:
646675
ref: ${{ inputs.release_branch }}
647676

677+
- name: Azure login
678+
uses: azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5 # v2.3.0
679+
with:
680+
client-id: ${{ secrets.AZURE_VAULT_CLIENT_ID }}
681+
tenant-id: ${{ secrets.AZURE_VAULT_TENANT_ID }}
682+
subscription-id: ${{ secrets.AZURE_VAULT_SUBSCRIPTION_ID }}
683+
684+
- name: Setup secrets
685+
id: secrets
686+
run: |
687+
echo "Setting secrets for job"
688+
SLACK_WEBHOOK=$(az keyvault secret show --name slack-pipeline-webhook --vault-name ${{ secrets.NIC_KEYVAULT_NAME }} --query value -o tsv)
689+
echo "::add-mask::$SLACK_WEBHOOK"
690+
echo "SLACK_WEBHOOK=$SLACK_WEBHOOK" >> $GITHUB_OUTPUT
691+
648692
- name: Get Image manifest digest
649693
id: digest
650694
run: |
@@ -701,4 +745,4 @@ jobs:
701745
}]
702746
}
703747
env:
704-
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
748+
SLACK_WEBHOOK_URL: ${{ steps.secrets.outputs.SLACK_WEBHOOK }}

0 commit comments

Comments
 (0)