cabforum / build-guidelines-action

Action to build Pandoc-flavored Guidelines into their final form
0 stars 3 forks source link

Update Action #2

Closed sleevi closed 3 years ago

sleevi commented 3 years ago

The action is currently failing because it's built on demand (i.e. not published to Docker Hub or GitHub Packages), and so it is built on demand.

The current Pandoc base image being used by the 2.0.0-rc1 has an older tlmgr, and as a result, the initial image building step fails due to needing to update tlmgr.

This adds a step to explicitly update tlmgr as part of building the image. However, it also updates the base Pandoc image further than 2.0-RC (which also/alternatively resolves this issue), in order to take advantage of the Latex writer now supporting multi-column/multi-row tables.

In order to make sure such changes are safe in the future, it also introduces a base set of unit tests that build a PDF, a DOCX, a PDF redline, and lints for broken links, testing the core functionality of the action, and wires them up to GitHub Actions.

sleevi commented 3 years ago

@cabforum/infrastructure-subcommittee Does someone with familiarity with (Makefiles, Docker) want to take a look?

I'm still working through how to publish the image (which would have avoided this issue entirely, by being a static image with all the dependencies), but in the interim, this unblocks the further Pandoc cleanup work and is something I'll update the SCWG repository to use once this is merged.

Alternatively, if you're fine with me just squash-and-merging (i.e. you don't want/can't review, but don't object to me just landing), feel free to add a 👍 reaction to this comment.

jsha commented 3 years ago

The action is currently failing because it's built on demand (i.e. not published to Docker Hub or GitHub Packages), and so it is built on demand.

I don't follow the meaning of the ", and so it is built on demand."

The current Pandoc base image being used by the 2.0 RC has an older tlmgr, and as a result, the initial image building step fails due to needing to update tlmgr.

What does "the 2.0 RC" refer to?

sleevi commented 3 years ago

I don't follow the meaning of the ", and so it is built on demand."

Right now, every time the documents are built ( in https://github.com/cabforum/servercert ), it runs "docker build" on the Dockerfile, and then uses that resulting image to run the step.

The Docker build command relies on tlmgr to install the necessary packages, and the issues is none of the documents can currently be built, because the tlmgr used as part of building the image is out of date. This would be similar to, say, if PyPy was out of date. Even though PyPy would be fetching a specific versioned package, thus giving a deterministic build, PyPy failing to run breaks the whole thing. That's effectively what's happening here. Updating the version of the Pandoc Docker image used updates the version of tlmgr (resolving it), as does the tlmgr update (so they're mutually independent solutions).

Long term, publishing the image on Docker Hub or GitHub Packages provides a static, canonical image with all of the dependencies, without having to fetch-and-build for every doc compile.

The current Pandoc base image being used by the 2.0 RC has an older tlmgr, and as a result, the initial image building step fails due to needing to update tlmgr.

What does "the 2.0 RC" refer to?

https://github.com/cabforum/build-guidelines-action/releases/tag/v2.0.0-rc1