Skip to content

Commit 98754a3

Browse files
frogglestonBisaloo
authored andcommitted
Update to latest test workflows
1 parent 7456bd6 commit 98754a3

6 files changed

Lines changed: 433 additions & 313 deletions

File tree

.github/workflows/docker_apply_cache.yaml

Lines changed: 45 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ on:
1010
pull_request:
1111
types:
1212
- closed
13+
branches:
14+
- main
1315

1416
jobs:
1517
preflight:
@@ -34,14 +36,21 @@ jobs:
3436
runs-on: ubuntu-latest
3537
needs: preflight
3638
if: ${{ needs.preflight.outputs.do-apply == 'true' }}
39+
permissions:
40+
id-token: write # OIDC permission required
3741
outputs:
3842
renv-needed: ${{ steps.check-for-renv.outputs.renv-needed }}
3943
renv-cache-hashsum: ${{ steps.check-for-renv.outputs.renv-cache-hashsum }}
4044
renv-cache-available: ${{ steps.check-for-renv.outputs.renv-cache-available }}
4145
steps:
4246
- name: "Check for renv"
4347
id: check-for-renv
44-
uses: carpentries/actions/renv-checks@main
48+
uses: carpentries/actions/renv-checks@frog-s3-test-1
49+
with:
50+
role-to-assume: ${{ secrets.AWS_GH_OIDC_ARN }}
51+
aws-region: ${{ secrets.AWS_GH_OIDC_REGION }}
52+
WORKBENCH_TAG: ${{ vars.WORKBENCH_TAG || 'latest' }}
53+
4554
no-renv-cache-used:
4655
name: "No renv cache used"
4756
runs-on: ubuntu-latest
@@ -81,6 +90,7 @@ jobs:
8190
checks: write
8291
contents: write
8392
pages: write
93+
id-token: write # OIDC permission required
8494
container:
8595
image: carpentries/workbench-docker:${{ vars.WORKBENCH_TAG || 'latest' }}
8696
env:
@@ -94,8 +104,7 @@ jobs:
94104
- ${{ github.workspace }}:/home/rstudio/lesson
95105
options: --cpus 2
96106
steps:
97-
- name: "Checkout Lesson"
98-
uses: actions/checkout@v4
107+
- uses: actions/checkout@v4
99108

100109
- name: Debugging Info
101110
run: |
@@ -124,17 +133,41 @@ jobs:
124133
125134
- name: Get Container Version Used
126135
id: wb-vers
127-
uses: carpentries/actions/container-version@main
136+
uses: carpentries/actions/container-version@frog-s3-test-1
128137
with:
129138
WORKBENCH_TAG: ${{ vars.WORKBENCH_TAG }}
139+
renv-needed: ${{ needs.check-renv.outputs.renv-needed }}
140+
141+
- name: "Validate Current Org and Workflow"
142+
id: validate-org-workflow
143+
uses: carpentries/actions/validate-org-workflow@frog-s3-test-1
144+
with:
145+
repo: ${{ github.repository }}
146+
workflow: ${{ github.workflow }}
130147

131-
- name: Cache renv Directory
132-
uses: actions/cache@v4
148+
- name: Configure AWS credentials via OIDC
149+
id: aws-creds
150+
if: ${{ steps.validate-org-workflow.outputs.is_valid == 'true' }}
151+
uses: aws-actions/configure-aws-credentials@v5.0.0
133152
with:
134-
path: /home/rstudio/lesson/renv
135-
key: ${{ github.repository }}-${{ steps.wb-vers.outputs.container-version }}-renv-${{ needs.check-renv.outputs.renv-cache-hashsum }}
153+
role-to-assume: ${{ secrets.AWS_GH_OIDC_ARN }}
154+
aws-region: ${{ secrets.AWS_GH_OIDC_REGION }}
155+
output-credentials: true
156+
157+
- name: Upload cache object to S3
158+
uses: carpentries/actions-cache@frog-matchedkey-1
159+
with:
160+
# insecure: false # optional, use http instead of https. default false
161+
accessKey: ${{ steps.aws-creds.outputs.aws-access-key-id }}
162+
secretKey: ${{ steps.aws-creds.outputs.aws-secret-access-key }}
163+
sessionToken: ${{ steps.aws-creds.outputs.aws-session-token }}
164+
bucket: workbench-docker-caches
165+
path: |
166+
/home/rstudio/lesson/renv
167+
/usr/local/lib/R/site-library
168+
key: ${{ github.repository }}/${{ steps.wb-vers.outputs.container-version }}_renv-${{ needs.check-renv.outputs.renv-cache-hashsum }}
136169
restore-keys:
137-
${{ github.repository }}-${{ steps.wb-vers.outputs.container-version }}-renv-
170+
${{ github.repository }}/${{ steps.wb-vers.outputs.container-version }}_renv-
138171

