Skip to content

Commit 34cdc29

Browse files
authored
Prepare release 4.11 (#1139)
1 parent 2084fe6 commit 34cdc29

File tree

79 files changed

+1878
-200
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+1878
-200
lines changed

.github/workflows/continuous-integration-workflow.yml

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,22 @@ jobs:
8383
--build-arg nexusAuth=developer:s3cr3t \
8484
.
8585
86+
jenkins-agent-nodejs24-ubi8:
87+
name: Jenkins agent NodeJS 24 (UBI8)
88+
runs-on: ubuntu-22.04
89+
steps:
90+
-
91+
name: Checkout repository
92+
uses: actions/checkout@v4.2.2
93+
-
94+
name: Build docker image
95+
working-directory: common/jenkins-agents/nodejs24/docker
96+
run: |
97+
docker build --tag agent-nodejs24-test-ubi8 --file Dockerfile.ubi8 \
98+
--build-arg nexusUrl=https://nexus.example.com \
99+
--build-arg nexusAuth=developer:s3cr3t \
100+
.
101+
86102
jenkins-agent-python-ubi8:
87103
name: Jenkins agent Python (UBI8)
88104
runs-on: ubuntu-22.04
@@ -108,12 +124,12 @@ jobs:
108124
working-directory: common/jenkins-agents/rust/docker
109125
run: |
110126
docker build --tag agent-rust-test-ubi8 --file Dockerfile.ubi8 \
111-
--build-arg rustVersion=1.83.0 \
127+
--build-arg rustVersion=1.88.0 \
112128
--build-arg rustToolchain=x86_64-unknown-linux-gnu \
113-
--build-arg cargoNextestVersion=0.9.87 \
114-
--build-arg cargoLlvmCovVersion=0.6.15 \
115-
--build-arg cargoGenerateVersion=0.22.1 \
116-
--build-arg cargoDenyVersion=0.16.3 \
129+
--build-arg cargoNextestVersion=0.9.94 \
130+
--build-arg cargoLlvmCovVersion=0.6.16 \
131+
--build-arg cargoGenerateVersion=0.23.3 \
132+
--build-arg cargoDenyVersion=0.18.2 \
117133
.
118134
119135
jenkins-agent-terraform-2306-ubi8:
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: PR Codeowners Notification
2+
3+
on:
4+
pull_request:
5+
types: [opened, synchronize, reopened]
6+
branches:
7+
- '*.x'
8+
9+
jobs:
10+
notify-codeowners:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- name: Checkout repository
14+
uses: actions/checkout@v4.2.2
15+
16+
- name: Check for changes in CODEOWNERS paths
17+
uses: dorny/paths-filter@v3
18+
id: filter
19+
with:
20+
filters: |
21+
owned_paths:
22+
- 'e2e-cypress/**'
23+
- 'e2e-spock-geb/**'
24+
- 'e2e-etl-python/**'
25+
26+
- name: Post notification comment
27+
if: steps.filter.outputs.owned_paths == 'true'
28+
uses: actions/github-script@v7
29+
with:
30+
script: |
31+
github.rest.issues.createComment({
32+
issue_number: context.issue.number,
33+
owner: context.repo.owner,
34+
repo: context.repo.repo,
35+
body: '⚠️ **Codeowners Notification**: Changes detected in paths owned by specific users. Please ensure the following reviewers are involved/notified:\n\n' +
36+
'- @garcanam @roicarrera (for e2e-cypress, e2e-spock-geb, e2e-etl-python)\n'
37+
});

CHANGELOG.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,27 @@
44

55
### Added
66

7+
### Changed
8+
9+
### Fixed
10+
11+
## [4.11.0] - 2025-12-03
12+
13+
### Added
14+
- Added gh action for custom e2e QS notification ([#1137](https://github.com/opendevstack/ods-quickstarters/pull/1137))
15+
- Added Node.js 24 Jenkins agent and related CI/Makefile/docs updates ([#1133]) (common/jenkins-agents/nodejs24) ([#1134](https://github.com/opendevstack/ods-quickstarters/pull/1134))
716

817
### Changed
18+
- Upgrade with dynamic backend configuration of Azure quickstarter ([#1131](https://github.com/opendevstack/ods-quickstarters/pull/1131))
19+
- Rust QS flag to enable or disable cargo-deny for dependency linting, default to true ([#1107](https://github.com/opendevstack/ods-quickstarters/issues/1107))
20+
- Rust QS enable dynamic toolchain/version support ([#1119](https://github.com/opendevstack/ods-quickstarters/issues/1119))
21+
- Docker Plain Helm chart ([#1135](https://github.com/opendevstack/ods-quickstarters/pull/1135))
22+
23+
### Fixed
24+
- Fix Springboot version parameter ([#1138](https://github.com/opendevstack/ods-quickstarters/issues/1138))
25+
26+
## [4.10.0] - 2025-10-13
27+
### Changed
928

1029

1130
### Fixed
@@ -42,6 +61,7 @@
4261
## [4.8.0] - 2025-4-10
4362

4463
### Changed
64+
- Add Helm Chart to Docker Plain Quickstarter ([#1035](https://github.com/opendevstack/ods-quickstarters/pull/1035))
4565
- Update CODEOWNERS ([#1108](https://github.com/opendevstack/ods-quickstarters/issues/1108))
4666
- Fix Nginx related Quickstarters worker processes value to 1 as default ([#1092](https://github.com/opendevstack/ods-quickstarters/issues/1092))
4767
- Set Request and Limits with Ephemeral storage and Make use of Nexus in terraform agents ([#1104](https://github.com/opendevstack/ods-quickstarters/pull/1104))

Makefile

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,16 @@ ODS_NAMESPACE := $(shell grep ODS_NAMESPACE $(CURDIR)/../ods-configuration/ods-c
1111
install-jenkins-agent: install-jenkins-agent-golang install-jenkins-agent-jdk install-jenkins-agent-nodejs install-jenkins-agent-python install-jenkins-agent-scala install-jenkins-agent-terraform-2306 install-jenkins-agent-terraform-2408 install-jenkins-agent-rust
1212
.PHONY: install-jenkins-agent
1313

14-
## Update OpenShift resources related Jenkins agent resources.
15-
apply-jenkins-agent-build: apply-jenkins-agent-golang-build apply-jenkins-agent-jdk-build apply-jenkins-agent-nodejs18-build apply-jenkins-agent-nodejs20-build apply-jenkins-agent-nodejs22-build apply-jenkins-agent-python-build apply-jenkins-agent-scala-build apply-jenkins-agent-terraform-build-2306 apply-jenkins-agent-terraform-build-2408 apply-jenkins-agent-rust-build
14+
.## Update OpenShift resources related Jenkins agent resources.
15+
apply-jenkins-agent-build: apply-jenkins-agent-golang-build apply-jenkins-agent-jdk-build apply-jenkins-agent-nodejs18-build apply-jenkins-agent-nodejs20-build apply-jenkins-agent-nodejs22-build apply-jenkins-agent-nodejs24-build apply-jenkins-agent-python-build apply-jenkins-agent-scala-build apply-jenkins-agent-terraform-build-2306 apply-jenkins-agent-terraform-build-2408 apply-jenkins-agent-rust-build
1616
.PHONY: apply-jenkins-agent-build
1717

1818
## Start builds of Jenkins agents.
19-
start-jenkins-agent-build: start-jenkins-agent-golang-build start-jenkins-agent-jdk-build start-jenkins-agent-nodejs18-build start-jenkins-agent-nodejs20-build apply-jenkins-agent-nodejs22-build start-jenkins-agent-python-build start-jenkins-agent-scala-build start-jenkins-agent-terraform-build-2306 start-jenkins-agent-terraform-build-2408 start-jenkins-agent-rust-build
19+
.PHONY: apply-jenkins-agent-build
20+
21+
## Start builds of Jenkins agents.
22+
start-jenkins-agent-build: start-jenkins-agent-golang-build start-jenkins-agent-jdk-build start-jenkins-agent-nodejs18-build start-jenkins-agent-nodejs20-build start-jenkins-agent-nodejs22-build start-jenkins-agent-nodejs24-build start-jenkins-agent-python-build start-jenkins-agent-scala-build start-jenkins-agent-terraform-build-2306 start-jenkins-agent-terraform-build-2408 start-jenkins-agent-rust-build
23+
.PHONY: start-jenkins-agent-build
2024
.PHONY: start-jenkins-agent-build
2125

2226

@@ -54,7 +58,7 @@ start-jenkins-agent-jdk-build:
5458

5559
# JENKINS AGENT NODEJS
5660
## Install or update Jenkins Node agent resources.
57-
install-jenkins-agent-nodejs: apply-jenkins-agent-nodejs18-build apply-jenkins-agent-nodejs20-build apply-jenkins-agent-nodejs22-build start-jenkins-agent-nodejs18-build start-jenkins-agent-nodejs20-build start-jenkins-agent-nodejs22-build
61+
install-jenkins-agent-nodejs: apply-jenkins-agent-nodejs18-build apply-jenkins-agent-nodejs20-build apply-jenkins-agent-nodejs22-build apply-jenkins-agent-nodejs24-build start-jenkins-agent-nodejs18-build start-jenkins-agent-nodejs20-build start-jenkins-agent-nodejs22-build start-jenkins-agent-nodejs24-build
5862
.PHONY: install-jenkins-agent-nodejs
5963

6064
## Update OpenShift resources related to Jenkins Node 18 agent image.
@@ -72,6 +76,11 @@ apply-jenkins-agent-nodejs22-build:
7276
cd common/jenkins-agents/nodejs22/ocp-config && tailor apply --namespace $(ODS_NAMESPACE)
7377
.PHONY: apply-jenkins-agent-nodejs22-build
7478

79+
## Update OpenShift resources related to Jenkins Node 24 agent image.
80+
apply-jenkins-agent-nodejs24-build:
81+
cd common/jenkins-agents/nodejs24/ocp-config && tailor apply --namespace $(ODS_NAMESPACE)
82+
.PHONY: apply-jenkins-agent-nodejs24-build
83+
7584
## Start build of BuildConfig "jenkins-agent-nodejs18".
7685
start-jenkins-agent-nodejs18-build:
7786
oc -n $(ODS_NAMESPACE) start-build jenkins-agent-nodejs18 --follow
@@ -87,6 +96,11 @@ start-jenkins-agent-nodejs22-build:
8796
oc -n $(ODS_NAMESPACE) start-build jenkins-agent-nodejs22 --follow
8897
.PHONY: start-jenkins-agent-nodejs22-build
8998

99+
## Start build of BuildConfig "jenkins-agent-nodejs24".
100+
start-jenkins-agent-nodejs24-build:
101+
oc -n $(ODS_NAMESPACE) start-build jenkins-agent-nodejs24 --follow
102+
.PHONY: start-jenkins-agent-nodejs24-build
103+
90104
# JENKINS AGENT PYTHON
91105
## Install or update Jenkins Python agent resources.
92106
install-jenkins-agent-python: apply-jenkins-agent-python-build start-jenkins-agent-python-build

be-java-springboot/Jenkinsfile

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,25 @@ odsQuickstarterPipeline(
2121

2222
stage('Build spring project') {
2323
dir(context.targetDir) {
24-
def springBootVersion = '3.3.3'
24+
def springBootVersion = '4.0.0'
2525
echo "--- create spring boot (v${springBootVersion}) project via spring initializr ---"
2626

27-
sh "curl https://start.spring.io/starter.tgz \
28-
-d type=gradle-project \
29-
-d language=java \
30-
-d dependencies='web,data-rest,data-jpa,h2,security,devtools' \
31-
-d platformVersion=${springBootVersion} \
32-
-d packaging=jar \
33-
-d jvmVersion=${javaVersion} \
34-
-d groupId=${context.projectId} \
35-
-d artifactId=${context.componentId} \
36-
-d name=${context.componentId} \
37-
-d description='OpenDevStack%20Demo%20Project%20for%20Spring%20Boot' \
38-
-d packageName='${context.packageName}' \
39-
| tar -zxvf - "
27+
def springInitializrUrl = "https://start.spring.io/starter.tgz?" +
28+
"type=gradle-project&" +
29+
"language=java&" +
30+
"dependencies=web,data-rest,data-jpa,h2,security,devtools&" +
31+
"bootVersion=${springBootVersion}&" +
32+
"packaging=jar&" +
33+
"jvmVersion=${javaVersion}&" +
34+
"groupId=${context.projectId}&" +
35+
"artifactId=${context.componentId}&" +
36+
"name=${context.componentId}&" +
37+
"description=OpenDevStack%20Demo%20Project%20for%20Spring%20Boot&" +
38+
"packageName=${context.packageName}"
39+
40+
sh """
41+
curl -L "${springInitializrUrl}" | tar -xzvf -
42+
"""
4043

4144
echo "--- configure application.properties ---"
4245

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

be-rust-axum/Jenkinsfile.template

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ odsComponentPipeline(
1010
]
1111
) { context ->
1212
odsComponentFindOpenShiftImageOrElse(context) {
13-
stageCI(context)
13+
stageCI(context, false) // set `auditDependencies` to true if using cargo-deny
1414
odsComponentStageScanWithSonar(context)
1515
stageBuild(context)
1616
odsComponentStageBuildOpenShiftImage(context)
@@ -27,7 +27,7 @@ def stageBuild(def context) {
2727
}
2828
}
2929

30-
def stageCI(def context) {
30+
def stageCI(def context, def auditDependencies) {
3131
stage('Cargo Check') {
3232
sh """
3333
cargo --version
@@ -51,20 +51,25 @@ def stageCI(def context) {
5151
cargo clippy --message-format=json &> build/test-results/clippy/report.json
5252
"""
5353
}
54-
stage('Cargo Deny') {
55-
sh """
56-
mkdir -p build/test-results/deny
57-
cargo deny --format json check &> build/test-results/deny/cargo-deny-report.json
58-
cat build/test-results/deny/cargo-deny-report.json
59-
"""
60-
archiveArtifacts artifacts: 'build/test-results/deny/cargo-deny-report.json', fingerprint: true
54+
if (auditDependencies) {
55+
stage('Cargo Deny') {
56+
sh """
57+
mkdir -p build/test-results/deny
58+
cargo deny --format json check &> build/test-results/deny/cargo-deny-report.json
59+
cat build/test-results/deny/cargo-deny-report.json
60+
"""
61+
archiveArtifacts artifacts: 'build/test-results/deny/cargo-deny-report.json', fingerprint: true
62+
}
6163
}
6264
stage('Cargo Test') {
6365
sh """
6466
# create report folders
6567
mkdir -p build/test-results/test
6668
mkdir -p build/test-results/coverage
6769

70+
# If required, pre-install llvm-tools-preview to avoid interactive prompt when not using default Jenkins agent toolchain
71+
# rustup component add llvm-tools-preview --toolchain ${RUST_VERSION}
72+
6873
# Tests with JUnit XML report, as defined in .config/nextest.toml, and coverage LLVM cov report
6974
cargo llvm-cov nextest --profile ci --lcov --output-path ./build/test-results/coverage/lcov.info
7075
cp -r target/nextest/ci/results.xml build/test-results/test

be-rust-axum/rust-template/.pre-commit-config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
repos:
22
- repo: https://github.com/gitleaks/gitleaks
3-
rev: v8.22.1
3+
rev: v8.25.1
44
hooks:
55
- id: gitleaks
66
- repo: https://github.com/EmbarkStudios/cargo-deny
7-
rev: 0.16.3
7+
rev: 0.18.2
88
hooks:
99
- id: cargo-deny
1010
args: ["--all-features", "check"] # optionally modify the arguments for cargo-deny (default arguments shown here)

be-rust-axum/rust-template/Cargo.toml

Lines changed: 38 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,37 @@
22
# Here the project-name (Rust project) is your ODS component name
33
name = "{{project-name}}"
44
version = "0.1.0"
5-
edition = "2021"
5+
edition = "2024"
6+
rust-version = "1.88"
67
description = "{{project-name}} component - from the OpenDevStack Rust QuickStarter."
78
license = "MIT OR Apache-2.0"
89
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
910

1011
[dependencies]
1112
# one can add more dependencies via cargo to Cargo.toml as shown next: cargo add axum -F axum/http2
12-
axum = { version = "0.8", features = ["http2"] }
13-
tokio = { version = "1.40", features = ["rt-multi-thread", "macros", "signal"] }
13+
axum = { version = "0.8", features = ["http2", "macros", "multipart"] }
14+
tokio = { version = "1.44", features = ["rt-multi-thread", "macros", "signal"] }
1415

1516
serde = { version = "1.0", features = ["derive"] }
1617
serde_json = "1.0"
1718

18-
http = "1.1"
19+
http = "1.3"
1920
http-body-util = "0.1"
21+
# Highly encouraged to use URL encoding when working with any URI string
22+
# urlencoding = "2.1"
2023
bytes = "1.7"
2124

2225
thiserror = "2.0"
2326

2427
tracing = "0.1"
25-
tracing-subscriber = { version = "0.3", features = ["tracing", "env-filter"] }
28+
tracing-subscriber = { version = "0.3", features = ["tracing", "env-filter", "json", "ansi", "fmt"] }
2629

2730
lazy_static = "1.5"
2831

2932
envy = "0.4"
3033
dotenvy = "0.15"
3134

32-
# Nice HTTP middlewares from Tower crate, to be added to router.rs.
33-
# Uncomment as per need, check official docs.
35+
# HTTP middlewares from Tower crate, to be added to router.rs.
3436
# tower-http = { version = "0.6", features = [
3537
# "trace",
3638
# "compression-br",
@@ -40,9 +42,36 @@ dotenvy = "0.15"
4042
# ] }
4143

4244
# SQLx is the recommended safe and performant package to work with relational DBs like PostgreSQL; check official docs
43-
# sqlx = { version = "0.8", features = [ "runtime-tokio", "tls-rustls", "postgres", "uuid", "json", "time", "macros", "migrate" ] }
45+
# sqlx = { version = "0.8", features = [
46+
# "runtime-tokio",
47+
# "tls-rustls-ring-native-roots",
48+
# "postgres",
49+
# "uuid",
50+
# "json",
51+
# "chrono",
52+
# "macros",
53+
# "migrate"
54+
# ]}
55+
56+
# OTEL; check official docs
57+
# opentelemetry = { version = "0.29", features = ["trace", "metrics"] }
58+
# opentelemetry_sdk = { version = "0.29", features = ["rt-tokio"] }
59+
# opentelemetry-otlp = { version = "0.29", features = ["http-proto", "reqwest-client", "reqwest-rustls"] }
60+
# opentelemetry-http = { version = "0.29" }
61+
# opentelemetry-stdout = { version = "0.29", features = ["trace"] }
62+
# opentelemetry-appender-tracing = { version = "0.29" }
63+
# opentelemetry-semantic-conventions = { version = "0.29" }
64+
# tracing-opentelemetry = { version = "0.30" }
65+
66+
# OpenAPI; check official docs
67+
# utoipa = { version = "5.3", features = ["axum_extras", "uuid", "chrono"] }
68+
# utoipa-axum = "0.2"
69+
# utoipa-swagger-ui = { version = "9.0", features = ["axum"] }
70+
# # utoipa-redoc = { version = "5.0", features = ["axum"] }
71+
# # utoipa-rapidoc = { version = "5.0", features = ["axum"] }
72+
# # utoipa-scalar = { version = "0.2", features = ["axum"] }
4473

4574
[dev-dependencies]
46-
# mockito = "1.5" # mockito is recommended when requiring mocking network requests to either external or internal services
75+
# mockito = "1.7" # mockito is recommended when requiring mocking network requests to either external or internal services
4776
temp-env = { version = "0.3", features = ["async_closure"] } # it is highly recommended the usage of cargo nextest run instead of cargo test; this way each test runs on its own process
4877
tower = { version = "0.5", features = ["util"] }

be-rust-axum/rust-template/README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
The official OpenDevStack documentation for this QuickStarter can be found [here](https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/be-rust-axum.html).
44

5+
Check also the official docs of the [Jenkins Rust Agent](https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins-agents/rust.html) this Quickstarter makes use of. There you can see the setup and tools it provides.
6+
57
## Pre-commit hooks
68

79
This project uses [pre-commit](https://pre-commit.com).
@@ -11,6 +13,14 @@ This project uses [pre-commit](https://pre-commit.com).
1113
pre-commit install
1214
```
1315

16+
The provided pre-commit hooks are:
17+
- gitleaks (check for secrets)
18+
- cargo-deny (dependency auditing, see/update `deny.toml` config file)
19+
- cargo-fmt (formatter, see/update `rustfmt.toml` config file)
20+
- cargo-clippy (linter)
21+
22+
**NOTE**: the cargo hooks also run in Jenkins CICD, but cargo deny is disabled by default, see Jenkinsfile.
23+
1424
## Adding caching in your CICD
1525

1626
One can improve the build pipeline time by implementing a caching mechanism as shown next:

0 commit comments

Comments
 (0)