diff --git a/.gitea/workflows/publish.yml b/.gitea/workflows/publish.yml index e4d011a..25b6332 100644 --- a/.gitea/workflows/publish.yml +++ b/.gitea/workflows/publish.yml @@ -31,19 +31,22 @@ jobs: apt install -y ./google-chrome*.deb; export CHROME_BIN=/usr/bin/google-chrome + # Deploy tooling is pinned to exact versions: the workflow builds whatever + # is committed, and an unpinned `latest` would let a breaking or + # compromised upstream release ship straight to the live site. - name: Install Surfer run: | - npm -g install cloudron-surfer + npm -g install cloudron-surfer@6.4.1 - name: build site run: | - pip install mkdocs - pip install mkdocs-material - pip install fontawesome_markdown - pip install mkdocs-redirects + pip install mkdocs==1.6.1 + pip install mkdocs-material==9.7.7 + pip install fontawesome_markdown==0.2.6 + pip install mkdocs-redirects==1.2.3 mkdocs build --clean mkdir site/slides - npx @marp-team/marp-cli slides/innovation/innovation.md -o ./site/slides/innovation/index.html - npx @marp-team/marp-cli slides/if/if.md -o site/if.pdf --allow-local-files --html=true + npx @marp-team/marp-cli@4.5.1 slides/innovation/innovation.md -o ./site/slides/innovation/index.html + npx @marp-team/marp-cli@4.5.1 slides/if/if.md -o site/if.pdf --allow-local-files --html=true - name: Deploy docs run: surfer put --token ${{ secrets.SURFERKEY }} --server docs.datacontroller.io site/* / diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..ca82182 --- /dev/null +++ b/.npmrc @@ -0,0 +1,11 @@ +# npm configuration for this repo's CI and local installs. +# +# ignore-scripts keeps package install scripts (an arbitrary-code execution +# point) from running during the deploy workflow. Both npm packages the +# workflow installs - cloudron-surfer and @marp-team/marp-cli - ship no +# install, preinstall or postinstall hook, so nothing is skipped. +# +# save-exact pins anything installed from here to an exact version rather than +# a caret range. +ignore-scripts=true +save-exact=true