139172
# trigger the build deploy workflow if update-renv-cache was successful
140173
trigger-build-deploy:
@@ -145,7 +178,8 @@ jobs:
145178
needs.update-renv-cache.outcome == 'success'
146179
steps:
147180
- name: "Trigger Build and Deploy Workflow"
181+
env:
182+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
148183
run: |
149184
gh workflow run docker_build_deploy.yaml --ref main
150-
env:
151-
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
185+
shell: bash

.github/workflows/docker_build_deploy.yaml

Lines changed: 64 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,11 @@ on:
2121
required: false
2222
default: false
2323
type: boolean
24-
sandpaper-version:
25-
description: 'The version of sandpaper to use. You can use the remotes syntax to specify a version to use. Defaults to latest on the r-universe.'
26-
default: 'latest'
27-
pegboard-version:
28-
description: 'The version of pegboard to use. You can use the remotes syntax to specify a version to use. Defaults to latest on the r-universe.'
29-
default: 'latest'
30-
varnish-version:
31-
description: 'The version of varnish to use. You can use the remotes syntax to specify a version to use. Defaults to latest on the r-universe.'
32-
default: 'latest'
24+
skip-manage-deps:
25+
description: 'Skip build-time dependency management'
26+
required: false
27+
default: true
28+
type: boolean
3329
workflow_run:
3430
workflows: ["03 Maintain: Apply Package Cache"]
3531
types:
@@ -42,39 +38,43 @@ jobs:
4238
outputs:
4339
do-build: ${{ steps.build-check.outputs.do-build }}
4440
renv-needed: ${{ steps.build-check.outputs.renv-needed }}
45-
renv-cache-hashsum: ${{ steps.build-check.outputs.renv-cache-hashsum || '' }}
46-
varnish-version: ${{ steps.build-check.outputs.varnish-version-override }}
47-
sandpaper-version: ${{ steps.build-check.outputs.sandpaper-version-override }}
48-
pegboard-version: ${{ steps.build-check.outputs.pegboard-version-override }}
41+
renv-cache-hashsum: ${{ steps.build-check.outputs.renv-cache-hashsum }}
42+
workbench-container-file-exists: ${{ steps.wb-vers.outputs.workbench-container-file-exists }}
43+
wb-vers: ${{ steps.wb-vers.outputs.container-version }}
44+
last-wb-vers: ${{ steps.wb-vers.outputs.last-container-version }}
45+
workbench-update: ${{ steps.wb-vers.outputs.workbench-update }}
4946
env:
50-
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
51-
47+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5248
steps:
5349
- name: "Should we run build and deploy?"
5450
id: build-check
55-
uses: carpentries/actions/build-preflight@main
51+
uses: carpentries/actions/build-preflight@frog-s3-test-1
52+
53+
- name: Checkout Lesson
54+
if: ${{ steps.build-check.outputs.do-build == 'true' }}
55+
uses: actions/checkout@v4
56+
57+
- name: Get container version info
58+
id: wb-vers
59+
if: ${{ steps.build-check.outputs.do-build == 'true' }}
60+
uses: carpentries/actions/container-version@frog-s3-test-1
5661
with:
57-
sandpaper-version: ${{ vars.SANDPAPER_VER || github.event.inputs.sandpaper-version || 'latest' }}
58-
pegboard-version: ${{ vars.PEGBOARD_VER || github.event.inputs.pegboard-version || 'latest' }}
59-
varnish-version: ${{ vars.VARNISH_VER || github.event.inputs.varnish-version || 'latest' }}
60-
CACHE_VERSION: ${{ secrets.CACHE_VERSION || vars.CACHE_VERSION || github.event.inputs.CACHE_VERSION || '' }}
61-
WORKBENCH_TAG: ${{ vars.WORKBENCH_TAG || 'latest' }}
62+
WORKBENCH_TAG: ${{ vars.WORKBENCH_TAG }}
63+
renv-needed: ${{ steps.build-check.outputs.renv-needed }}
6264

