From 8d73821979737e982a4616b5dc6acc964a93e398 Mon Sep 17 00:00:00 2001 From: tobyhodges Date: Thu, 17 Apr 2025 06:17:00 +0000 Subject: [PATCH 1/6] [actions] update sandpaper workflow to version 0.16.11 --- .github/workflows/README.md | 10 +++++----- .github/workflows/pr-close-signal.yaml | 5 ++--- .github/workflows/pr-comment.yaml | 11 +++++------ .github/workflows/pr-post-remove-branch.yaml | 2 +- .github/workflows/pr-preflight.yaml | 2 +- .github/workflows/pr-receive.yaml | 17 +++++++++-------- .github/workflows/sandpaper-main.yaml | 7 +++++-- .github/workflows/sandpaper-version.txt | 2 +- .github/workflows/update-cache.yaml | 12 ++++++------ .github/workflows/update-workflows.yaml | 6 +++--- 10 files changed, 38 insertions(+), 36 deletions(-) diff --git a/.github/workflows/README.md b/.github/workflows/README.md index 101967e4..7076ddd9 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -2,7 +2,7 @@ This directory contains workflows to be used for Lessons using the {sandpaper} lesson infrastructure. Two of these workflows require R (`sandpaper-main.yaml` -and `pr-recieve.yaml`) and the rest are bots to handle pull request management. +and `pr-receive.yaml`) and the rest are bots to handle pull request management. These workflows will likely change as {sandpaper} evolves, so it is important to keep them up-to-date. To do this in your lesson you can do the following in your @@ -94,9 +94,9 @@ branch called `update/workflows` and a pull request is created. Maintainers are encouraged to review the changes and accept the pull request if the outputs are okay. -This update is run ~~weekly or~~ on demand. +This update is run weekly or on demand. -### 03 Maintain: Update Pacakge Cache (update-cache.yaml) +### 03 Maintain: Update Package Cache (update-cache.yaml) For lessons that have generated content, we use {renv} to ensure that the output is stable. This is controlled by a single lockfile which documents the packages @@ -140,7 +140,7 @@ Once the checks are finished, a comment is issued to the pull request, which will allow maintainers to determine if it is safe to run the "Receive Pull Request" workflow from new contributors. -### Recieve Pull Request (pr-recieve.yaml) +### Receive Pull Request (pr-receive.yaml) **Note of caution:** This workflow runs arbitrary code by anyone who creates a pull request. GitHub has safeguarded the token used in this workflow to have no @@ -171,7 +171,7 @@ The artifacts produced are used by the next workflow. ### Comment on Pull Request (pr-comment.yaml) -This workflow is triggered if the `pr-recieve.yaml` workflow is successful. +This workflow is triggered if the `pr-receive.yaml` workflow is successful. The steps in this workflow are: 1. Test if the workflow is valid and comment the validity of the workflow to the diff --git a/.github/workflows/pr-close-signal.yaml b/.github/workflows/pr-close-signal.yaml index 9b129d5d..b1303c26 100644 --- a/.github/workflows/pr-close-signal.yaml +++ b/.github/workflows/pr-close-signal.yaml @@ -8,7 +8,7 @@ on: jobs: send-close-signal: name: "Send closing signal" - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 if: ${{ github.event.action == 'closed' }} steps: - name: "Create PRtifact" @@ -16,8 +16,7 @@ jobs: mkdir -p ./pr printf ${{ github.event.number }} > ./pr/NUM - name: Upload Diff - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: pr path: ./pr - diff --git a/.github/workflows/pr-comment.yaml b/.github/workflows/pr-comment.yaml index bb2eb03c..f80d9d0c 100644 --- a/.github/workflows/pr-comment.yaml +++ b/.github/workflows/pr-comment.yaml @@ -20,7 +20,7 @@ jobs: # - no .github files were committed test-pr: name: "Test if pull request is valid" - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 if: > github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' @@ -74,7 +74,7 @@ jobs: create-branch: name: "Create Git Branch" needs: test-pr - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 if: ${{ needs.test-pr.outputs.is_valid == 'true' }} env: NR: ${{ needs.test-pr.outputs.number }} @@ -82,7 +82,7 @@ jobs: contents: write steps: - name: 'Checkout md outputs' - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: md-outputs path: built @@ -120,7 +120,7 @@ jobs: comment-pr: name: "Comment on Pull Request" needs: [test-pr, create-branch] - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 if: ${{ needs.test-pr.outputs.is_valid == 'true' }} env: NR: ${{ needs.test-pr.outputs.number }} @@ -150,7 +150,7 @@ jobs: comment-changed-workflow: name: "Comment if workflow files have changed" needs: test-pr - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 if: ${{ always() && needs.test-pr.outputs.is_valid == 'false' }} env: NR: ${{ github.event.workflow_run.pull_requests[0].number }} @@ -182,4 +182,3 @@ jobs: with: pr: ${{ env.NR }} body: ${{ env.body }} - diff --git a/.github/workflows/pr-post-remove-branch.yaml b/.github/workflows/pr-post-remove-branch.yaml index 62c2e98d..9419e2be 100644 --- a/.github/workflows/pr-post-remove-branch.yaml +++ b/.github/workflows/pr-post-remove-branch.yaml @@ -9,7 +9,7 @@ on: jobs: delete: name: "Delete branch from Pull Request" - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 if: > github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' diff --git a/.github/workflows/pr-preflight.yaml b/.github/workflows/pr-preflight.yaml index d0d7420d..34ad7aed 100644 --- a/.github/workflows/pr-preflight.yaml +++ b/.github/workflows/pr-preflight.yaml @@ -11,7 +11,7 @@ jobs: test-pr: name: "Test if pull request is valid" if: ${{ github.event.action != 'closed' }} - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 outputs: is_valid: ${{ steps.check-pr.outputs.VALID }} permissions: diff --git a/.github/workflows/pr-receive.yaml b/.github/workflows/pr-receive.yaml index 371ef542..7fbff6cd 100644 --- a/.github/workflows/pr-receive.yaml +++ b/.github/workflows/pr-receive.yaml @@ -13,7 +13,7 @@ jobs: test-pr: name: "Record PR number" if: ${{ github.event.action != 'closed' }} - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 outputs: is_valid: ${{ steps.check-pr.outputs.VALID }} steps: @@ -25,7 +25,7 @@ jobs: - name: "Upload PR number" id: upload if: ${{ always() }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: pr path: ${{ github.workspace }}/NR @@ -48,7 +48,7 @@ jobs: build-md-source: name: "Build markdown source files if valid" needs: test-pr - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 if: ${{ needs.test-pr.outputs.is_valid == 'true' }} env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} @@ -58,10 +58,10 @@ jobs: MD: ${{ github.workspace }}/site/built steps: - name: "Check Out Main Branch" - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: "Check Out Staging Branch" - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: md-outputs path: ${{ env.MD }} @@ -107,20 +107,21 @@ jobs: shell: Rscript {0} - name: "Upload PR" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: pr path: ${{ env.PR }} + overwrite: true - name: "Upload Diff" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: diff path: ${{ env.CHIVE }} retention-days: 1 - name: "Upload Build" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: built path: ${{ env.MD }} diff --git a/.github/workflows/sandpaper-main.yaml b/.github/workflows/sandpaper-main.yaml index e17707ac..b3d1de8c 100644 --- a/.github/workflows/sandpaper-main.yaml +++ b/.github/workflows/sandpaper-main.yaml @@ -21,7 +21,10 @@ on: jobs: full-build: name: "Build Full Site" - runs-on: ubuntu-latest + + # 2024-10-01: ubuntu-latest is now 24.04 and R is not installed by default in the runner image + # pin to 22.04 for now + runs-on: ubuntu-22.04 permissions: checks: write contents: write @@ -32,7 +35,7 @@ jobs: steps: - name: "Checkout Lesson" - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: "Set up R" uses: r-lib/actions/setup-r@v2 diff --git a/.github/workflows/sandpaper-version.txt b/.github/workflows/sandpaper-version.txt index bd0119f9..f2f6c138 100644 --- a/.github/workflows/sandpaper-version.txt +++ b/.github/workflows/sandpaper-version.txt @@ -1 +1 @@ -0.11.12 +0.16.11 diff --git a/.github/workflows/update-cache.yaml b/.github/workflows/update-cache.yaml index 676d7424..a011c0c0 100644 --- a/.github/workflows/update-cache.yaml +++ b/.github/workflows/update-cache.yaml @@ -14,7 +14,7 @@ on: jobs: preflight: name: "Preflight Check" - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 outputs: ok: ${{ steps.check.outputs.ok }} steps: @@ -36,14 +36,14 @@ jobs: check_renv: name: "Check if We Need {renv}" - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 needs: preflight if: ${{ needs.preflight.outputs.ok == 'true'}} outputs: needed: ${{ steps.renv.outputs.exists }} steps: - name: "Checkout Lesson" - uses: actions/checkout@v3 + uses: actions/checkout@v4 - id: renv run: | if [[ -d renv ]]; then @@ -52,7 +52,7 @@ jobs: check_token: name: "Check SANDPAPER_WORKFLOW token" - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 needs: check_renv if: ${{ needs.check_renv.outputs.needed == 'true' }} outputs: @@ -69,14 +69,14 @@ jobs: name: "Update Package Cache" needs: check_token if: ${{ needs.check_token.outputs.repo== 'true' }} - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} RENV_PATHS_ROOT: ~/.local/share/renv/ steps: - name: "Checkout Lesson" - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: "Set up R" uses: r-lib/actions/setup-r@v2 diff --git a/.github/workflows/update-workflows.yaml b/.github/workflows/update-workflows.yaml index 288bcd13..6414cf28 100644 --- a/.github/workflows/update-workflows.yaml +++ b/.github/workflows/update-workflows.yaml @@ -18,7 +18,7 @@ on: jobs: check_token: name: "Check SANDPAPER_WORKFLOW token" - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 outputs: workflow: ${{ steps.validate.outputs.wf }} repo: ${{ steps.validate.outputs.repo }} @@ -31,12 +31,12 @@ jobs: update_workflow: name: "Update Workflow" - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 needs: check_token if: ${{ needs.check_token.outputs.workflow == 'true' }} steps: - name: "Checkout Repository" - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Update Workflows id: update From f8fb8e8112399c17a8d6cecd16d224bad9d90c1f Mon Sep 17 00:00:00 2001 From: tobyhodges Date: Tue, 13 May 2025 00:20:19 +0000 Subject: [PATCH 2/6] [actions] update sandpaper workflow to version 0.16.12 --- .github/workflows/README.md | 2 +- .github/workflows/sandpaper-version.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/README.md b/.github/workflows/README.md index 7076ddd9..18ab7650 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -43,7 +43,7 @@ This workflow does the following: #### Caching This workflow has two caches; one cache is for the lesson infrastructure and -the other is for the the lesson dependencies if the lesson contains rendered +the other is for the lesson dependencies if the lesson contains rendered content. These caches are invalidated by new versions of the infrastructure and the `renv.lock` file, respectively. If there is a problem with the cache, manual invaliation is necessary. You will need maintain access to the repository diff --git a/.github/workflows/sandpaper-version.txt b/.github/workflows/sandpaper-version.txt index f2f6c138..ea98690d 100644 --- a/.github/workflows/sandpaper-version.txt +++ b/.github/workflows/sandpaper-version.txt @@ -1 +1 @@ -0.16.11 +0.16.12 From eebf0186202e422fd2cb02cf7017795a2ad9394a Mon Sep 17 00:00:00 2001 From: jt14den Date: Tue, 23 Dec 2025 13:21:27 -0800 Subject: [PATCH 3/6] Docs: Add CITATION.cff file --- CITATION.cff | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 CITATION.cff diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 00000000..af14df1f --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,21 @@ +cff-version: 1.2.0 +message: "If you use this lesson, please cite it as below." +type: dataset +title: "Open Qualitative Research (QualCoder)" +authors: + - family-names: Porter + given-names: Nathaniel + - family-names: Karcher + given-names: Sebastian +abstract: "Familiarizes learners with the application of open science principles to qualitative research. Focuses on documents or transcribed text in a variety of data formats. Learners practice working with secondary qualitative data from the Qualitative Data Repository (QDR) in the free software QualCoder." +keywords: + - qualitative research + - open science + - qualcoder + - QDR + - coding +license: CC-BY-4.0 +version: 1.0.0 +date-released: 2025-12-23 +repository-code: "https://github.com/LibraryCarpentry/open-qualitative-research-qualcoder" +url: "https://librarycarpentry.github.io/open-qualitative-research-qualcoder/" From 53872b6acbda12e2e6a5c037c338c687953c320e Mon Sep 17 00:00:00 2001 From: Nathaniel D Porter Date: Wed, 28 Jan 2026 11:16:15 -0500 Subject: [PATCH 4/6] Update CITATION.cff Correct authors and URLs --- CITATION.cff | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index af14df1f..88dca15b 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -5,17 +5,15 @@ title: "Open Qualitative Research (QualCoder)" authors: - family-names: Porter given-names: Nathaniel - - family-names: Karcher - given-names: Sebastian abstract: "Familiarizes learners with the application of open science principles to qualitative research. Focuses on documents or transcribed text in a variety of data formats. Learners practice working with secondary qualitative data from the Qualitative Data Repository (QDR) in the free software QualCoder." keywords: - qualitative research - open science - - qualcoder + - taguette - QDR - coding license: CC-BY-4.0 version: 1.0.0 date-released: 2025-12-23 -repository-code: "https://github.com/LibraryCarpentry/open-qualitative-research-qualcoder" -url: "https://librarycarpentry.github.io/open-qualitative-research-qualcoder/" +repository-code: "https://github.com/LibraryCarpentry/lc-qualitative-taguette/" +url: "https://librarycarpentry.github.io/lc-qualitative-taguette/" From 93ca109b812bc62badd57b6fcc0f8255880c2d8d Mon Sep 17 00:00:00 2001 From: Nathaniel D Porter Date: Wed, 28 Jan 2026 11:17:37 -0500 Subject: [PATCH 5/6] Update CITATION.cff Correct software name in title --- CITATION.cff | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CITATION.cff b/CITATION.cff index 88dca15b..716e77d7 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -1,7 +1,7 @@ cff-version: 1.2.0 message: "If you use this lesson, please cite it as below." type: dataset -title: "Open Qualitative Research (QualCoder)" +title: "Open Qualitative Research with Taguette" authors: - family-names: Porter given-names: Nathaniel From 2d33288d408fbc9e8c070c22a27d15bd4f0446f2 Mon Sep 17 00:00:00 2001 From: Nathaniel D Porter Date: Wed, 28 Jan 2026 13:44:45 -0500 Subject: [PATCH 6/6] Update CITATION.cff Add second author and correct software keyword --- CITATION.cff | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CITATION.cff b/CITATION.cff index 716e77d7..cfb1b866 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -5,11 +5,13 @@ title: "Open Qualitative Research with Taguette" authors: - family-names: Porter given-names: Nathaniel + - family-names: Karcher + given-names: Sebastian abstract: "Familiarizes learners with the application of open science principles to qualitative research. Focuses on documents or transcribed text in a variety of data formats. Learners practice working with secondary qualitative data from the Qualitative Data Repository (QDR) in the free software QualCoder." keywords: - qualitative research - open science - - taguette + - qualcoder - QDR - coding license: CC-BY-4.0