Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
7975a6c
add title and just year as x-axis label
nikk-nikaznan Dec 3, 2024
2c5f20e
cleaned up
nikk-nikaznan Dec 3, 2024
18b7d60
Merge pull request #691 from nikk-nikaznan/673-axis-labels
vahtras Dec 3, 2024
ee96ad3
Update CoC links to new handbook
maneesha Dec 10, 2024
b131278
update CoC links
maneesha Dec 10, 2024
1dfe1e1
Merge pull request #692 from swcarpentry/coc-links-handbook
vahtras Dec 10, 2024
a89b1bb
rm reference to CI FSP
maneesha Jan 31, 2025
355852b
Merge pull request #693 from swcarpentry/rm-ci-fsp
alee Jan 31, 2025
34e1127
Add first draft of learner-profiles
jansim Feb 28, 2025
18c0edd
Fix inconsistent use of name in one of the learner profiles
jansim Mar 3, 2025
efd23d5
Add a new paragraph to Carla's learner profile about this workshop be…
jansim Mar 3, 2025
02aa33f
mention internet searches and talking to people as ways to get help
tobyhodges Mar 13, 2025
ab87f14
convert to bullet points
tobyhodges Mar 13, 2025
b35095f
first draft genAI subsection
tobyhodges Mar 13, 2025
79423be
minor polishes for more positive language
tobyhodges Mar 14, 2025
8b5af27
first draft guidance for Instructors
tobyhodges Mar 14, 2025
18ad693
more polishing
tobyhodges Mar 14, 2025
e624411
Merge pull request #695 from tobyhodges/llm-assistants
vahtras Mar 14, 2025
a375c9a
Revert "Add content on generative AI"
vahtras Mar 14, 2025
b9adaa2
Merge pull request #696 from swcarpentry/revert-695-llm-assistants
vahtras Mar 14, 2025
ba82693
re-add genAI content
tobyhodges Mar 14, 2025
7cb86be
Merge pull request #694 from jansim/learner-profiles
alee Mar 14, 2025
0d10b53
Apply suggestions from review
tobyhodges Mar 18, 2025
06561b9
formulating -> articulating
tobyhodges Mar 18, 2025
d55c2fe
language polishes
tobyhodges Mar 18, 2025
ef84a89
Apply suggestions from review
tobyhodges Mar 19, 2025
79cb5de
clarify which developers I am talking about
tobyhodges Mar 19, 2025
812e4cd
Apply suggestions from code review
tobyhodges Mar 28, 2025
cf0f86e
typo fix
tobyhodges Mar 28, 2025
0b6744f
Merge pull request #697 from tobyhodges/llm-assistants
alee Apr 1, 2025
2189441
[actions] update sandpaper workflow to version 0.16.12
zkamvar May 13, 2025
6380670
Merge pull request #698 from swcarpentry/update/workflows
vahtras May 28, 2025
74e2ec2
Fix the typo in Markdown Code/Rendered Output table
VeronikaShevc Nov 12, 2025
72a9f24
Merge pull request #702 from VeronikaShevc/patch-1
vahtras Nov 12, 2025
27630f1
Fix example output in "writing functions" episode
JostMigenda Nov 17, 2025
c05e144
Merge pull request #704 from JostMigenda/patch-1
alee Nov 17, 2025
f0f9bc4
Update reflection exercise in coffee break
JostMigenda Nov 25, 2025
c3f3f1c
[actions] update sandpaper workflow to version 0.18.4
zkamvar Jan 27, 2026
9e412d6
Merge pull request #708 from swcarpentry/update/workflows
alee Jan 28, 2026
01c38a6
[actions] update workbench docker version to v0.2.4 (#709)
carpentries-bot Jan 28, 2026
3a72596
[actions] update sandpaper workflow to version 0.18.5
zkamvar Feb 3, 2026
58eec48
Merge pull request #710 from swcarpentry/update/workflows
alee Feb 7, 2026
4781335
[actions] update sandpaper workflow to version 1.0.0
zkamvar Mar 3, 2026
fd667dc
[actions] update sandpaper workflow to version 1.0.1
zkamvar Apr 21, 2026
b4ad9fb
Merge pull request #716 from swcarpentry/update/workflows
alee Apr 21, 2026
5d886a8
[actions] update workbench docker version to v0.2.7 (#717)
carpentries-bot May 26, 2026
21fe745
refine reflection exercises and move to functions
alee Feb 13, 2026
2039b8a
[actions] update workbench docker version to v0.2.8 (#725)
carpentries-bot Sep 1, 2026
e406443
[actions] update sandpaper workflow to version v1.0.3
zkamvar Oct 6, 2026
b7c2caa
[actions] update workbench docker version to v0.2.9 (#731)
carpentries-bot Oct 6, 2026
d4ff9a5
Merge pull request #724 from swcarpentry/update/workflows
alee Oct 8, 2026
0dc1915
move local/global reflection to lesson 17
alee Oct 8, 2026
03c3931
Merge pull request #707 from JostMigenda/patch-2
alee Oct 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workbench-docker-version.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
v0.2.9
371 changes: 243 additions & 128 deletions .github/workflows/README.md

Large diffs are not rendered by default.

190 changes: 190 additions & 0 deletions .github/workflows/docker_apply_cache.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
name: "03 Maintain: Apply Package Cache"
description: "Build and publish the lesson dependency image after a pull request has been merged or via manual trigger"
on:
workflow_dispatch:
inputs:
name:
description: 'Who triggered this build?'
required: true
default: 'Maintainer (via GitHub)'
force-dependency-image-rebuild:
description: 'Rebuild the dependency image layer even if one already exists?'
required: false
default: false
type: boolean
prune-keep-count:
description: 'How many existing dependency image layers to keep?'
required: false
default: 1
type: number
pull_request:
types:
- closed
branches:
- main

# queue cache runs
concurrency:
group: docker-apply-cache
cancel-in-progress: false

jobs:
preflight:
name: "Preflight: PR or Manual Trigger?"
runs-on: ubuntu-latest
outputs:
do-apply: ${{ steps.check.outputs.merged_or_manual }}
steps:
- name: "Should we run cache application?"
id: check
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" ||
("${{ github.ref }}" == "refs/heads/main" && "${{ github.event.action }}" == "closed" && "${{ github.event.pull_request.merged }}" == "true") ]]; then
echo "merged_or_manual=true" >> $GITHUB_OUTPUT
else
echo "This was not a manual trigger and no PR was merged. No action taken."
echo "merged_or_manual=false" >> $GITHUB_OUTPUT
fi
shell: bash

check-renv:
name: "Check If We Need {renv}"
runs-on: ubuntu-latest
needs: preflight
if: needs.preflight.outputs.do-apply == 'true'
outputs:
renv-needed: ${{ steps.check-for-renv.outputs.renv-needed }}
renv-cache-hashsum: ${{ steps.check-for-renv.outputs.renv-cache-hashsum }}
steps:
- name: "Check for renv"
id: check-for-renv
uses: carpentries/actions/renv-checks@v1
with:
WORKBENCH_TAG: ${{ vars.WORKBENCH_TAG || 'latest' }}
skip-cache-check: true

no-renv-cache-used:
name: "No renv package dependency image needed"
runs-on: ubuntu-latest
needs: check-renv
if: needs.check-renv.outputs.renv-needed != 'true'
steps:
- name: "No dependency image needed"
run: echo "No renv dependency image needed for this lesson"

update-renv-cache:
name: "Publish renv package dependency image"
runs-on: ubuntu-latest
needs: check-renv
if: needs.check-renv.outputs.renv-needed == 'true'
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v6

- name: "Get Container Version Used"
id: wb-vers
uses: carpentries/actions/container-version@v1
with:
WORKBENCH_TAG: ${{ vars.WORKBENCH_TAG }}
renv-needed: ${{ needs.check-renv.outputs.renv-needed }}
token: ${{ secrets.GITHUB_TOKEN }}

- name: Log in to GHCR
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Set dependency image tags
id: image
env:
IMAGE_OWNER: ${{ github.repository_owner }}
IMAGE_NAME: ${{ github.event.repository.name }}
WB_VERSION: ${{ steps.wb-vers.outputs.container-version }}
RENV_HASH: ${{ needs.check-renv.outputs.renv-cache-hashsum }}
run: |
set -euo pipefail
exact_image="ghcr.io/${IMAGE_OWNER}/${IMAGE_NAME}-deps:${WB_VERSION}_renv-${RENV_HASH}"
latest_image="ghcr.io/${IMAGE_OWNER}/${IMAGE_NAME}-deps:latest"

# lowercaseify
echo "exact_image=${exact_image,,}" >> "$GITHUB_OUTPUT"
echo "latest_image=${latest_image,,}" >> "$GITHUB_OUTPUT"
shell: bash

- name: Check for existing dependency image tag
id: image-exists
env:
EXACT_IMAGE: ${{ steps.image.outputs.exact_image }}
run: |
set -euo pipefail
if docker manifest inspect "${EXACT_IMAGE}" >/dev/null 2>&1; then
echo "exists=true" >> "$GITHUB_OUTPUT"
echo "## ⚠️ Dependency image already exists" >> $GITHUB_STEP_SUMMARY
echo "Dependency image already exists for this renv hash: ${EXACT_IMAGE}" >> $GITHUB_STEP_SUMMARY
echo "Dependency image already exists for this renv hash: ${EXACT_IMAGE}"
else
echo "exists=false" >> "$GITHUB_OUTPUT"
echo "No existing dependency image found for this renv hash: ${EXACT_IMAGE}"
fi
shell: bash

- name: Build and push dependency image layer
id: build-push-deps-layer
if: |
steps.image-exists.outputs.exists != 'true' ||
(
github.event_name == 'workflow_dispatch' &&
github.event.inputs.force-dependency-image-rebuild == 'true'
)
uses: carpentries/actions/build-dependency-image@v1
with:
workbench-tag: ${{ vars.WORKBENCH_TAG || 'latest' }}
github-token: ${{ secrets.GITHUB_TOKEN }}
github-repository: ${{ github.repository }}
github-sha: ${{ github.sha }}
exact-image: ${{ steps.image.outputs.exact_image }}
latest-image: ${{ steps.image.outputs.latest_image }}
build-context: ${{ github.workspace }}

prune-dependency-images:
name: "Prune Dependency Images"
runs-on: ubuntu-latest
needs: check-renv
permissions:
contents: read
packages: write
steps:
- name: Prune any old dependency image layers
uses: carpentries/actions/prune-dependency-images@v1
if: needs.check-renv.outputs.renv-needed == 'true'
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
owner: ${{ github.repository_owner }}
owner-type: ${{ github.event.repository.owner.type }}
repository: ${{ github.event.repository.name }}
package-name: ${{ github.event.repository.name }}-deps
keep-count: ${{ github.event.inputs.prune-keep-count }}
continue-on-error: true

record-cache-result:
name: "Record Caching Status"
runs-on: ubuntu-latest
needs: [check-renv, update-renv-cache]
if: always()
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: "Record cache result"
run: |
echo "${{ needs.check-renv.outputs.renv-needed != 'true' || needs.update-renv-cache.result == 'success' }}" > ${{ github.workspace }}/apply-cache-result
shell: bash

- name: "Upload cache result"
uses: actions/upload-artifact@v7
with:
name: apply-cache-result
path: ${{ github.workspace }}/apply-cache-result
152 changes: 152 additions & 0 deletions .github/workflows/docker_build_deploy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
name: "01 Maintain: Build and Deploy Site"
description: "Build and deploy the lesson site using the carpentries/workbench-docker container"
on:
push:
branches:
- 'main'
- 'l10n_main'
paths-ignore:
- '.github/workflows/**.yaml'
- '.github/workbench-docker-version.txt'
schedule:
- cron: '0 0 * * 2'
workflow_run:
workflows: ["03 Maintain: Apply Package Cache"]
types:
- completed
workflow_dispatch:
inputs:
name:
description: 'Who triggered this build?'
required: true
default: 'Maintainer (via GitHub)'
CACHE_VERSION:
description: 'Optional renv cache version override'
required: false
default: ''
reset:
description: 'Reset cached markdown files'
required: true
default: false
type: boolean
force-skip-manage-deps:
description: 'Skip build-time dependency management'
required: true
default: false
type: boolean

# only one build/deploy at a time
concurrency:
group: docker-build-deploy
cancel-in-progress: true

jobs:
preflight:
name: "Preflight: Schedule, Push, or PR?"
runs-on: ubuntu-latest
outputs:
do-build: ${{ steps.build-check.outputs.do-build }}
renv-needed: ${{ steps.build-check.outputs.renv-needed }}
renv-cache-hashsum: ${{ steps.build-check.outputs.renv-cache-hashsum }}
dependency-image-ref: ${{ steps.build-check.outputs.dependency-image-ref }}
workbench-container-file-exists: ${{ steps.wb-vers.outputs.workbench-container-file-exists }}
wb-vers: ${{ steps.wb-vers.outputs.container-version }}
last-wb-vers: ${{ steps.wb-vers.outputs.last-container-version }}
workbench-update: ${{ steps.wb-vers.outputs.workbench-update }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: "Should we run build and deploy?"
id: build-check
uses: carpentries/actions/build-preflight@v1

- name: "Checkout Lesson"
if: steps.build-check.outputs.do-build == 'true'
uses: actions/checkout@v6

- name: "Get container version info"
id: wb-vers
if: steps.build-check.outputs.do-build == 'true'
uses: carpentries/actions/container-version@v1
with:
WORKBENCH_TAG: ${{ vars.WORKBENCH_TAG }}
renv-needed: ${{ steps.build-check.outputs.renv-needed }}
token: ${{ secrets.GITHUB_TOKEN }}

full-build:
name: "Build Full Site"
runs-on: ubuntu-latest
needs: preflight
if: |
needs.preflight.outputs.do-build == 'true' &&
needs.preflight.outputs.workbench-update != 'true'
env:
RENV_EXISTS: ${{ needs.preflight.outputs.renv-needed }}
RENV_HASH: ${{ needs.preflight.outputs.renv-cache-hashsum }}
permissions:
checks: write
contents: write
pages: write
container:
image: ${{ needs.preflight.outputs.dependency-image-ref }}
env:
WORKBENCH_PROFILE: "ci"
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
RENV_PATHS_ROOT: /home/rstudio/lesson/renv
RENV_PROFILE: "lesson-requirements"
RENV_CONFIG_EXTERNAL_LIBRARIES: "/usr/local/lib/R/site-library"
WORKBENCH_OVERLAY_CUSTOMIZATION: ${{ vars.WORKBENCH_OVERLAY_CUSTOMIZATION || '' }}
volumes:
- ${{ github.workspace }}:/home/rstudio/lesson
options: --cpus 1
steps:
- uses: actions/checkout@v6

- name: "Debugging Info"
run: |
cd /home/rstudio/lesson
echo "Current Directory: $(pwd)"
echo "RENV_HASH is $RENV_HASH"
ls -lah /home/rstudio/.workbench
ls -lah $(pwd)
Rscript -e 'sessionInfo()'
shell: bash

- name: "Mark Repository as Safe"
run: |
git config --global --add safe.directory $(pwd)
shell: bash

- name: "Run Container and Build Site"
id: build-and-deploy
uses: carpentries/actions/build-and-deploy@v1
with:
reset: ${{ vars.BUILD_RESET || github.event.inputs.reset || 'false' }}
skip-manage-deps: ${{ github.event.inputs.force-skip-manage-deps == 'true' || contains(needs.preflight.outputs.dependency-image-ref, '-deps:') }}
lang-code: ${{ vars.LANG_CODE || '' }}

update-container-version:
name: "Update container version used"
runs-on: ubuntu-latest
needs: [preflight]
permissions:
actions: write
contents: write
pull-requests: write
id-token: write
if: |
needs.preflight.outputs.do-build == 'true' &&
(
needs.preflight.outputs.workbench-container-file-exists == 'false' ||
needs.preflight.outputs.workbench-update == 'true'
)
steps:
- name: "Record container version used"
uses: carpentries/actions/record-container-version@v1
with:
CONTAINER_VER: ${{ needs.preflight.outputs.wb-vers }}
OMIT_PR: ${{ vars.OMIT_PR_CONTAINER_VERSION_UPDATE || 'false' }}
AUTO_MERGE: ${{ vars.AUTO_MERGE_CONTAINER_VERSION_UPDATE || 'false' }}
token: ${{ secrets.GITHUB_TOKEN }}
role-to-assume: ${{ secrets.AWS_GH_OIDC_ARN }}
aws-region: ${{ secrets.AWS_GH_OIDC_REGION }}
Loading
Loading