diff --git a/CHANGELOG.md b/CHANGELOG.md index fce0ff0..7d31d34 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.64.0](https://github.com/cloudogu/ces-build-lib/releases/tag/1.64.0) - 2023-04-11 +## Added +- Add parameter to configure version for markdown link checker #100. + ## [1.63.0](https://github.com/cloudogu/ces-build-lib/releases/tag/1.63.0) - 2023-02-16 ## Fixed - A bug with SonarCloud where an error was thrown because a private field was accessed (#99) diff --git a/README.md b/README.md index 9026abf..5fa25ce 100644 --- a/README.md +++ b/README.md @@ -1147,10 +1147,18 @@ Example: markdown.check() ``` + `markdown.check` executes the function defined in `Markdown` running a container with the latest https://github.com/tcort/markdown-link-check image and verifies that the links in the defined project directory are alive +Additionally, the markdown link checker can be used with a specific version (default: stable). + +```groovy + Markdown markdown = new Markdown(this, "3.11.0") + markdown.check() +``` + ### DockerLint ```groovy diff --git a/pom.xml b/pom.xml index 8688714..aef92a4 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.cloudogu.ces ces-build-lib ces-build-lib - 1.63.0 + 1.64.0 UTF-8 diff --git a/src/com/cloudogu/ces/cesbuildlib/Markdown.groovy b/src/com/cloudogu/ces/cesbuildlib/Markdown.groovy index f434ece..9c9cee2 100644 --- a/src/com/cloudogu/ces/cesbuildlib/Markdown.groovy +++ b/src/com/cloudogu/ces/cesbuildlib/Markdown.groovy @@ -4,15 +4,17 @@ class Markdown implements Serializable{ Sh sh private script Docker docker + private String tag - Markdown(script) { + Markdown(script, String tag = "stable") { this.script = script this.sh = new Sh(script) this.docker = new Docker(script) + this.tag = tag } def check(){ - this.docker.image("ghcr.io/tcort/markdown-link-check:stable") + this.docker.image("ghcr.io/tcort/markdown-link-check:${this.tag}") .mountJenkinsUser() .inside("--entrypoint=\"\" -v ${this.script.env.WORKSPACE}/docs:/docs") { this.script.sh 'find /docs -name \\*.md -print0 | xargs -0 -n1 markdown-link-check -v' diff --git a/test/com/cloudogu/ces/cesbuildlib/DockerMock.groovy b/test/com/cloudogu/ces/cesbuildlib/DockerMock.groovy index 8dea4a8..4a13766 100644 --- a/test/com/cloudogu/ces/cesbuildlib/DockerMock.groovy +++ b/test/com/cloudogu/ces/cesbuildlib/DockerMock.groovy @@ -9,10 +9,14 @@ import static org.mockito.Mockito.when class DockerMock { - static Docker create() { + static Docker create(String imageTag = "") { Docker dockerMock = mock(Docker.class) Docker.Image imageMock = mock(Docker.Image.class) - when(dockerMock.image(anyString())).thenReturn(imageMock) + if (imageTag == "") { + when(dockerMock.image(anyString())).thenReturn(imageMock) + } else { + when(dockerMock.image(imageTag)).thenReturn(imageMock) + } when(imageMock.mountJenkinsUser()).thenReturn(imageMock) when(imageMock.mountJenkinsUser(anyBoolean())).thenReturn(imageMock) when(imageMock.mountDockerSocket()).thenReturn(imageMock) diff --git a/test/com/cloudogu/ces/cesbuildlib/MarkdownTest.groovy b/test/com/cloudogu/ces/cesbuildlib/MarkdownTest.groovy index 116c8b0..565338e 100644 --- a/test/com/cloudogu/ces/cesbuildlib/MarkdownTest.groovy +++ b/test/com/cloudogu/ces/cesbuildlib/MarkdownTest.groovy @@ -8,7 +8,7 @@ import static org.mockito.Mockito.verify class MarkdownTest extends GroovyTestCase { @Test void testIfDockerContainerCommandIsCalledWithCorrectArgs() { - Docker dockerMock = DockerMock.create() + Docker dockerMock = DockerMock.create("ghcr.io/tcort/markdown-link-check:stable") ScriptMock scriptMock = new ScriptMock(dockerMock) Markdown markdown = new Markdown(scriptMock) @@ -19,6 +19,22 @@ class MarkdownTest extends GroovyTestCase { assert scriptMock.allActualArgs.size() == 1 assert scriptMock.allActualArgs[0] == "find /docs -name \\*.md -print0 | xargs -0 -n1 markdown-link-check -v" - verify(dockerMock.image(""), times(1)).mountJenkinsUser() + verify(dockerMock.image("ghcr.io/tcort/markdown-link-check:stable"), times(1)).mountJenkinsUser() + } + + @Test + void testIfDockerContainerCommandIsCalledWithCorrectArgsWithMarkDownTag() { + Docker dockerMock = DockerMock.create("ghcr.io/tcort/markdown-link-check:3.11.0") + ScriptMock scriptMock = new ScriptMock(dockerMock) + Markdown markdown = new Markdown(scriptMock, "3.11.0") + + markdown.docker = dockerMock + + markdown.check() + + assert scriptMock.allActualArgs.size() == 1 + assert scriptMock.allActualArgs[0] == "find /docs -name \\*.md -print0 | xargs -0 -n1 markdown-link-check -v" + + verify(dockerMock.image("ghcr.io/tcort/markdown-link-check:3.11.0"), times(1)).mountJenkinsUser() } }