Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/continuous-integration-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -180,10 +180,10 @@ jobs:
name: Checkout repository
uses: actions/checkout@v4.1.6
-
name: Setup Go 1.18
name: Setup Go 1.24
uses: actions/setup-go@v5
with:
go-version: 1.18
go-version: 1.24
-
name: Verify all Go files are formatted with gofmt
working-directory: tests
Expand All @@ -201,7 +201,7 @@ jobs:
name: Verify all Go tests pass linting
uses: golangci/golangci-lint-action@v6
with:
version: v1.49.0
version: v1.64.7
working-directory: tests
args: --timeout=10m
-
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,4 @@ output-vmware-iso
prov-app-config.txt
headers.txt
response.txt
.cache/
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,16 @@

### Fixed

## [4.12.0] - 2026-03-02
### Changed
- Improved automatic tests for the quickstarters ([#1362](https://github.com/opendevstack/ods-core/pull/1362))
- Update keystore path in import_certs.sh script ([#1365](https://github.com/opendevstack/ods-core/pull/1365))
- Added allure plugin and command line installation to jenkins master image ([#1364](https://github.com/opendevstack/ods-core/pull/1364))
- Remove unnecessary configurations from ods-api-service ([#1366](https://github.com/opendevstack/ods-core/pull/1366))

### Fixed
- Fix e2e jenkins artifacts fetch ([#1369](https://github.com/opendevstack/ods-core/pull/1369))

## [4.11.1] - 2025-12-05

### Changed
Expand Down
32 changes: 1 addition & 31 deletions configuration-sample/ods-core.ods-api-service.env.sample
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

# OpenDevStack Api Service Version
# See https://github.com/opendevstack/ods-api-service/releases
ODS_API_SERVICE_VERSION=0.0.1
ODS_API_SERVICE_VERSION=0.0.2

# JVM configuration
JAVA_OPTS=-Xmx1g -Djavax.net.ssl.trustStore=/home/default/custom-truststore.jks -Djavax.net.ssl.trustStorePassword=changeit
Expand Down Expand Up @@ -40,36 +40,6 @@ UIPATH_QUEUE_ITEMS_ENDPOINT=/odata/QueueItems

# Projects Info Service
PROJECTS_INFO_SERVICE_BASE_URL=https://projects-info-service.example.com
AZURE_ACCESS_TOKEN=example-azure-token
AZURE_DATAHUB_GROUP_ID=example-datahub-group
TESTING_HUB_API_URL=https://testinghub-api.example.com/v1/projects
TESTING_HUB_API_TOKEN=example-testing-hub-token
TESTING_HUB_DEFAULT_PROJECTS=PROJECT1:1, PROJECT2:2

# OpenShift Cluster Tokens
OPENSHIFT_USTEST_API_URL=https://api.us-test.example.com:6443
OPENSHIFT_USTEST_TOKEN=example-ustest-token-change-me

OPENSHIFT_EUDEV_API_URL=https://api.eu-dev.example.com:6443
OPENSHIFT_EUDEV_TOKEN=example-eudev-token-change-me

OPENSHIFT_USDEV_API_URL=https://api.us-dev.example.com:6443
OPENSHIFT_USDEV_TOKEN=example-usdev-token-change-me

OPENSHIFT_CNDEV_API_URL=https://api.cn-dev.example.com:6443
OPENSHIFT_CNDEV_TOKEN=example-cndev-token-change-me

OPENSHIFT_INHDEV_API_URL=https://api.inh-dev.example.com:6443
OPENSHIFT_INHDEV_TOKEN=example-inhdev-token-change-me

# Bitbucket Platforms Configuration
BITBUCKET_PLATFORMS_BASE_PATH=https://bitbucket.example.com/projects/PLATFORMS/repos/sections-links/raw/
BITBUCKET_PLATFORMS_USTEST=us-test-sections.yml?at=main
BITBUCKET_PLATFORMS_EUDEV=eu-sections.yml?at=main
BITBUCKET_PLATFORMS_USDEV=us-sections.yml?at=main
BITBUCKET_PLATFORMS_CNDEV=cn-sections.yml?at=main
BITBUCKET_PLATFORMS_INHDEV=inh-sections.yml?at=main
BITBUCKET_PLATFORMS_BEARER_TOKEN=example-bitbucket-bearer-token

# Project Users JWT Secret
PROJECT_USERS_JWT_SECRET=example-jwt-secret-key-256bit-change-in-production
Expand Down
2 changes: 1 addition & 1 deletion jenkins/master/Dockerfile.ubi8
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ USER root
COPY yum.repos.d/ubi.repo /etc/yum.repos.d/ubi.repo

COPY ./scripts_for_usr-local-bin/* /usr/local/bin/
RUN rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key \
RUN rpm --import https://pkg.jenkins.io/rpm-stable/jenkins.io-2026.key \
&& disable_yum_repository.sh /etc/yum.repos.d/ci-rpm-mirrors.repo \
/etc/yum.repos.d/localdev-* /etc/yum.repos.d/epel.repo \
&& ensure_java_jre_is_adequate.sh master \
Expand Down
33 changes: 33 additions & 0 deletions jenkins/master/configuration/init.groovy.d/allure-cli.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import jenkins.model.Jenkins
import hudson.tools.InstallSourceProperty
import ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation
import ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstaller

def toolName = "Allure"
def allureVersion = "2.34.0"

def j = Jenkins.get()
def desc = j.getDescriptorByType(AllureCommandlineInstallation.DescriptorImpl)

def current = (desc.getInstallations() ?: []) as AllureCommandlineInstallation[]
def already = current.find { it?.name == toolName }

if (already) {
println("[init] Allure Commandline '${toolName}' already exists. Skipping.")
return
}

def installer = new AllureCommandlineInstaller(allureVersion)
def prop = new InstallSourceProperty([installer])

def newInst = new AllureCommandlineInstallation(
toolName,
"",
[prop]
)

def updated = (current.toList() + newInst) as AllureCommandlineInstallation[]
desc.setInstallations(updated)
desc.save()

println("[init] Allure Commandline '${toolName}' configured (version ${allureVersion})")
1 change: 1 addition & 0 deletions jenkins/master/plugins.ubi8.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
greenballs:1.15.1
sonar:2.17.2
ansicolor:1.0.4
allure-jenkins-plugin:2.34.0
audit-trail:361.v82cde86c784e
Office-365-Connector:5.0.0
mask-passwords:173.v6a_077a_291eb_5
Expand Down
2 changes: 0 additions & 2 deletions ods-api-service/chart/templates/core/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,6 @@ spec:
{{- if .Values.externalServices.projectsInfoService.enabled }}
- configMapRef:
name: {{ include "chart.fullname" . }}-projects-info-service-config
- secretRef:
name: {{ include "chart.fullname" . }}-projects-info-service-credentials
{{- end }}
{{- if gt (len .Values.externalServices.openshift.instances) 0 }}
- configMapRef:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,34 +8,4 @@ metadata:
app.kubernetes.io/component: projects-info-service-config
data:
PROJECTS_INFO_SERVICE_BASE_URL: {{ .Values.externalServices.projectsInfoService.baseUrl | quote }}
PROJECTS_INFO_SERVICE_SSL_VERIFY: {{ .Values.externalServices.projectsInfoService.ssl.verifyCertificates | quote }}
{{- if .Values.externalServices.projectsInfoService.ssl.trustStorePath }}
PROJECTS_INFO_SERVICE_SSL_TRUSTSTORE_PATH: {{ .Values.externalServices.projectsInfoService.ssl.trustStorePath | quote }}
{{- end }}
{{- if .Values.externalServices.projectsInfoService.ssl.trustStoreType }}
PROJECTS_INFO_SERVICE_SSL_TRUSTSTORE_TYPE: {{ .Values.externalServices.projectsInfoService.ssl.trustStoreType | quote }}
{{- end }}
PROJECTS_INFO_SERVICE_AZURE_DATA_HUB_GROUP_ID: {{ .Values.externalServices.projectsInfoService.azure.datahub.groupId | quote }}
PROJECTS_INFO_SERVICE_AZURE_GROUPS_PAGE_SIZE: {{ .Values.externalServices.projectsInfoService.azure.groups.pageSize | quote }}
PROJECTS_INFO_SERVICE_TESTING_HUB_DEFAULT_PROJECTS: {{ .Values.externalServices.projectsInfoService.testingHub.default.projects | quote }}
PROJECTS_INFO_SERVICE_TESTING_HUB_API_URL: {{ .Values.externalServices.projectsInfoService.testingHub.api.url | quote }}
PROJECTS_INFO_SERVICE_TESTING_HUB_API_PAGE_SIZE: {{ .Values.externalServices.projectsInfoService.testingHub.api.pageSize | quote }}
PROJECTS_INFO_SERVICE_CUSTOM_CACHE_TTL_SECONDS: {{ .Values.externalServices.projectsInfoService.custom.cache.default.ttlSeconds | quote }}
PROJECTS_INFO_SERVICE_CUSTOM_CACHE_MAXIMUM_SIZE: {{ .Values.externalServices.projectsInfoService.custom.cache.default.maximumSize | quote }}
PROJECTS_INFO_SERVICE_CUSTOM_CACHE_FALLBACK_TTL_SECONDS: {{ .Values.externalServices.projectsInfoService.custom.cache.fallback.ttlSeconds | quote }}
PROJECTS_INFO_SERVICE_CUSTOM_CACHE_FALLBACK_MAXIMUM_SIZE: {{ .Values.externalServices.projectsInfoService.custom.cache.fallback.maximumSize | quote }}
PROJECTS_INFO_SERVICE_MOCK_CLUSTERS: {{ .Values.externalServices.projectsInfoService.mock.clusters | quote }}
PROJECTS_INFO_SERVICE_MOCK_DEFAULT_PROJECTS: {{ .Values.externalServices.projectsInfoService.mock.projects.default | quote }}
PROJECTS_INFO_SERVICE_MOCK_USER_PROJECTS: {{ .Values.externalServices.projectsInfoService.mock.projects.users | quote }}
PROJECTS_INFO_SERVICE_OPENSHIFT_US_TEST_URL: {{ .Values.externalServices.projectsInfoService.openshift.api.clusters.usTest.url | quote }}
PROJECTS_INFO_SERVICE_OPENSHIFT_EU_DEV_URL: {{ .Values.externalServices.projectsInfoService.openshift.api.clusters.euDev.url | quote }}
PROJECTS_INFO_SERVICE_OPENSHIFT_US_DEV_URL: {{ .Values.externalServices.projectsInfoService.openshift.api.clusters.usDev.url | quote }}
PROJECTS_INFO_SERVICE_OPENSHIFT_CN_DEV_URL: {{ .Values.externalServices.projectsInfoService.openshift.api.clusters.cnDev.url | quote }}
PROJECTS_INFO_SERVICE_OPENSHIFT_INH_DEV_URL: {{ .Values.externalServices.projectsInfoService.openshift.api.clusters.inhDev.url | quote }}
PROJECTS_INFO_SERVICE_PLATFORMS_BASE_PATH: {{ .Values.externalServices.projectsInfoService.platforms.basePath | quote }}
PROJECTS_INFO_SERVICE_PLATFORMS_US_TEST_CLUSTER: {{ .Values.externalServices.projectsInfoService.platforms.clusters.usTest | quote }}
PROJECTS_INFO_SERVICE_PLATFORMS_EU_CLUSTER: {{ .Values.externalServices.projectsInfoService.platforms.clusters.euDev | quote }}
PROJECTS_INFO_SERVICE_PLATFORMS_US_CLUSTER: {{ .Values.externalServices.projectsInfoService.platforms.clusters.usDev | quote }}
PROJECTS_INFO_SERVICE_PLATFORMS_CN_CLUSTER: {{ .Values.externalServices.projectsInfoService.platforms.clusters.cnDev | quote }}
PROJECTS_INFO_SERVICE_PLATFORMS_INH_CLUSTER: {{ .Values.externalServices.projectsInfoService.platforms.clusters.inhDev | quote }}
{{- end }}

This file was deleted.

96 changes: 0 additions & 96 deletions ods-api-service/chart/templates/tpl/_application.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -157,101 +157,5 @@ externalservices:
{{- if .Values.externalServices.projectsInfoService.enabled }}
projects-info-service:
base-url: ${PROJECTS_INFO_SERVICE_BASE_URL:http://localhost:8081}
ssl:
verify-certificates: ${PROJECTS_INFO_SERVICE_SSL_VERIFY:true}
trust-store-path: ${PROJECTS_INFO_SERVICE_SSL_TRUSTSTORE_PATH:}
trust-store-password: ${PROJECTS_INFO_SERVICE_SSL_TRUSTSTORE_PASSWORD:}
trust-store-type: ${PROJECTS_INFO_SERVICE_SSL_TRUSTSTORE_TYPE:JKS}
azure:
access-token: ${PROJECTS_INFO_SERVICE_AZURE_ACCESS_TOKEN:tbc}
datahub:
group-id: ${PROJECTS_INFO_SERVICE_AZURE_DATA_HUB_GROUP_ID:tbc}
groups:
page-size: ${PROJECTS_INFO_SERVICE_AZURE_GROUPS_PAGE_SIZE:100}
testing-hub:
default:
projects: ${PROJECTS_INFO_SERVICE_TESTING_HUB_DEFAULT_PROJECTS:tbc}
api:
url: ${PROJECTS_INFO_SERVICE_TESTING_HUB_API_URL:tbc}
token: ${PROJECTS_INFO_SERVICE_TESTING_HUB_API_TOKEN:tbc}
page-size: ${PROJECTS_INFO_SERVICE_TESTING_HUB_API_PAGE_SIZE:100}
custom:
cache:
specs:
userGroups:
ttl: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_TTL_SECONDS:60}
maxSize: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_MAXIMUM_SIZE:100}
userGroups-fallback:
ttl: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_FALLBACK_TTL_SECONDS:120}
maxSize: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_FALLBACK_MAXIMUM_SIZE:100}
userEmail:
ttl: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_TTL_SECONDS:60}
maxSize: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_MAXIMUM_SIZE:100}
userEmail-fallback:
ttl: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_FALLBACK_TTL_SECONDS:120}
maxSize: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_FALLBACK_MAXIMUM_SIZE:100}
allEdpProjects:
ttl: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_TTL_SECONDS:60}
maxSize: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_MAXIMUM_SIZE:100}
allEdpProjects-fallback:
ttl: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_FALLBACK_TTL_SECONDS:120}
maxSize: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_FALLBACK_MAXIMUM_SIZE:100}
projectsInfoCache:
ttl: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_TTL_SECONDS:60}
maxSize: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_MAXIMUM_SIZE:100}
projectsInfoCache-fallback:
ttl: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_FALLBACK_TTL_SECONDS:120}
maxSize: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_FALLBACK_MAXIMUM_SIZE:100}
openshiftProjects:
ttl: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_TTL_SECONDS:60}
maxSize: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_MAXIMUM_SIZE:100}
openshiftProjects-fallback:
ttl: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_FALLBACK_TTL_SECONDS:120}
maxSize: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_FALLBACK_MAXIMUM_SIZE:100}
dataHubGroups:
ttl: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_FALLBACK_TTL_SECONDS:120}
maxSize: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_FALLBACK_MAXIMUM_SIZE:100}
testingHubGroups:
ttl: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_FALLBACK_TTL_SECONDS:120}
maxSize: ${PROJECTS_INFO_SERVICE_CUSTOM_CACHE_FALLBACK_MAXIMUM_SIZE:100}
mock:
clusters: ${PROJECTS_INFO_SERVICE_MOCK_CLUSTERS:tbc}
projects:
default: ${PROJECTS_INFO_SERVICE_MOCK_DEFAULT_PROJECTS:tbc}
users: ${PROJECTS_INFO_SERVICE_MOCK_USER_PROJECTS:tbc}
openshift:
api:
clusters:
us-test:
url: ${PROJECTS_INFO_SERVICE_OPENSHIFT_US_TEST_URL:tbc}
token: ${PROJECTS_INFO_SERVICE_OPENSHIFT_US_TEST_TOKEN:tbc}
eu-dev:
url: ${PROJECTS_INFO_SERVICE_OPENSHIFT_EU_DEV_URL:tbc}
token: ${PROJECTS_INFO_SERVICE_OPENSHIFT_EU_DEV_TOKEN:tbc}
us-dev:
url: ${PROJECTS_INFO_SERVICE_OPENSHIFT_US_DEV_URL:tbc}
token: ${PROJECTS_INFO_SERVICE_OPENSHIFT_US_DEV_TOKEN:tbc}
cn-dev:
url: ${PROJECTS_INFO_SERVICE_OPENSHIFT_CN_DEV_URL:tbc}
token: ${PROJECTS_INFO_SERVICE_OPENSHIFT_CN_DEV_TOKEN:tbc}
inh-dev:
url: ${PROJECTS_INFO_SERVICE_OPENSHIFT_INH_DEV_URL:tbc}
token: ${PROJECTS_INFO_SERVICE_OPENSHIFT_INH_DEV_TOKEN:tbc}
project:
url: /apis/project.openshift.io/v1/projects
platforms:
bearer-token: ${PROJECTS_INFO_SERVICE_PLATFORMS_BEARER_TOKEN:tbc}
base-path: ${PROJECTS_INFO_SERVICE_PLATFORMS_BASE_PATH:tbc}
clusters:
us-test: ${PROJECTS_INFO_SERVICE_PLATFORMS_US_TEST_CLUSTER:tbc}
eu-dev: ${PROJECTS_INFO_SERVICE_PLATFORMS_EU_CLUSTER:tbc}
us-dev: ${PROJECTS_INFO_SERVICE_PLATFORMS_US_CLUSTER:tbc}
cn-dev: ${PROJECTS_INFO_SERVICE_PLATFORMS_CN_CLUSTER:tbc}
inh-dev: ${PROJECTS_INFO_SERVICE_PLATFORMS_INH_CLUSTER:tbc}
project:
filter:
project-roles-group-prefix: BI-AS-ATLASSIAN-P
# Properties to be used as lists cannot have leading or trailing blanks.
project-roles-group-suffixes: TEAM,MANAGER,STAKEHOLDER
{{- end }}
{{- end -}}
59 changes: 0 additions & 59 deletions ods-api-service/chart/values.yaml.template
Original file line number Diff line number Diff line change
Expand Up @@ -213,65 +213,6 @@ externalServices:
projectsInfoService:
enabled: true
baseUrl: "$PROJECTS_INFO_SERVICE_BASE_URL"
ssl:
verifyCertificates: "false"
trustStorePath: ""
trustStorePassword: ""
trustStoreType: "JKS"
azure:
accessToken: "$AZURE_ACCESS_TOKEN"
datahub:
groupId: "$AZURE_DATAHUB_GROUP_ID"
groups:
pageSize: 100
testingHub:
default:
projects: "$TESTING_HUB_DEFAULT_PROJECTS"
api:
url: "$TESTING_HUB_API_URL"
token: "$TESTING_HUB_API_TOKEN"
pageSize: 100
custom:
cache:
default:
ttlSeconds: 3600 # seconds (1 hour)
maximumSize: 1000
fallback:
ttlSeconds: 7200 # seconds (2 hour)
maximumSize: 1000
mock:
clusters: "1-test, 2-test, 3-test"
projects:
default: "PROJECT-1:1-test, PROJECT-2-cn, PROJECT-3, SORIAOLI:1-test, VILAXICOIP:1-test, FELST:1-test"
users: "{PEPE:[PROJECT-3, PROJECT-4]; PPT:[PROJECT-3, PROJECT-5]}"
openshift:
api:
clusters:
usTest:
url: "$OPENSHIFT_USTEST_API_URL"
token: $OPENSHIFT_USTEST_TOKEN
euDev:
url: "$OPENSHIFT_EUDEV_API_URL"
token: $OPENSHIFT_EUDEV_TOKEN
usDev:
url: "$OPENSHIFT_USDEV_API_URL"
token: $OPENSHIFT_USDEV_TOKEN
cnDev:
url: "$OPENSHIFT_CNDEV_API_URL"
token: $OPENSHIFT_CNDEV_TOKEN
inhDev:
url: "$OPENSHIFT_INHDEV_API_URL"
token: $OPENSHIFT_INHDEV_TOKEN
platforms:
basePath: "$BITBUCKET_PLATFORMS_BASE_PATH"
clusters:
usTest: "$BITBUCKET_PLATFORMS_USTEST"
euDev: "$BITBUCKET_PLATFORMS_EUDEV"
usDev: "$BITBUCKET_PLATFORMS_USDEV"
cnDev: "$BITBUCKET_PLATFORMS_CNDEV"
inhDev: "$BITBUCKET_PLATFORMS_INHDEV"
bearer:
token: $BITBUCKET_PLATFORMS_BEARER_TOKEN
# Add OpenShift instances with tokens as needed
openshift:
instances: []
Expand Down
4 changes: 2 additions & 2 deletions ods-provisioning-app/docker/import_certs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ set -eu
if [[ ! -z ${APP_DNS:=""} ]]; then
echo "Setting up certificates from APP_DNS=${APP_DNS} ..."; \

KEYSTORE="$JAVA_HOME/lib/security/cacerts"
KEYSTORE="/opt/java/openjdk/lib/security/cacerts"

arrIN=(${APP_DNS//;/ })
for val in "${arrIN[@]}";
Expand All @@ -22,4 +22,4 @@ if [[ ! -z ${APP_DNS:=""} ]]; then
echo "Done with certificate setup"
else
echo 'No certificates to import'
fi
fi
Loading
Loading