diff --git a/.github/workflows/build-check-install.yaml b/.github/workflows/build-check-install.yaml index 34212fbb..c25cbd12 100644 --- a/.github/workflows/build-check-install.yaml +++ b/.github/workflows/build-check-install.yaml @@ -694,9 +694,12 @@ jobs: if: inputs.skip-r-cmd-check != true run: | find ${{ env.PKGNAME }}.Rcheck -type f -regextype posix-egrep \ - -regex '.*00install.out|.*00check.log|.*00build.out' -print0 | while IFS= read -r -d $'\0' file; do - printf "==================================\n$file\n==================================\n" - cat $file + -regex '.*00install.out|.*00check.log|.*00build.out|.*-Ex.Rout|.*tests/testthat\.Rout.*' \ + -print0 | while IFS= read -r -d $'\0' file; do + # Grouping allows to collapse/expand logs when needed. + echo "::group::$file" + cat $file + echo "::endgroup::" done shell: bash @@ -782,6 +785,18 @@ jobs: path: ${{ github.event.repository.name }}/${{ inputs.package-subdirectory }}/${{ env.PKGBUILD }} name: ${{ env.PKGBUILD }} + - name: Upload logs artifact 🗞️ + uses: actions/upload-artifact@v4 + with: + path: | + ${{ env.PKGNAME }}.Rcheck/*00install.out + ${{ env.PKGNAME }}.Rcheck/*00check.log + ${{ env.PKGNAME }}.Rcheck/*00build.out + ${{ env.PKGNAME }}.Rcheck/*-Ex.Rout + ${{ env.PKGNAME }}.Rcheck/tests/testthat.Rout + ${{ env.PKGNAME }}.Rcheck/tests/testthat.Rout.fail + name: check-logs-${{ env.PKGNAME }}-${{ inputs.concurrency-group }} + publish-junit-html-report: name: Publish JUnit HTML report 📰 runs-on: ubuntu-latest @@ -813,7 +828,7 @@ jobs: - name: Upload JUnit HTML report to GitHub pages 🗞️ if: needs.build-install-check.outputs.multiversion-docs == 'true' - uses: peaceiris/actions-gh-pages@v3 + uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ steps.github-token.outputs.token }} publish_dir: ./unit-test-report @@ -823,7 +838,7 @@ jobs: if: > needs.build-install-check.outputs.is-latest-tag == 'true' && needs.build-install-check.outputs.multiversion-docs == 'true' - uses: peaceiris/actions-gh-pages@v3 + uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ steps.github-token.outputs.token }} publish_dir: ./unit-test-report @@ -833,7 +848,7 @@ jobs: if: > needs.build-install-check.outputs.is-rc-tag == 'true' && needs.build-install-check.outputs.multiversion-docs == 'true' - uses: peaceiris/actions-gh-pages@v3 + uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ steps.github-token.outputs.token }} publish_dir: ./unit-test-report @@ -841,7 +856,7 @@ jobs: - name: Upload JUnit HTML report to GitHub pages (non-multiversion) 🗞️ if: needs.build-install-check.outputs.multiversion-docs == 'false' - uses: peaceiris/actions-gh-pages@v3 + uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ steps.github-token.outputs.token }} publish_dir: ./unit-test-report diff --git a/.github/workflows/links.yaml b/.github/workflows/links.yaml index 768dd205..cae32849 100644 --- a/.github/workflows/links.yaml +++ b/.github/workflows/links.yaml @@ -16,11 +16,29 @@ on: workflow_dispatch: workflow_call: inputs: - additional_args: + lychee-additional-args: description: Additional arguments to pass to lychee required: false type: string + default: "--exclude-private" + lychee-fail: + description: Fail workflow run on error (i.e. when lychee exit code is not 0) + required: false + type: boolean + default: false + package-subdirectory: + description: Subdirectory in the repository, where the R package is located. + required: false + type: string default: "" + link-checking-method: + description: | + Which link checking method should be used? Supported methods are: + lychee + urlchecker + required: false + type: string + default: "urlchecker" concurrency: group: links-${{ github.event.pull_request.number || github.ref }} @@ -33,6 +51,7 @@ jobs: if: > !contains(github.event.commits[0].message, '[skip links]') && github.event.pull_request.draft == false + && inputs.link-checking-method == 'lychee' steps: - name: Get branch names 🌿 id: branch-name @@ -65,18 +84,69 @@ jobs: SKIP_INSTRUCTION: "[skip links]" - name: Check URLs in docs 🔬 - uses: lycheeverse/lychee-action@v1.8.0 + uses: lycheeverse/lychee-action@v1.10.0 with: args: >- - --exclude-private --exclude "https://github.com.*.git|https://insightsengineering.github.io.*|lewagon.*|knightdave.*|.*users.noreply.github.com|lycheeverse.*" --verbose --no-progress - ${{ inputs.additional_args }} + ${{ inputs.lychee-additional-args }} **/*.md **/*.html **/*.Rmd **/*.yaml **/*.yml + *.md + fail: ${{ inputs.lychee-fail }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + urlchecker: + name: URL Checker 🔎 + runs-on: ubuntu-latest + container: + image: rocker/tidyverse:latest + if: > + !contains(github.event.commits[0].message, '[skip links]') + && github.event.pull_request.draft == false + && inputs.link-checking-method == 'urlchecker' + steps: + - name: Get branch names 🌿 + id: branch-name + uses: tj-actions/branch-names@v7 + + - name: Checkout repo (PR) 🛎 + uses: actions/checkout@v4.1.1 + if: github.event_name == 'pull_request' + with: + ref: ${{ steps.branch-name.outputs.head_ref_branch }} + repository: ${{ github.event.pull_request.head.repo.full_name }} + + - name: Checkout repo 🛎 + uses: actions/checkout@v4.1.1 + if: github.event_name != 'pull_request' + with: + ref: ${{ steps.branch-name.outputs.head_ref_branch }} + + - name: Check commit message 💬 + run: | + git config --global --add safe.directory $(pwd) + export head_commit_message="$(git show -s --format=%B | tr '\r\n' ' ' | tr '\n' ' ')" + echo "head_commit_message = $head_commit_message" + if [[ $head_commit_message == *"$SKIP_INSTRUCTION"* ]]; then + echo "Skip instruction detected - cancelling the workflow." + exit 1 + fi + shell: bash + env: + SKIP_INSTRUCTION: "[skip links]" + + - name: Check URLs with urlchecker 🔬 + run: | + # For unexplained reasons, parallel = FALSE is required to prevent some false positives. + bad_urls <- nrow(print(urlchecker::url_check(".", parallel = FALSE))) + if (bad_urls > 0) { + stop("Looks like a total of ", bad_urls, " URL(s) were found! Please correct them.") + } + shell: Rscript {0} + working-directory: ${{ inputs.package-subdirectory }} diff --git a/.github/workflows/test-coverage.yaml b/.github/workflows/test-coverage.yaml index 2ee82596..1a7eda3f 100644 --- a/.github/workflows/test-coverage.yaml +++ b/.github/workflows/test-coverage.yaml @@ -419,7 +419,7 @@ jobs: - name: Upload coverage report to GitHub pages 🗞️ if: needs.coverage.outputs.multiversion-docs == 'true' - uses: peaceiris/actions-gh-pages@v3 + uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ steps.github-token.outputs.token }} publish_dir: ./coverage-report @@ -429,7 +429,7 @@ jobs: if: > needs.coverage.outputs.is-latest-tag == 'true' && needs.coverage.outputs.multiversion-docs == 'true' - uses: peaceiris/actions-gh-pages@v3 + uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ steps.github-token.outputs.token }} publish_dir: ./coverage-report @@ -439,7 +439,7 @@ jobs: if: > needs.coverage.outputs.is-rc-tag == 'true' && needs.coverage.outputs.multiversion-docs == 'true' - uses: peaceiris/actions-gh-pages@v3 + uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ steps.github-token.outputs.token }} publish_dir: ./coverage-report @@ -447,7 +447,7 @@ jobs: - name: Upload coverage report to GitHub pages (non-multiversion) 🗞️ if: needs.coverage.outputs.multiversion-docs == 'false' - uses: peaceiris/actions-gh-pages@v3 + uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ steps.github-token.outputs.token }} publish_dir: ./coverage-report diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b752cef0..91ccf0ea 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -77,6 +77,6 @@ repos: files: '\.Rhistory|\.RData|\.Rds|\.rds$' # `exclude: ` to allow committing specific files. - repo: https://github.com/igorshubovych/markdownlint-cli - rev: v0.40.0 + rev: v0.41.0 hooks: - id: markdownlint diff --git a/DESCRIPTION b/DESCRIPTION index 539af9f2..e9e24ac1 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,8 +1,8 @@ Type: Package Package: r.pkg.template Title: R Package Template -Version: 0.1.0.9159 -Date: 2024-05-14 +Version: 0.1.0.9167 +Date: 2024-06-18 Authors@R: person("insightsengineering", , , "insightsengineering@example.com", role = c("aut", "cre")) Description: R package template with GitHub Actions workflows included. diff --git a/NEWS.md b/NEWS.md index cd8fabf0..b5f4ce4f 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# r.pkg.template 0.1.0.9159 +# r.pkg.template 0.1.0.9167 ### New features