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,33 @@ 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+ CODECOV_TOKEN,codecov-token-dropbox-sdk-python
95+ parse-json-secrets : true
96+ - name : Generate Coverage
6297 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 }}
98+ SCOPED_USER_CLIENT_ID : ${{ env.CREDS_SCOPED_USER_CLIENT_ID }}
99+ SCOPED_USER_CLIENT_SECRET : ${{ env.CREDS_SCOPED_USER_CLIENT_SECRET }}
100+ SCOPED_USER_REFRESH_TOKEN : ${{ env.CREDS_SCOPED_USER_REFRESH_TOKEN }}
101+ SCOPED_TEAM_CLIENT_ID : ${{ env.CREDS_SCOPED_TEAM_CLIENT_ID }}
102+ SCOPED_TEAM_CLIENT_SECRET : ${{ env.CREDS_SCOPED_TEAM_CLIENT_SECRET }}
103+ SCOPED_TEAM_REFRESH_TOKEN : ${{ env.CREDS_SCOPED_TEAM_REFRESH_TOKEN }}
104+ DROPBOX_SHARED_LINK : ${{ env.CREDS_DROPBOX_SHARED_LINK }}
75105 run : |
76106 coverage run --rcfile=.coveragerc -m pytest test/integration/test_dropbox.py
77107 coverage xml
78108 - name : Publish Coverage
79109 uses : codecov/codecov-action@v7
80110 with :
81- token : ${{ secrets .CODECOV_TOKEN }}
111+ token : ${{ env .CODECOV_TOKEN }}
82112 flags : integration
83113 fail_ci_if_error : true
0 commit comments