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()
}
}