1010jobs :
1111 Coverage :
1212 runs-on : ubuntu-latest
13+ permissions : # required for OIDC
14+ id-token : write
15+ contents : read
1316 steps :
1417 - uses : actions/checkout@v7
1518 - name : Setup Python environment
@@ -32,14 +35,34 @@ jobs:
3235 run : |
3336 coverage run --rcfile=.coveragerc -m pytest test/unit/
3437 coverage xml
38+ # Upload steps gated to same-repo runs: fork PRs cannot assume the role.
39+ - name : Configure AWS credentials (OIDC)
40+ if : github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
41+ uses : aws-actions/configure-aws-credentials@v6
42+ with :
43+ role-to-assume : arn:aws:iam::082972943155:role/oidc-github-dropbox-dropbox-sdk-python-repo
44+ aws-region : us-west-2
45+ - name : Get Codecov token from AWS Secrets Manager
46+ if : github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
47+ uses : aws-actions/aws-secretsmanager-get-secrets@v3
48+ with :
49+ secret-ids : |
50+ CODECOV_TOKEN,codecov-token-dropbox-sdk-python
51+ parse-json-secrets : false
3552 - name : Publish Coverage
3653 uses : codecov/codecov-action@v7
54+ if : github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
3755 with :
38- token : ${{ secrets .CODECOV_TOKEN }}
56+ token : ${{ env .CODECOV_TOKEN }}
3957 flags : unit
4058 fail_ci_if_error : true
4159 IntegrationCoverage :
60+ # Skip on fork PRs: they cannot assume the OIDC role.
61+ if : github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
4262 runs-on : ubuntu-latest
63+ permissions : # required for OIDC
64+ id-token : write
65+ contents : read
4366 steps :
4467 - uses : actions/checkout@v7
4568 - name : Setup Python environment
@@ -58,26 +81,38 @@ jobs:
5881 pip install -r requirements.txt
5982 pip install -r test/requirements.txt
6083 pip install .
61- - name : Generate Unit Test Coverage
84+ - name : Configure AWS credentials (OIDC)
85+ uses : aws-actions/configure-aws-credentials@v6
86+ with :
87+ role-to-assume : arn:aws:iam::082972943155:role/oidc-github-dropbox-dropbox-sdk-python-repo
88+ aws-region : us-west-2
89+ - name : Get integration credentials from AWS Secrets Manager
90+ uses : aws-actions/aws-secretsmanager-get-secrets@v3
91+ with :
92+ secret-ids : |
93+ CREDS,api-sdk-integration-test-creds
94+ parse-json-secrets : true
95+ - name : Get Codecov token from AWS Secrets Manager
96+ uses : aws-actions/aws-secretsmanager-get-secrets@v3
97+ with :
98+ secret-ids : |
99+ CODECOV_TOKEN,codecov-token-dropbox-sdk-python
100+ parse-json-secrets : false
101+ - name : Generate Coverage
62102 env :
63- LEGACY_USER_DROPBOX_TOKEN : ${{ secrets.LEGACY_USER_DROPBOX_TOKEN }}
64- LEGACY_USER_CLIENT_ID : ${{ secrets.LEGACY_USER_CLIENT_ID }}
65- LEGACY_USER_CLIENT_SECRET : ${{ secrets.LEGACY_USER_CLIENT_SECRET }}
66- LEGACY_USER_REFRESH_TOKEN : ${{ secrets.LEGACY_USER_REFRESH_TOKEN }}
67- SCOPED_USER_CLIENT_ID : ${{ secrets.SCOPED_USER_CLIENT_ID }}
68- SCOPED_USER_CLIENT_SECRET : ${{ secrets.SCOPED_USER_CLIENT_SECRET }}
69- SCOPED_USER_REFRESH_TOKEN : ${{ secrets.SCOPED_USER_REFRESH_TOKEN }}
70- SCOPED_TEAM_DROPBOX_TOKEN : ${{ secrets.SCOPED_TEAM_DROPBOX_TOKEN }}
71- SCOPED_TEAM_CLIENT_ID : ${{ secrets.SCOPED_TEAM_CLIENT_ID }}
72- SCOPED_TEAM_CLIENT_SECRET : ${{ secrets.SCOPED_TEAM_CLIENT_SECRET }}
73- SCOPED_TEAM_REFRESH_TOKEN : ${{ secrets.SCOPED_TEAM_REFRESH_TOKEN }}
74- DROPBOX_SHARED_LINK : ${{ secrets.DROPBOX_SHARED_LINK }}
103+ SCOPED_USER_CLIENT_ID : ${{ env.CREDS_SCOPED_USER_CLIENT_ID }}
104+ SCOPED_USER_CLIENT_SECRET : ${{ env.CREDS_SCOPED_USER_CLIENT_SECRET }}
105+ SCOPED_USER_REFRESH_TOKEN : ${{ env.CREDS_SCOPED_USER_REFRESH_TOKEN }}
106+ SCOPED_TEAM_CLIENT_ID : ${{ env.CREDS_SCOPED_TEAM_CLIENT_ID }}
107+ SCOPED_TEAM_CLIENT_SECRET : ${{ env.CREDS_SCOPED_TEAM_CLIENT_SECRET }}
108+ SCOPED_TEAM_REFRESH_TOKEN : ${{ env.CREDS_SCOPED_TEAM_REFRESH_TOKEN }}
109+ DROPBOX_SHARED_LINK : ${{ env.CREDS_DROPBOX_SHARED_LINK }}
75110 run : |
76111 coverage run --rcfile=.coveragerc -m pytest test/integration/test_dropbox.py
77112 coverage xml
78113 - name : Publish Coverage
79114 uses : codecov/codecov-action@v7
80115 with :
81- token : ${{ secrets .CODECOV_TOKEN }}
116+ token : ${{ env .CODECOV_TOKEN }}
82117 flags : integration
83118 fail_ci_if_error : true
0 commit comments