6365
full-build:
6466
name: "Build Full Site"
6567
runs-on: ubuntu-latest
66-
needs: [preflight]
67-
if: ${{ needs.preflight.outputs.do-build == 'true' }}
68+
needs: preflight
69+
if: always() && ${{ needs.preflight.outputs.do-build == 'true' && needs.preflight.outputs.workbench-update != 'true' }}
6870
env:
69-
RENV_EXISTS: ${{ needs.preflight.outputs.renv-needed }}
70-
RENV_HASH: ${{ needs.preflight.outputs.renv-cache-hashsum }}
71-
VARNISH_VER: ${{ needs.preflight.outputs.varnish-version }}
72-
SANDPAPER_VER: ${{ needs.preflight.outputs.sandpaper-version }}
73-
PEGBOARD_VER: ${{ needs.preflight.outputs.pegboard-version }}
71+
RENV_EXISTS: ${{ needs.preflight.outputs.renv-needed }}
72+
RENV_HASH: ${{ needs.preflight.outputs.renv-cache-hashsum }}
7473
permissions:
7574
checks: write
7675
contents: write
7776
pages: write
77+
id-token: write # OIDC permission required
7878
container:
7979
image: carpentries/workbench-docker:${{ vars.WORKBENCH_TAG || 'latest' }}
8080
env:
@@ -87,8 +87,7 @@ jobs:
8787
- ${{ github.workspace }}:/home/rstudio/lesson
8888
options: --cpus 1
8989
steps:
90-
- name: "Checkout Lesson"
91-
uses: actions/checkout@v4
90+
- uses: actions/checkout@v4
9291

9392
- name: "Debugging Info"
9493
run: |
@@ -105,15 +104,43 @@ jobs:
105104
106105
- name: "Setup Lesson Dependencies"
107106
id: build-container-deps
108-
uses: carpentries/actions/build-container-deps@main
107+
uses: carpentries/actions/build-container-deps@frog-s3-test-1
109108
with:
109+
CACHE_VERSION: ${{ vars.CACHE_VERSION || github.event.inputs.CACHE_VERSION || '' }}
110110
WORKBENCH_TAG: ${{ vars.WORKBENCH_TAG || 'latest' }}
111111
LESSON_PATH: ${{ vars.LESSON_PATH || '/home/rstudio/lesson' }}
112+
role-to-assume: ${{ secrets.AWS_GH_OIDC_ARN }}
113+
aws-region: ${{ secrets.AWS_GH_OIDC_REGION }}
112114

113115
- name: Run Container and Build Site
114-
run: |
115-
library(sandpaper)
116-
reset <- "${{ github.event.inputs.reset }}" == "true"
117-
sandpaper::package_cache_trigger(TRUE)
118-
sandpaper:::ci_deploy(reset = reset)
119-
shell: Rscript {0}
116+
id: build-and-deploy
117+
uses: carpentries/actions/build-and-deploy@frog-s3-test-1
118+
with:
119+
reset: ${{ github.event.inputs.reset }}
120+
skip-manage-deps: ${{ github.event.inputs.skip-manage-deps }}
121+
122+
update-container-version:
123+
name: "Update container version used"
124+
runs-on: ubuntu-latest
125+
needs: [preflight, full-build]
126+
permissions:
127+
contents: write
128+
pull-requests: write
129+
id-token: write # OIDC permission required
130+
if: |
131+
needs.preflight.outputs.do-build == 'true' &&
132+
(
133+
needs.preflight.outputs.workbench-container-file-exists == 'false' ||
134+
(
135+
needs.full-build.build-and-deploy.outcome == 'success' &&
136+
needs.preflight.outputs.wb-vers != needs.preflight.outputs.last-wb-vers
137+
)
138+
)
139+
steps:
140+
- name: Record container version used
141+
uses: carpentries/actions/record-container-version@frog-s3-test-1
142+
with:
143+
CONTAINER_VER: ${{ needs.preflight.outputs.wb-vers }}
144+
token: ${{ secrets.GITHUB_TOKEN }}
145+
role-to-assume: ${{ secrets.AWS_GH_OIDC_ARN }}
146+
aws-region: ${{ secrets.AWS_GH_OIDC_REGION }}

0 commit comments

Comments
 (0)