Skip to content

Commit

Permalink
Merge branch 'release/2.1.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
robertauer committed Jan 29, 2024
2 parents 033ca05 + 4ded402 commit 510c88d
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 20 deletions.
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [2.1.0](https://github.com/cloudogu/ces-build-lib/releases/tag/2.1.0) - 2024-01-29
### Fixed
- [#120] K3d cluster is now able to run system calls used in go 1.21;
- See https://github.com/docker-library/golang/issues/467

### Changed
- [#120] Updated k3d to `5.6.0`
- [#120] Updated k3s image to `rancher/k3s:v1.28.5-k3s1`
- Updated yq to `4.40.5`
- Fix yq output when using JSON-input from dogu.json; #122

## [2.0.1](https://github.com/cloudogu/ces-build-lib/releases/tag/2.0.1) - 2023-12-11
### Fixed
- Add missing values.yaml as argument to helm install of k8s-ces-setup
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ Jenkins Pipeline Shared library, that contains additional features for Git, Mave
* Install [Pipeline: GitHub Groovy Libraries](https://wiki.jenkins.io/display/JENKINS/Pipeline+GitHub+Library+Plugin)
* Use the Library in any Jenkinsfile like so
```
@Library('github.com/cloudogu/ces-build-lib@2.0.1')
@Library('github.com/cloudogu/ces-build-lib@2.1.0')
import com.cloudogu.ces.cesbuildlib.*
```
* Best practice: Use a defined version (e.g. a git commit hash or a git tag, such as `6cd41e0` or `1.67.0` in the example above) and not a branch such as `develop`. Otherwise, your build might change when the there is a new commit on the branch. Using branches is like using snapshots!
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<groupId>com.cloudogu.ces</groupId>
<artifactId>ces-build-lib</artifactId>
<name>ces-build-lib</name>
<version>2.0.1</version>
<version>2.1.0</version>


<properties>
Expand Down
22 changes: 11 additions & 11 deletions src/com/cloudogu/ces/cesbuildlib/K3d.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ class K3d {
/**
* The image of the k3s version defining the targeted k8s version
*/
private static String K8S_IMAGE = "rancher/k3s:v1.21.2-k3s1"
private static String K8S_IMAGE = "rancher/k3s:v1.28.5-k3s1"
/**
* The version of k3d to be installed
*/
private static String K3D_VERSION = "4.4.7"
private static String K3D_VERSION = "5.6.0"
private static String K3D_LOG_FILENAME = "k8sLogs"
private static String K3D_SETUP_JSON_FILE = "k3d_setup.json"
private static String K3D_VALUES_YAML_FILE = "k3d_values.yaml"
private static String YQ_VERSION = "4.40.4"
private static String YQ_VERSION = "4.40.5"

private String clusterName
private script
Expand Down Expand Up @@ -139,17 +139,17 @@ class K3d {
private void initializeCluster() {
script.sh "k3d cluster create ${clusterName} " +
// Allow services to bind to ports < 30000
" --k3s-server-arg=--kube-apiserver-arg=service-node-port-range=8010-32767 " +
" --k3s-arg=--kube-apiserver-arg=service-node-port-range=8010-32767@all:* " +
// Used by Jenkins Agents pods
" -v /var/run/docker.sock:/var/run/docker.sock@server[0] " +
" -v /var/run/docker.sock:/var/run/docker.sock@server:0 " +
// Allows for finding out the GID of the docker group in order to allow the Jenkins agents pod to access docker socket
" -v /etc/group:/etc/group@server[0] " +
" -v /etc/group:/etc/group@server:0 " +
// Persists the cache of Jenkins agents pods for faster builds
" -v /tmp:/tmp@server[0] " +
" -v /tmp:/tmp@server:0 " +
// Disable traefik (no ingresses used so far)
" --k3s-server-arg=--disable=traefik " +
" --k3s-arg=--disable=traefik@all:* " +
// Disable servicelb (avoids "Pending" svclb pods and we use nodePorts right now anyway)
" --k3s-server-arg=--disable=servicelb " +
" --k3s-arg=--disable=servicelb@all:* " +
// Pin k8s version to 1.21.2
" --image=${K8S_IMAGE} " +
// Use our k3d registry
Expand Down Expand Up @@ -389,8 +389,8 @@ spec:
docker.image("mikefarah/yq:${YQ_VERSION}")
.mountJenkinsUser()
.inside("--volume ${this.workspace}:/workdir -w /workdir") {
imageDev = this.sh.returnStdOut("yq -e '.Image' dogu.json | sed 's|registry\\.cloudogu\\.com\\(.\\+\\)|${imageUrl}.local:${port}\\1|g'")
script.sh "yq '.Image=\"${imageDev}\"' dogu.json > ${doguJsonDevFile}"
imageDev = this.sh.returnStdOut("yq -oy -e '.Image' dogu.json | sed 's|registry\\.cloudogu\\.com\\(.\\+\\)|${imageUrl}.local:${port}\\1|g'")
script.sh "yq -oj '.Image=\"${imageDev}\"' dogu.json > ${doguJsonDevFile}"
}
kubectl("create configmap ${dogu}-descriptor --from-file=${doguJsonDevFile}")
}
Expand Down
14 changes: 7 additions & 7 deletions test/com/cloudogu/ces/cesbuildlib/K3dTest.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ class K3dTest extends GroovyTestCase {
void testStartK3d() {
def workspaceDir = "leWorkspace"
def k3dWorkspaceDir = "leK3dWorkSpace"
def k3dVer = "4.4.7"
def expectedK3dVer = "5.6.0"

def scriptMock = new ScriptMock()
scriptMock.expectedShRetValueForScript.put('echo -n $(python3 -c \'import socket; s=socket.socket(); s.bind(("", 0)); print(s.getsockname()[1]); s.close()\');'.toString(), "54321")
Expand All @@ -98,7 +98,7 @@ class K3dTest extends GroovyTestCase {

assertThat(scriptMock.allActualArgs[0].trim()).isEqualTo("rm -rf ${k3dWorkspaceDir}/.k3d".toString())
assertThat(scriptMock.allActualArgs[1].trim()).isEqualTo("mkdir -p ${k3dWorkspaceDir}/.k3d/bin".toString())
assertThat(scriptMock.allActualArgs[2].trim()).isEqualTo("curl -s https://raw.githubusercontent.com/rancher/k3d/main/install.sh | TAG=v${k3dVer} K3D_INSTALL_DIR=${k3dWorkspaceDir}/.k3d/bin bash -s -- --no-sudo".toString())
assertThat(scriptMock.allActualArgs[2].trim()).isEqualTo("curl -s https://raw.githubusercontent.com/rancher/k3d/main/install.sh | TAG=v${expectedK3dVer} K3D_INSTALL_DIR=${k3dWorkspaceDir}/.k3d/bin bash -s -- --no-sudo".toString())
assertThat(scriptMock.allActualArgs[3].trim()).isEqualTo("echo -n \$(python3 -c 'import socket; s=socket.socket(); s.bind((\"\", 0)); print(s.getsockname()[1]); s.close()');")
assertThat(scriptMock.allActualArgs[4].trim()).matches("k3d registry create citest-[0-9a-f]+ --port 54321")
assertThat(scriptMock.allActualArgs[5].trim()).startsWith("k3d cluster create citest-")
Expand All @@ -124,7 +124,7 @@ class K3dTest extends GroovyTestCase {
void testStartK3dWithCustomCredentials() {
def workspaceDir = "leWorkspace"
def k3dWorkspaceDir = "path"
def k3dVer = "4.4.7"
def expectedK3dVer = "5.6.0"

def scriptMock = new ScriptMock()
scriptMock.expectedShRetValueForScript.put('echo -n $(python3 -c \'import socket; s=socket.socket(); s.bind(("", 0)); print(s.getsockname()[1]); s.close()\');'.toString(), "54321")
Expand All @@ -135,7 +135,7 @@ class K3dTest extends GroovyTestCase {

assertThat(scriptMock.allActualArgs[0].trim()).isEqualTo("rm -rf ${k3dWorkspaceDir}/.k3d".toString())
assertThat(scriptMock.allActualArgs[1].trim()).isEqualTo("mkdir -p ${k3dWorkspaceDir}/.k3d/bin".toString())
assertThat(scriptMock.allActualArgs[2].trim()).isEqualTo("curl -s https://raw.githubusercontent.com/rancher/k3d/main/install.sh | TAG=v${k3dVer} K3D_INSTALL_DIR=${k3dWorkspaceDir}/.k3d/bin bash -s -- --no-sudo".toString())
assertThat(scriptMock.allActualArgs[2].trim()).isEqualTo("curl -s https://raw.githubusercontent.com/rancher/k3d/main/install.sh | TAG=v${expectedK3dVer} K3D_INSTALL_DIR=${k3dWorkspaceDir}/.k3d/bin bash -s -- --no-sudo".toString())
assertThat(scriptMock.allActualArgs[3].trim()).isEqualTo("echo -n \$(python3 -c 'import socket; s=socket.socket(); s.bind((\"\", 0)); print(s.getsockname()[1]); s.close()');")
assertThat(scriptMock.allActualArgs[4].trim()).matches("k3d registry create citest-[0-9a-f]+ --port 54321")
assertThat(scriptMock.allActualArgs[5].trim()).startsWith("k3d cluster create citest-")
Expand Down Expand Up @@ -319,7 +319,7 @@ class K3dTest extends GroovyTestCase {
scriptMock.expectedShRetValueForScript.put("docker inspect " + prefixedRegistryName, exampleDockerInspect)
scriptMock.expectedShRetValueForScript.put("echo '" + exampleDockerInspect + "' | yq '.[].NetworkSettings.Networks." + prefixedRegistryName + ".IPAddress'", "192.168.32.2")
scriptMock.expectedShRetValueForScript.put("echo '" + exampleDockerInspect + "' | yq '.[].Config.Labels.\"k3s.registry.port.internal\"'", port)
scriptMock.expectedShRetValueForScript.put("yq -e '.Image' dogu.json | sed 's|registry\\.cloudogu\\.com\\(.\\+\\)|" + "myIP" + ".local:" + port + "\\1|g'", "myIP.local:5000/test/myimage:0.1.2")
scriptMock.expectedShRetValueForScript.put("yq -oy -e '.Image' dogu.json | sed 's|registry\\.cloudogu\\.com\\(.\\+\\)|" + "myIP" + ".local:" + port + "\\1|g'", "myIP.local:5000/test/myimage:0.1.2")
scriptMock.expectedShRetValueForScript.put("sudo KUBECONFIG=leK3dWorkSpace/.k3d/.kube/config kubectl get pod --template '{{range .items}}{{.metadata.name}}{{\"\\n\"}}{{end}}'", "test-execpod")
scriptMock.expectedShRetValueForScript.put("echo 'test-execpod' | grep 'test-execpod'", "test-execpod")
scriptMock.expectedShRetValueForScript.put("sudo KUBECONFIG=leK3dWorkSpace/.k3d/.kube/config kubectl get deployment --template '{{range .items}}{{.metadata.name}}{{\"\\n\"}}{{end}}'", "test")
Expand Down Expand Up @@ -348,8 +348,8 @@ spec:
assertThat(scriptMock.allActualArgs[6].trim()).isEqualTo("sudo KUBECONFIG=leK3dWorkSpace/.k3d/.kube/config kubectl rollout restart -n kube-system deployment/coredns")
assertThat(scriptMock.allActualArgs[7].trim()).isEqualTo("whoami")
assertThat(scriptMock.allActualArgs[8].trim()).isEqualTo("cat /etc/passwd | grep itsme")
assertThat(scriptMock.allActualArgs[9].trim()).isEqualTo("yq -e '.Image' dogu.json | sed 's|registry\\.cloudogu\\.com\\(.\\+\\)|myIP.local:5000\\1|g'")
assertThat(scriptMock.allActualArgs[10].trim()).isEqualTo("yq '.Image=\"myIP.local:5000/test/myimage:0.1.2\"' dogu.json > leWorkspace/target/dogu.json")
assertThat(scriptMock.allActualArgs[9].trim()).isEqualTo("yq -oy -e '.Image' dogu.json | sed 's|registry\\.cloudogu\\.com\\(.\\+\\)|myIP.local:5000\\1|g'")
assertThat(scriptMock.allActualArgs[10].trim()).isEqualTo("yq -oj '.Image=\"myIP.local:5000/test/myimage:0.1.2\"' dogu.json > leWorkspace/target/dogu.json")
assertThat(scriptMock.allActualArgs[11].trim()).isEqualTo("sudo KUBECONFIG=leK3dWorkSpace/.k3d/.kube/config kubectl create configmap test-descriptor --from-file=leWorkspace/target/dogu.json")
assertThat(scriptMock.allActualArgs[12].trim()).isEqualTo("sudo KUBECONFIG=leK3dWorkSpace/.k3d/.kube/config kubectl apply -f \n" +
"apiVersion: k8s.cloudogu.com/v1\n" +
Expand Down

0 comments on commit 510c88d

Please sign in to comment.