Skip to content

Build DataSHIELD Tests Dashboard #11

Build DataSHIELD Tests Dashboard

Build DataSHIELD Tests Dashboard #11

Workflow file for this run

name: Build DataSHIELD Tests Dashboard
on:
schedule:
- cron: "0 5 * * *" # Run daily at 5AM UTC
pull_request:
release:
types: [published]
workflow_dispatch:
workflow_run:
workflows: ["dsBase tests' suite", "dsBaseClient tests' suite"]
types:
- completed
permissions:
contents: write
pages: write
id-token: write
jobs:
build-site:
runs-on: ubuntu-latest
env:
INPUT_DIR: logs
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check for new commits since last successful run
id: changes
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const workflowFile = 'build-site.yml';
const owner = context.repo.owner;
const repo = context.repo.repo;
const runs = await github.rest.actions.listWorkflowRuns({
owner,
repo,
workflow_id: workflowFile,
status: "completed",
per_page: 10
});
const lastSuccess = runs.data.workflow_runs.find(r => r.conclusion === "success");
if (!lastSuccess) {
core.info("No previous successful runs found. Proceeding.");
core.setOutput("changed", "true");
return;
}
const currentSha = context.sha;
const lastSha = lastSuccess.head_sha;
core.info(`Current SHA: ${currentSha}`);
core.info(`Last successful SHA: ${lastSha}`);
if (currentSha === lastSha) {
core.info("No new commits since last successful run. Skipping.");
core.setOutput("changed", "false");
} else {
core.info("New commits detected. Running workflow.");
core.setOutput("changed", "true");
}
- name: Check for relevant file changes
id: relevant_changes
if: steps.changes.outputs.changed == 'true'
run: |
LAST_SHA=$(git rev-parse HEAD^ || echo "")
if [ -z "$LAST_SHA" ]; then
echo "changed=true" >> $GITHUB_OUTPUT
exit 0
fi
if git diff --name-only $LAST_SHA HEAD | grep -E '^(logs/)'; then
echo "Relevant files changed."
echo "changed=true" >> $GITHUB_OUTPUT
else
echo "No relevant files changed."
echo "changed=false" >> $GITHUB_OUTPUT
fi
- name: Stop workflow if no changes
if: >
(steps.changes.outputs.changed != 'true' ||
steps.relevant_changes.outputs.changed != 'true')
run: |
echo "No new relevant changes since last successful run. Skipping build."
exit 0
- uses: r-lib/actions/setup-pandoc@v2
- uses: r-lib/actions/setup-r@v2
with:
use-public-rspm: true
- uses: r-lib/actions/setup-r-dependencies@v2
with:
extra-packages: |
cran::dplyr
cran::fs
cran::glue
cran::htmltools
cran::httr2
cran::purrr
cran::quarto
cran::reactable
cran::readr
cran::stringr
cran::tibble
cran::xml2
needs: website
- name: Parse logs
run: |
mkdir -p docs
Rscript --verbose --vanilla source/parse_logs.R logs docs FALSE
- name: Build Quarto website
run: Rscript source/build_site.R
- name: Deploy to GitHub pages 🚀
if: github.event_name != 'pull_request'
uses: JamesIves/github-pages-deploy-action@v4.6.7
with:
clean: true
branch: gh-pages
folder: docs