Skip to content

Commit e2a870b

Browse files
kahoona77cesmarvin
authored andcommitted
Merge branch 'release/v14.15-1'
2 parents b9ca834 + c72bdc8 commit e2a870b

16 files changed

+306
-24
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [v14.15-1] - 2025-01-23
11+
### Changed
12+
- [#42] Update Makefiles to 9.5.0
13+
- [#42] Update postgresql to 14.15
14+
- [#42] Add migration checker to post-upgrade.sh
15+
- The migration checker fixes potentially corrupt data in postgres, due to bugfixes in postgres itself
16+
1017
## [v14.13-1] - 2024-11-13
1118
### Changed
1219
- [#40] Update postgresql to v14.13

Dockerfile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM registry.cloudogu.com/official/base:3.20.2-1 as builder
1+
FROM registry.cloudogu.com/official/base:3.21.0-1 as builder
22

33
ENV GOSU_SHA256=bbc4136d03ab138b1ad66fa4fc051bafc6cc7ffae632b069a53657279a450de3
44

@@ -15,15 +15,15 @@ RUN set -x -o errexit \
1515
&& echo "${GOSU_SHA256} */build/usr/local/bin/gosu" | sha256sum -c - \
1616
&& chmod +x /build/usr/local/bin/gosu
1717

18-
FROM registry.cloudogu.com/official/base:3.20.2-1
18+
FROM registry.cloudogu.com/official/base:3.21.0-1
1919

2020
LABEL NAME="official/postgresql" \
21-
VERSION="14.13-1" \
21+
VERSION="14.15-1" \
2222
maintainer="[email protected]"
2323

2424
ENV LANG=en_US.utf8 \
2525
PGDATA=/var/lib/postgresql \
26-
POSTGRESQL_VERSION=14.13-r0
26+
POSTGRESQL_VERSION=14.15-r0
2727

2828
RUN set -x -o errexit \
2929
&& set -o nounset \

Jenkinsfile

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!groovy
2-
@Library(['github.com/cloudogu/ces-build-lib@2.2.1', 'github.com/cloudogu/dogu-build-lib@v2.5.0'])
2+
@Library(['github.com/cloudogu/ces-build-lib@4.0.1', 'github.com/cloudogu/dogu-build-lib@v3.0.0'])
33
import com.cloudogu.ces.cesbuildlib.*
44
import com.cloudogu.ces.dogubuildlib.*
55

@@ -45,11 +45,13 @@ node('vagrant') {
4545
parameters([
4646
booleanParam(defaultValue: false, description: 'Test dogu upgrade from latest release or optionally from defined version below', name: 'TestDoguUpgrade'),
4747
string(defaultValue: '', description: 'Old Dogu version for the upgrade test (optional; e.g. 4.1.0-3)', name: 'OldDoguVersionForUpgradeTest'),
48+
booleanParam(defaultValue: true, description: 'Enables cypress to take screenshots of failing integration tests.', name: 'EnableScreenshotRecording'),
49+
choice(name: 'TrivySeverityLevels', choices: [TrivySeverityLevel.CRITICAL, TrivySeverityLevel.HIGH_AND_ABOVE, TrivySeverityLevel.MEDIUM_AND_ABOVE, TrivySeverityLevel.ALL], description: 'The levels to scan with trivy', defaultValue: TrivySeverityLevel.CRITICAL),
50+
choice(name: 'TrivyStrategy', choices: [TrivyScanStrategy.UNSTABLE, TrivyScanStrategy.FAIL, TrivyScanStrategy.IGNORE], description: 'Define whether the build should be unstable, fail or whether the error should be ignored if any vulnerability was found.', defaultValue: TrivyScanStrategy.UNSTABLE),
4851
])
4952
])
5053

5154
EcoSystem ecoSystem = new EcoSystem(this, 'gcloud-ces-operations-internal-packer', 'jenkins-gcloud-ces-operations-internal')
52-
Trivy trivy = new Trivy(this, ecoSystem)
5355

5456
try {
5557
stage('Provision') {
@@ -69,13 +71,20 @@ node('vagrant') {
6971
}
7072

7173
stage('Build') {
74+
// change namespace to prerelease_namespace if in develop-branch
75+
if (gitflow.isPreReleaseBranch()) {
76+
ecoSystem.vagrant.ssh "cd /dogu && make prerelease_namespace"
77+
}
7278
ecoSystem.build(doguDirectory)
7379
}
7480

7581
stage('Trivy scan') {
76-
trivy.scanDogu("/dogu", TrivyScanFormat.HTML, TrivyScanLevel.CRITICAL, TrivyScanStrategy.UNSTABLE)
77-
trivy.scanDogu("/dogu", TrivyScanFormat.JSON, TrivyScanLevel.CRITICAL, TrivyScanStrategy.UNSTABLE)
78-
trivy.scanDogu("/dogu", TrivyScanFormat.PLAIN, TrivyScanLevel.CRITICAL, TrivyScanStrategy.UNSTABLE)
82+
ecoSystem.copyDoguImageToJenkinsWorker("/dogu")
83+
Trivy trivy = new Trivy(this)
84+
trivy.scanDogu(".", params.TrivySeverityLevels, params.TrivyStrategy)
85+
trivy.saveFormattedTrivyReport(TrivyScanFormat.TABLE)
86+
trivy.saveFormattedTrivyReport(TrivyScanFormat.JSON)
87+
trivy.saveFormattedTrivyReport(TrivyScanFormat.HTML)
7988
}
8089

8190
stage('Verify') {
@@ -93,21 +102,22 @@ node('vagrant') {
93102
}
94103

95104
if (gitflow.isReleaseBranch()) {
96-
String releaseVersion = git.getSimpleBranchName()
97-
105+
String releaseVersion = git.getSimpleBranchName();
98106
stage('Finish Release') {
99107
gitflow.finishRelease(releaseVersion)
100108
}
101-
102109
stage('Push Dogu to registry') {
103-
ecoSystem.push(doguDirectory)
110+
ecoSystem.push("/dogu")
104111
}
105-
106-
stage ('Add Github-Release') {
112+
stage('Add Github-Release') {
107113
github.createReleaseWithChangelog(releaseVersion, changelog)
108114
}
115+
} else if (gitflow.isPreReleaseBranch()) {
116+
// push to registry in prerelease_namespace
117+
stage('Push Prerelease Dogu to registry') {
118+
ecoSystem.pushPreRelease("/dogu")
119+
}
109120
}
110-
111121
} finally {
112122
stage('Clean') {
113123
ecoSystem.destroy()

Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
MAKEFILES_VERSION=9.2.0
1+
MAKEFILES_VERSION=9.5.0
22

33
.DEFAULT_GOAL:=dogu-release
44

@@ -7,3 +7,4 @@ include build/make/self-update.mk
77
include build/make/release.mk
88
include build/make/bats.mk
99
include build/make/k8s-dogu.mk
10+
include build/make/prerelease.mk

build/make/build.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
ADDITIONAL_LDFLAGS?=-extldflags -static
44
LDFLAGS?=-ldflags "$(ADDITIONAL_LDFLAGS) -X main.Version=$(VERSION) -X main.CommitID=$(COMMIT_ID)"
55
GOIMAGE?=golang
6-
GOTAG?=1.22
6+
GOTAG?=1.23
77
GOOS?=linux
88
GOARCH?=amd64
99
PRE_COMPILE?=

build/make/k8s-dogu.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
apiVersion: k8s.cloudogu.com/v1
1+
apiVersion: k8s.cloudogu.com/v2
22
kind: Dogu
33
metadata:
44
name: NAME

build/make/k8s.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ ${K8S_RESOURCE_TEMP_FOLDER}:
138138
##@ K8s - Docker
139139

140140
.PHONY: docker-build
141-
docker-build: check-docker-credentials check-k8s-image-env-var ## Builds the docker image of the K8s app.
141+
docker-build: check-docker-credentials check-k8s-image-env-var ${BINARY_YQ} ## Builds the docker image of the K8s app.
142142
@echo "Building docker image $(IMAGE)..."
143143
@DOCKER_BUILDKIT=1 docker build . -t $(IMAGE)
144144

build/make/prerelease.mk

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# used to create switch the dogu to a prerelease namespace
2+
# e.g. official/usermgmt -> prerelease_official/usermgmt
3+
4+
.PHONY: prerelease_namespace
5+
prerelease_namespace:
6+
build/make/stagex.sh prerelease_namespace

build/make/prerelease.sh

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/bin/bash
2+
set -o errexit
3+
set -o nounset
4+
set -o pipefail
5+
6+
prerelease_namespace() {
7+
8+
# Update version in dogu.json
9+
if [ -f "dogu.json" ]; then
10+
echo "Updating name in dogu.json..."
11+
ORIG_NAME="$(jq -r ".Name" ./dogu.json)"
12+
PRERELEASE_NAME="prerelease_${ORIG_NAME}"
13+
jq ".Name = \"${PRERELEASE_NAME}\"" dogu.json >dogu2.json && mv dogu2.json dogu.json
14+
jq ".Image = \"registry.cloudogu.com/${PRERELEASE_NAME}\"" dogu.json >dogu2.json && mv dogu2.json dogu.json
15+
fi
16+
17+
# Update version in Dockerfile
18+
if [ -f "Dockerfile" ]; then
19+
echo "Updating version in Dockerfile..."
20+
ORIG_NAME="$(grep -oP "^[ ]*NAME=\"([^\"]*)" Dockerfile | awk -F "\"" '{print $2}')"
21+
PRERELEASE_NAME="prerelease_$( echo -e "$ORIG_NAME" | sed 's/\//\\\//g' )"
22+
sed -i "s/\(^[ ]*NAME=\"\)\([^\"]*\)\(.*$\)/\1${PRERELEASE_NAME}\3/" Dockerfile
23+
fi
24+
25+
}
26+
27+
28+
TYPE="${1}"
29+
30+
echo ${TYPE}
31+
if [[ "${TYPE}" == "prerelease_namespace" ]];then
32+
prerelease_namespace
33+
fi

build/make/release.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ fi
5656

5757
update_versions "${NEW_RELEASE_VERSION}"
5858
update_changelog "${NEW_RELEASE_VERSION}" "${FIXED_CVE_LIST}"
59+
update_releasenotes "${NEW_RELEASE_VERSION}"
5960
show_diff
6061

6162
if [[ -n "${DRY_RUN}" ]]; then

build/make/release_functions.sh

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,50 @@ update_changelog() {
207207
git commit -m "Update changelog"
208208
}
209209

210+
update_releasenotes() {
211+
local NEW_RELEASE_VERSION="${1}"
212+
213+
# ReleaseNotes update
214+
local CURRENT_DATE
215+
CURRENT_DATE=$(date --rfc-3339=date)
216+
local NEW_RELEASENOTE_TITLE="## [v${NEW_RELEASE_VERSION}] - ${CURRENT_DATE}"
217+
rm -rf ".rn_changed"
218+
find . -name "*release_notes*.md" -print0 | while read -d $'\0' file
219+
do
220+
# Check if "Unreleased" tag exists
221+
while ! grep --silent "## \[Unreleased\]" "${file}"; do
222+
echo ""
223+
echo -e "\e[31mYour ${file} does not contain a \"## [Unreleased]\" line!\e[0m"
224+
echo "Please add one to make it comply to https://keepachangelog.com/en/1.0.0/"
225+
wait_for_ok "Please insert a \"## [Unreleased]\" line into ${file} now."
226+
done
227+
228+
# Add new title line to changelog
229+
sed -i "s|## \[Unreleased\]|## \[Unreleased\]\n\n${NEW_RELEASENOTE_TITLE}|g" "${file}"
230+
echo "Processed ${file}"
231+
echo true > ".rn_changed"
232+
done
233+
234+
if test -f ".rn_changed" ; then
235+
# Wait for user to validate changelog changes
236+
wait_for_ok "Please make sure your release notes looks as desired."
237+
238+
find . -name "*release_notes*.md" -print0 | while read -d $'\0' file
239+
do
240+
# Check if new version tag still exists
241+
while ! grep --silent "$(echo $NEW_RELEASENOTE_TITLE | sed -e 's/[]\/$*.^[]/\\&/g')" "${file}"; do
242+
echo ""
243+
echo -e "\e[31mYour ${file} does not contain \"${NEW_RELEASENOTE_TITLE}\"!\e[0m"
244+
wait_for_ok "Please update your ${file} now."
245+
done
246+
git add "${file}"
247+
done
248+
249+
git commit -m "Update ReleaseNotes"
250+
fi
251+
rm -rf ".rn_changed"
252+
}
253+
210254
# addFixedCVEListFromReRelease is used in dogu cve releases. The method adds the fixed CVEs under the ### Fixed header
211255
# in the unreleased section.
212256
addFixedCVEListFromReRelease() {

build/make/self-update.mk

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,9 @@ remove-old-files:
1919

2020
.PHONY: copy-new-files
2121
copy-new-files:
22-
@cp -r $(TMP_DIR)/makefiles-$(MAKEFILES_VERSION)/build/make $(BUILD_DIR)
22+
@cp -r $(TMP_DIR)/makefiles-$(MAKEFILES_VERSION)/build/make $(BUILD_DIR)
23+
24+
.PHONY: update-build-libs
25+
update-build-libs:
26+
@echo "Check for newer Build-Lib versions"
27+
build/make/self-update.sh buildlibs

build/make/self-update.sh

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#!/bin/bash
2+
set -o errexit
3+
set -o nounset
4+
set -o pipefail
5+
6+
TYPE="${1}"
7+
8+
update_build_libs() {
9+
echo "Get newest version of ces-build-lib and dogu-build-lib"
10+
update_jenkinsfile
11+
echo "Newest Versions set. Please check your Jenkinsfile"
12+
}
13+
14+
get_highest_version() {
15+
local target="${1}"
16+
local gitCesBuildLib
17+
# getting tags from ces-build.libs OR dogu-build-libs
18+
gitCesBuildLib="$(git ls-remote --tags --refs https://github.com/cloudogu/${target}-build-lib)"
19+
local highest
20+
# Flagfile for getting results out of while-loop
21+
rm -rf .versions
22+
while IFS= read -r line; do
23+
local version
24+
version="$(awk -F'/tags/' '{ for(i=1;i<=NF;i++) print $i }' <<< $line | tail -n 1 | sed 's/[^0-9\.]*//g')"
25+
if [[ $version == *"."* ]] ; then
26+
echo $version >> ".versions"
27+
fi
28+
done <<< "$gitCesBuildLib"
29+
highest=$(sort .versions | tail -n 1)
30+
rm -rf .versions
31+
echo "${highest}"
32+
}
33+
34+
# Patch Jenkinsfile
35+
update_jenkinsfile() {
36+
sed -i "s/ces-build-lib@[[:digit:]].[[:digit:]].[[:digit:]]/ces-build-lib@$(get_highest_version ces)/g" Jenkinsfile
37+
sed -i "s/dugu-build-lib@[[:digit:]].[[:digit:]].[[:digit:]]/dogu-build-lib@$(get_highest_version dogu)/g" Jenkinsfile
38+
}
39+
40+
# switch for script entrypoint
41+
if [[ "${TYPE}" == "buildlibs" ]];then
42+
update_build_libs
43+
else
44+
echo "Unknown target ${TYPE}"
45+
fi
46+
47+
48+

build/make/static-analysis.mk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22

33
STATIC_ANALYSIS_DIR=$(TARGET_DIR)/static-analysis
44
GOIMAGE?=golang
5-
GOTAG?=1.22
5+
GOTAG?=1.23
66
CUSTOM_GO_MOUNT?=-v /tmp:/tmp
77

88
REVIEW_DOG=$(TMP_DIR)/bin/reviewdog
99
LINT=$(TMP_DIR)/bin/golangci-lint
10-
LINT_VERSION?=v1.58.2
10+
LINT_VERSION?=v1.61.0
1111
# ignore tests and mocks
1212
LINTFLAGS=--tests=false --exclude-files="^.*_mock.go$$" --exclude-files="^.*/mock.*.go$$" --timeout 10m --issues-exit-code 0
1313
ADDITIONAL_LINTER=-E bodyclose -E containedctx -E contextcheck -E decorder -E dupl -E errname -E forcetypeassert -E funlen -E unparam

dogu.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"Name": "official/postgresql",
3-
"Version": "14.13-1",
3+
"Version": "14.15-1",
44
"DisplayName": "PostgreSQL",
55
"Description": "PostgreSQL Database.",
66
"Url": "https://www.postgresql.org/",
@@ -42,6 +42,10 @@
4242
"Name": "pre-upgrade",
4343
"Command": "/pre-upgrade.sh"
4444
},
45+
{
46+
"Name": "post-upgrade",
47+
"Command": "/post-upgrade.sh"
48+
},
4549
{
4650
"Name": "backup-consumer",
4751
"Command": "/backup-consumer.sh"

0 commit comments

Comments
 (0)