diff --git a/.github/workflows/code-quality.yml b/.github/workflows/code-quality.yml index 1aea0162e0..cadb88280e 100644 --- a/.github/workflows/code-quality.yml +++ b/.github/workflows/code-quality.yml @@ -15,15 +15,15 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Setup Node.js - uses: actions/setup-node@v7 + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: latest - name: Install pnpm - uses: pnpm/action-setup@v6 + uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 with: # Pinned below 11.12.0, whose self-install crashes with # "Cannot use 'in' operator to search for 'integrity' in undefined". @@ -35,7 +35,7 @@ jobs: run: | pnpm config set store-dir ~/.pnpm-store - - uses: actions/cache@v6 + - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 name: Setup pnpm cache with: path: ~/.pnpm-store diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index b0ef596be8..de6248f102 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -15,10 +15,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v7 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install pnpm - uses: pnpm/action-setup@v6 + uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 with: # Pinned below 11.12.0, whose self-install crashes with # "Cannot use 'in' operator to search for 'integrity' in undefined". @@ -32,7 +32,7 @@ jobs: pnpm run build - name: Deploy - uses: JamesIves/github-pages-deploy-action@v4 + uses: JamesIves/github-pages-deploy-action@fa24774553152dd7873cd16ebd8d959b010c5445 # v4.9.0 with: folder: build branch: gh-pages diff --git a/.github/workflows/links.yaml b/.github/workflows/links.yaml index 0adf235c7a..0f21e573f4 100644 --- a/.github/workflows/links.yaml +++ b/.github/workflows/links.yaml @@ -1,38 +1,36 @@ +# Internal links are already checked by the Docusaurus build +# (onBrokenLinks: "throw" in docusaurus.config.ts), so this only +# needs to cover external URLs. name: Link checker on: - push: - branches: - - main pull_request: branches: - main + schedule: + - cron: "17 6 * * 1" # weekly: external links rot without any commit + workflow_dispatch: + +permissions: + contents: read jobs: - build: + lychee: name: Link checker runs-on: ubuntu-latest steps: - - uses: actions/checkout@v7 - - - name: Install pnpm - uses: pnpm/action-setup@v6 - with: - # Pinned below 11.12.0, whose self-install crashes with - # "Cannot use 'in' operator to search for 'integrity' in undefined". - # https://github.com/pnpm/action-setup/issues/276 - # https://github.com/pnpm/pnpm/issues/12959 - version: 11.11.0 - - - - uses: actions/setup-node@v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: - node-version: 22 + persist-credentials: false - - name: MDX Broken Link Checker - uses: KaiSpencer/gh-action-check-broken-links@v0 + - name: Check links + uses: lycheeverse/lychee-action@e7477775783ea5526144ba13e8db5eec57747ce8 # v2.9.0 with: - # Required: The base URL to check links against - # For example: /pages/foo.mdx will be checked against https://mysite.com/foo - baseUrl: 'https://nyu-its.github.io/rts-docs-dev/' - + args: >- + --no-progress + './docs/**/*.md' './docs/**/*.mdx' + './blog/**/*.md' './blog/**/*.mdx' + # External links are flaky, so only the scheduled/manual runs fail; + # PRs report results in the job summary without blocking. + fail: ${{ github.event_name != 'pull_request' }} + jobSummary: true diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 5f7df45548..4d835186fc 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 # npm (not pnpm) is intentional: remark-cli is installed globally by the # action at /usr/local/lib/node_modules/. pnpm's global store is not on @@ -34,7 +34,7 @@ jobs: run: npm install -g remark-mdx@2 remark-lint-no-undefined-references@4 remark-directive@3 remark-frontmatter@4 - name: remark-lint - uses: reviewdog/action-remark-lint@v5 + uses: reviewdog/action-remark-lint@b59ae6b0c8764e8fe1b72541328b9a19f0f94ae0 # v5.20.0 with: github_token: ${{ secrets.GITHUB_TOKEN }} reporter: github-pr-review diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index 10c74be8b9..432eebe6f7 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -23,10 +23,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v7 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install pnpm - uses: pnpm/action-setup@v6 + uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 with: # Pinned below 11.12.0, whose self-install crashes with # "Cannot use 'in' operator to search for 'integrity' in undefined". @@ -43,7 +43,7 @@ jobs: pnpm run build - name: Deploy preview - uses: rossjrw/pr-preview-action@v1 + uses: rossjrw/pr-preview-action@ffa7509e91a3ec8dfc2e5536c4d5c1acdf7a6de9 # v1.8.1 with: preview-branch: gh-pages source-dir: build diff --git a/.github/workflows/spellcheck.yaml b/.github/workflows/spellcheck.yaml index 54c777f141..6f155d28b5 100644 --- a/.github/workflows/spellcheck.yaml +++ b/.github/workflows/spellcheck.yaml @@ -14,9 +14,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Actions Repository - uses: actions/checkout@v7 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Spell Check Repo - uses: crate-ci/typos@v1.50.2 + uses: crate-ci/typos@00f422f3b19c57bc6338715ebfe3316d38768461 # v1.50.3 with: files: docs/**/**/*.md docs/**/**/*.mdx diff --git a/.github/workflows/storage-finder-sync.yml b/.github/workflows/storage-finder-sync.yml index b727d4fb4c..9485fd3fdf 100644 --- a/.github/workflows/storage-finder-sync.yml +++ b/.github/workflows/storage-finder-sync.yml @@ -13,15 +13,15 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v7 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0 - name: Set up Bun - uses: oven-sh/setup-bun@v2 + uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 - name: Install pnpm - uses: pnpm/action-setup@v6 + uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 with: version: latest @@ -37,6 +37,6 @@ jobs: bun format - name: Commit changes - uses: stefanzweifel/git-auto-commit-action@v7 + uses: stefanzweifel/git-auto-commit-action@4a55954c782fc1ea30b9056cd3e7a2b40ca8887d # v7.2.0 with: commit_message: "chore: sync storage finder data from sheet" diff --git a/.github/workflows/update-lockfiles.yml b/.github/workflows/update-lockfiles.yml index 892656f091..0621cbb711 100644 --- a/.github/workflows/update-lockfiles.yml +++ b/.github/workflows/update-lockfiles.yml @@ -13,9 +13,9 @@ jobs: pixi-update: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Set up pixi - uses: prefix-dev/setup-pixi@v0.10.2 + uses: prefix-dev/setup-pixi@d3f436a425481402e6a95a1d1fc10331c708cd9e # v0.10.2 with: run-install: false @@ -25,7 +25,7 @@ jobs: pixi update --json | pixi exec pixi-diff-to-markdown >> diff.md - name: Create pull request - uses: peter-evans/create-pull-request@v8 + uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1 with: token: ${{ secrets.GITHUB_TOKEN }} commit-message: Update pixi lockfile diff --git a/.github/workflows/vale-test.yml b/.github/workflows/vale-test.yml index 7dd91e62df..3fbb7eebce 100644 --- a/.github/workflows/vale-test.yml +++ b/.github/workflows/vale-test.yml @@ -15,10 +15,10 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v7 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Run Vale - uses: vale-cli/vale-action@v3 + uses: vale-cli/vale-action@518a9136acc6e6668ce7c00d367051e0941e87ff # v3.0.0 with: version: 3.12.0 files: '["docs/", "src/pages/"]' diff --git a/docs/hpc/01_getting_started/01_intro.mdx b/docs/hpc/01_getting_started/01_intro.mdx index dff36bdda4..047e8dfef5 100644 --- a/docs/hpc/01_getting_started/01_intro.mdx +++ b/docs/hpc/01_getting_started/01_intro.mdx @@ -10,3 +10,5 @@ If you are an active user, you can proceed to one of the categories on the left. ## Announcements + +[lychee test link](https://lychee-test.invalid/this-page-does-not-exist) diff --git a/lychee.toml b/lychee.toml new file mode 100644 index 0000000000..3a078ee5b6 --- /dev/null +++ b/lychee.toml @@ -0,0 +1,17 @@ +# lychee config, picked up automatically from the repo root by +# .github/workflows/links.yaml. + +exclude = [ + # Only reachable on the NYU network / VPN (time out from CI runners) + '^https?://identity\.it\.nyu\.edu', + '^https?://iiq\.nyu\.edu', + '^https?://ood\.torch\.hpc\.nyu\.edu', + '^https?://projects\.hpc\.nyu\.edu', + '^https?://stats\.apps\.cloud\.rt\.nyu\.edu', + + # Require an NYU / vendor login + '^https://www\.nyu\.edu/servicelink/', + '^https://(docs|drive)\.google\.com/', + '^https://gemini\.google\.com/', + '^https://www\.schrodinger\.com/license-installation-instructions', +]