-
To give some context, we build images based on given Megalinter release's source (not the docker image) to use on our CI. This has generally worked very well for us, and we are currently basing our image on the megalinter v7.9.0 release. However, we recently had to rebuild the image (without updating the base megalinter version) to try and make it work with golang 1.22 and then ran into this markdown-link-check issue which appeared as a regression in markdown-link-check 3.12.0. According to the megalinter releases, markdown-link-check was updated from 3.11.2 to 3.12.1 in v7.11.0, however as noted above we have not updated the megalinter base, only rebuilt the image. This lead me to dig a little in the main Some questions relating to this:
|
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 17 replies
-
@cpotteck maintainers and contributors of linters are very active and often release many versions :) Everyday, there is an automated job building again the docker image, and if it detects new versions, it generates a Pull Request that we manually validate after checking (example: #3523) The linters who have pinned versions are either downgraded, either for some reason we did not find a way to use "latest".
If you really want to pin linter versions, you could submit a PR that refactors descriptors to variabilizes versions into ARG values (with default: latest) , and you could override the ones you want by sending parameters to docker build. Out of curiosity, what are you building over MegaLinter Dockerfiles ? :) |
Beta Was this translation helpful? Give feedback.
-
That is a long term improvement I'd like to see happening too! I've always wanted to be able to rebuild a specific image version at a later point in time. Originally, it has been a limitation of the tools we had available to make the upgrades of each linter in a manageable way. That meant that most (if not all) installed software have no pinned version, but the custom auto update workflow runs each day and collects the versions and generates the docs for it. Dependabot isn't really an option here, since the Dockerfiles result from the descriptors that describe the linters, how to install them, and how to use them, not a file of a specific package manager. Now, I think it might be possible to have a better solution with renovate. Recently I learned that it is possible to define a custom manager, that can use regex to find the information to keep up to date, with the existing data sources. https://docs.renovatebot.com/modules/manager/regex/ It might be a big job, but at least with this, it would be possible to update the source files (and the resulting files) in one pass, instead of having updates of the resulting files and having to go back and apply manually the change in the descriptor and rebuild. Of course we'd be glad to have a PR for this, even to test out a single installation type. (Maybe docker would be the easiest?) I don't mind if it requires adding autogenerated markers in the Dockerfiles or other to help out map the result back to the source. The solution could also only update the versions in the descriptors, and the auto-update job only to keep the results file in sync. Do you imagine something more robust for this? It simply needs to stay manageable in terms of maintenance time. |
Beta Was this translation helpful? Give feedback.
@cpotteck maintainers and contributors of linters are very active and often release many versions :)
We are a small maintenance team so... the reason to not pin versions is ... laziness: we like to focus our efforts on tasks with added value !
Everyday, there is an automated job building again the docker image, and if it detects new versions, it generates a Pull Request that we manually validate after checking (example: #3523)
The linters who have pinned versions are either downgraded, either for some reason we did not find a way to use "latest".
For those ones, either: