Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
DBRepo
Manage
Activity
Members
Labels
Plan
External wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Package registry
Model registry
Operate
Terraform modules
Analyze
Contributor analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
FAIR Data Austria DB Repository
DBRepo
Commits
c6eeb222
Verified
Commit
c6eeb222
authored
7 months ago
by
Martin Weise
Browse files
Options
Downloads
Patches
Plain Diff
WIP
parent
677576f2
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
.gitlab-ci.yml
+439
-439
439 additions, 439 deletions
.gitlab-ci.yml
with
439 additions
and
439 deletions
.gitlab-ci.yml
+
439
−
439
View file @
c6eeb222
...
@@ -28,143 +28,143 @@ cache:
...
@@ -28,143 +28,143 @@ cache:
-
.m2/repository
-
.m2/repository
stages
:
stages
:
#
- lint
-
lint
#
- build
-
build
-
deploy
-
deploy
#
- test
-
test
#
- docs
-
docs
#
- release
-
release
#
- verify
-
verify
#
- scan
-
scan
#
lint-docker-compose:
lint-docker-compose
:
#
image: docker.io/alpine:${ALPINE_VERSION}
image
:
docker.io/alpine:${ALPINE_VERSION}
#
stage: lint
stage
:
lint
#
variables:
variables
:
#
VERSION: 3.3.0
VERSION
:
3.3.0
#
BINARY: yq_linux_amd64
BINARY
:
yq_linux_amd64
#
before_script:
before_script
:
#
- 'apk --no-cache add bash wget'
-
'
apk
--no-cache
add
bash
wget'
#
- 'wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq && chmod +x /usr/bin/yq'
-
'
wget
https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY}
-O
/usr/bin/yq
&&
chmod
+x
/usr/bin/yq'
#
- 'ls -la .scripts'
-
'
ls
-la
.scripts'
#
script:
script
:
#
- "yq compare -P docker-compose.yml .docker/docker-compose.yml 'volumes.*'"
-
"
yq
compare
-P
docker-compose.yml
.docker/docker-compose.yml
'volumes.*'"
#
- "IGNORE_IMAGE=1 IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-analyse-service'"
-
"
IGNORE_IMAGE=1
IGNORE_PORTS=1
bash
.scripts/check-service.sh
'dbrepo-analyse-service'"
#
- "bash .scripts/check-service.sh 'dbrepo-auth-db'"
-
"
bash
.scripts/check-service.sh
'dbrepo-auth-db'"
#
- "IGNORE_IMAGE=1 IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-auth-service'"
-
"
IGNORE_IMAGE=1
IGNORE_PORTS=1
bash
.scripts/check-service.sh
'dbrepo-auth-service'"
#
- "IGNORE_IMAGE=1 IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-broker-service'"
-
"
IGNORE_IMAGE=1
IGNORE_PORTS=1
bash
.scripts/check-service.sh
'dbrepo-broker-service'"
#
- "IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-dashboard-service'"
-
"
IGNORE_PORTS=1
bash
.scripts/check-service.sh
'dbrepo-dashboard-service'"
#
- "bash .scripts/check-service.sh 'dbrepo-data-db'"
-
"
bash
.scripts/check-service.sh
'dbrepo-data-db'"
#
- "IGNORE_IMAGE=1 IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-data-service'"
-
"
IGNORE_IMAGE=1
IGNORE_PORTS=1
bash
.scripts/check-service.sh
'dbrepo-data-service'"
#
- "IGNORE_VOLUMES=1 bash .scripts/check-service.sh 'dbrepo-gateway-service'"
-
"
IGNORE_VOLUMES=1
bash
.scripts/check-service.sh
'dbrepo-gateway-service'"
#
- "IGNORE_VOLUMES=1 bash .scripts/check-service.sh 'dbrepo-identity-service'"
-
"
IGNORE_VOLUMES=1
bash
.scripts/check-service.sh
'dbrepo-identity-service'"
#
- "IGNORE_VOLUMES=1 bash .scripts/check-service.sh 'dbrepo-metadata-db'"
-
"
IGNORE_VOLUMES=1
bash
.scripts/check-service.sh
'dbrepo-metadata-db'"
#
- "IGNORE_IMAGE=1 IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-metadata-service'"
-
"
IGNORE_IMAGE=1
IGNORE_PORTS=1
bash
.scripts/check-service.sh
'dbrepo-metadata-service'"
#
- "IGNORE_VOLUMES=1 bash .scripts/check-service.sh 'dbrepo-metric-db'"
-
"
IGNORE_VOLUMES=1
bash
.scripts/check-service.sh
'dbrepo-metric-db'"
#
- "IGNORE_IMAGE=1 bash .scripts/check-service.sh 'dbrepo-search-db'"
-
"
IGNORE_IMAGE=1
bash
.scripts/check-service.sh
'dbrepo-search-db'"
#
- "IGNORE_IMAGE=1 IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-search-service'"
-
"
IGNORE_IMAGE=1
IGNORE_PORTS=1
bash
.scripts/check-service.sh
'dbrepo-search-service'"
#
- "IGNORE_IMAGE=1 bash .scripts/check-service.sh 'dbrepo-search-service-init'"
-
"
IGNORE_IMAGE=1
bash
.scripts/check-service.sh
'dbrepo-search-service-init'"
#
- "IGNORE_VOLUMES=1 bash .scripts/check-service.sh 'dbrepo-storage-service'"
-
"
IGNORE_VOLUMES=1
bash
.scripts/check-service.sh
'dbrepo-storage-service'"
#
- "IGNORE_VOLUMES=1 bash .scripts/check-service.sh 'dbrepo-storage-service-init'"
-
"
IGNORE_VOLUMES=1
bash
.scripts/check-service.sh
'dbrepo-storage-service-init'"
#
- "IGNORE_IMAGE=1 bash .scripts/check-service.sh 'dbrepo-ui'"
-
"
IGNORE_IMAGE=1
bash
.scripts/check-service.sh
'dbrepo-ui'"
#
- "bash .scripts/check-service.sh 'dbrepo-upload-service'"
-
"
bash
.scripts/check-service.sh
'dbrepo-upload-service'"
#
#
lint-helm-chart:
lint-helm-chart
:
#
image: docker.io/alpine:3.20
image
:
docker.io/alpine:3.20
#
stage: lint
stage
:
lint
#
before_script:
before_script
:
#
- apk add helm
-
apk add helm
#
script:
script
:
#
- helm lint ./helm/dbrepo
-
helm lint ./helm/dbrepo
#
#
build-metadata-service:
build-metadata-service
:
#
image: maven:3-openjdk-${JAVA_VERSION}
image
:
maven:3-openjdk-${JAVA_VERSION}
#
stage: build
stage
:
build
#
script:
script
:
#
- "mvn -f ./dbrepo-metadata-service/pom.xml clean install $MAVEN_OPTS -DskipTests"
-
"
mvn
-f
./dbrepo-metadata-service/pom.xml
clean
install
$MAVEN_OPTS
-DskipTests"
#
# Compiled classes are needed for SonarQube in later stages
# Compiled classes are needed for SonarQube in later stages
#
artifacts:
artifacts
:
#
when: always
when
:
always
#
paths:
paths
:
#
- ./dbrepo-metadata-service/test/target/classes
-
./dbrepo-metadata-service/test/target/classes
#
- ./dbrepo-metadata-service/services/target/classes
-
./dbrepo-metadata-service/services/target/classes
#
- ./dbrepo-metadata-service/repositories/target/classes
-
./dbrepo-metadata-service/repositories/target/classes
#
- ./dbrepo-metadata-service/rest-service/target/classes
-
./dbrepo-metadata-service/rest-service/target/classes
#
- ./dbrepo-metadata-service/api/target/classes
-
./dbrepo-metadata-service/api/target/classes
#
- ./dbrepo-metadata-service/oai/target/classes
-
./dbrepo-metadata-service/oai/target/classes
#
- ./dbrepo-metadata-service/entities/target/classes
-
./dbrepo-metadata-service/entities/target/classes
#
expire_in: 1 days
expire_in
:
1 days
#
#
build-analyse-service:
build-analyse-service
:
#
image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
image
:
docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
#
stage: build
stage
:
build
#
variables:
variables
:
#
PIPENV_PIPFILE: "./dbrepo-analyse-service/Pipfile"
PIPENV_PIPFILE
:
"
./dbrepo-analyse-service/Pipfile"
#
script:
script
:
#
- "pip install pipenv"
-
"
pip
install
pipenv"
#
- "pipenv install gunicorn && pipenv install --dev --system --deploy"
-
"
pipenv
install
gunicorn
&&
pipenv
install
--dev
--system
--deploy"
#
#
build-lib:
build-lib
:
#
image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
image
:
docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
#
stage: build
stage
:
build
#
variables:
variables
:
#
PIPENV_PIPFILE: "./lib/python/Pipfile"
PIPENV_PIPFILE
:
"
./lib/python/Pipfile"
#
script:
script
:
#
- "pip install pipenv"
-
"
pip
install
pipenv"
#
- "pipenv install gunicorn && pipenv install --dev --system --deploy"
-
"
pipenv
install
gunicorn
&&
pipenv
install
--dev
--system
--deploy"
#
#
build-data-service:
build-data-service
:
#
image: maven:3-openjdk-${JAVA_VERSION}
image
:
maven:3-openjdk-${JAVA_VERSION}
#
stage: build
stage
:
build
#
needs:
needs
:
#
- build-metadata-service
-
build-metadata-service
#
dependencies:
dependencies
:
#
- build-metadata-service
-
build-metadata-service
#
script:
script
:
#
- "mvn -f ./dbrepo-metadata-service/pom.xml clean install $MAVEN_OPTS -DskipTests"
-
"
mvn
-f
./dbrepo-metadata-service/pom.xml
clean
install
$MAVEN_OPTS
-DskipTests"
#
- "mvn -f ./dbrepo-data-service/pom.xml clean package $MAVEN_OPTS -DskipTests"
-
"
mvn
-f
./dbrepo-data-service/pom.xml
clean
package
$MAVEN_OPTS
-DskipTests"
#
# Compiled classes are needed for SonarQube in later stages
# Compiled classes are needed for SonarQube in later stages
#
artifacts:
artifacts
:
#
when: always
when
:
always
#
paths:
paths
:
#
- ./dbrepo-data-service/services/target/classes
-
./dbrepo-data-service/services/target/classes
#
- ./dbrepo-data-service/rest-service/target/classes
-
./dbrepo-data-service/rest-service/target/classes
#
- ./dbrepo-data-service/querystore/target/classes
-
./dbrepo-data-service/querystore/target/classes
#
expire_in: 1 days
expire_in
:
1 days
#
#
build-ui:
build-ui
:
#
image: oven/bun:${BUN_VERSION}-alpine
image
:
oven/bun:${BUN_VERSION}-alpine
#
stage: build
stage
:
build
#
script:
script
:
#
- "cd ./dbrepo-ui && bun install && bun run build"
-
"
cd
./dbrepo-ui
&&
bun
install
&&
bun
run
build"
#
#
build-search-service:
build-search-service
:
#
image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
image
:
docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
#
stage: build
stage
:
build
#
script:
script
:
#
- "pip install pipenv"
-
"
pip
install
pipenv"
#
- "cd dbrepo-search-service && pipenv install --system --deploy"
-
"
cd
dbrepo-search-service
&&
pipenv
install
--system
--deploy"
#
#
build-docker:
build-docker
:
#
image: docker.io/docker:24-dind
image
:
docker.io/docker:24-dind
#
stage: build
stage
:
build
#
variables:
variables
:
#
DOCKER_BUILDKIT: 0
DOCKER_BUILDKIT
:
0
#
before_script:
before_script
:
#
- "apk add --no-cache make"
-
"
apk
add
--no-cache
make"
#
- echo "$CI_REGISTRY_PASSWORD" | docker login --username "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY_URL
-
echo "$CI_REGISTRY_PASSWORD" | docker login --username "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY_URL
#
script:
script
:
#
- "make build-images"
-
"
make
build-images"
#
#
build-helm:
build-helm
:
#
image: docker.io/docker:24-dind
image
:
docker.io/docker:24-dind
#
stage: build
stage
:
build
#
before_script:
before_script
:
#
- echo "$CI_GPG_KEYRING" | base64 -d > ./secring.gpg
-
echo "$CI_GPG_KEYRING" | base64 -d > ./secring.gpg
#
- echo "$CI_REGISTRY_PASSWORD" | docker login --username "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY_URL
-
echo "$CI_REGISTRY_PASSWORD" | docker login --username "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY_URL
#
script:
script
:
#
- apk add sed helm curl
-
apk add sed helm curl
#
- helm package ./helm/dbrepo --destination ./build
-
helm package ./helm/dbrepo --destination ./build
deploy-staging
:
deploy-staging
:
image
:
docker.io/alpine:${ALPINE_VERSION}
image
:
docker.io/alpine:${ALPINE_VERSION}
...
@@ -189,308 +189,308 @@ deploy-staging:
...
@@ -189,308 +189,308 @@ deploy-staging:
refs
:
refs
:
-
dev
-
dev
-
master
-
master
# when: manual
when
:
manual
test-metadata-service
:
image
:
maven:3-openjdk-${JAVA_VERSION}
stage
:
test
needs
:
-
build-metadata-service
dependencies
:
-
build-metadata-service
script
:
-
"
mvn
-f
./dbrepo-metadata-service/pom.xml
clean
test
verify
$MAVEN_OPTS"
-
"
cat
./dbrepo-metadata-service/report/target/site/jacoco-aggregate/index.html
|
grep
-o
'Total[^%]*%'
|
sed
's/<.*>/
/;
s/Total/Jacoco
Coverage
Total:/'"
artifacts
:
when
:
always
paths
:
-
./dbrepo-metadata-service/report/target/site/jacoco-aggregate/
-
./dbrepo-metadata-service/rest-service/target/surefire-reports/
expire_in
:
1 days
reports
:
junit
:
./dbrepo-metadata-service/rest-service/target/surefire-reports/TEST-*.xml
coverage
:
'
/Total.*?([0-9]{1,3})%/'
test-data-service
:
image
:
maven:3-openjdk-${JAVA_VERSION}
stage
:
test
needs
:
-
build-data-service
dependencies
:
-
build-data-service
script
:
-
"
mvn
-f
./dbrepo-metadata-service/pom.xml
clean
install
$MAVEN_OPTS"
-
"
mvn
-f
./dbrepo-data-service/pom.xml
clean
test
verify
$MAVEN_OPTS"
-
"
cat
./dbrepo-data-service/report/target/site/jacoco-aggregate/index.html
|
grep
-o
'Total[^%]*%'
|
sed
's/<.*>/
/;
s/Total/Jacoco
Coverage
Total:/'"
artifacts
:
when
:
always
paths
:
-
./dbrepo-data-service/report/target/site/jacoco-aggregate/
-
./dbrepo-data-service/rest-service/target/surefire-reports/
expire_in
:
1 days
reports
:
junit
:
./dbrepo-data-service/rest-service/target/surefire-reports/TEST-*.xml
coverage
:
'
/Total.*?([0-9]{1,3})%/'
test-upload-service
:
image
:
maven:3-openjdk-${JAVA_VERSION}
stage
:
test
script
:
-
"
mvn
-f
./dbrepo-metadata-service/pom.xml
clean
install
$MAVEN_OPTS
-DskipTests"
-
"
mvn
-f
./dbrepo-upload-service/pom.xml
clean
test
$MAVEN_OPTS"
test-analyse-service
:
image
:
docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
stage
:
test
variables
:
PIPENV_PIPFILE
:
"
./dbrepo-analyse-service/Pipfile"
needs
:
-
build-analyse-service
dependencies
:
-
build-analyse-service
script
:
-
"
pip
install
pipenv"
-
"
pipenv
install
gunicorn
&&
pipenv
install
--dev
--system
--deploy"
-
cd ./dbrepo-analyse-service/ && coverage run -m pytest test/test_determine_dt.py test/test_determine_pk.py test/test_s3_client.py --junitxml=report.xml && coverage html --omit="test/*" && coverage report --omit="test/*" > ./coverage.txt
-
"
cat
./coverage.txt
|
grep
-o
'TOTAL[^%]*%'"
artifacts
:
when
:
always
paths
:
-
./dbrepo-analyse-service/report.xml
-
./dbrepo-analyse-service/coverage.txt
expire_in
:
1 days
reports
:
junit
:
./dbrepo-analyse-service/report.xml
coverage
:
'
/TOTAL.*?([0-9]{1,3})%/'
test-search-service
:
image
:
docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
stage
:
test
variables
:
PIPENV_PIPFILE
:
"
./dbrepo-search-service/Pipfile"
needs
:
-
build-search-service
dependencies
:
-
build-search-service
before_script
:
-
"
cp
-r
./dbrepo-search-service/init/clients
./dbrepo-search-service/clients"
-
"
cp
-r
./dbrepo-search-service/init/omlib
./dbrepo-search-service/omlib"
script
:
-
"
pip
install
pipenv"
-
"
pipenv
install
gunicorn
&&
pipenv
install
--dev
--system
--deploy"
-
cd ./dbrepo-search-service/ && coverage run -m pytest test/test_app.py test/test_jwt.py test/test_opensearch_client.py test/test_keycloak_client.py --junitxml=report.xml && coverage html && coverage report > ./coverage.txt
-
"
cat
./coverage.txt
|
grep
-o
'TOTAL[^%]*%'"
artifacts
:
when
:
always
paths
:
-
./dbrepo-search-service/report.xml
-
./dbrepo-search-service/coverage.txt
expire_in
:
1 days
reports
:
junit
:
./dbrepo-search-service/report.xml
coverage
:
'
/TOTAL.*?([0-9]{1,3})%/'
test-search-service-init
:
image
:
docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
stage
:
test
variables
:
PIPENV_PIPFILE
:
"
./dbrepo-search-service/init/Pipfile"
needs
:
-
build-search-service
dependencies
:
-
build-search-service
script
:
-
"
pip
install
pipenv"
-
"
pipenv
install
gunicorn
&&
pipenv
install
--dev
--system
--deploy"
-
cd ./dbrepo-search-service/init/ && coverage run -m pytest test/test_app.py --junitxml=report.xml && coverage html && coverage report > ./coverage.txt
-
"
cat
./coverage.txt
|
grep
-o
'TOTAL[^%]*%'"
artifacts
:
when
:
always
paths
:
-
./dbrepo-search-service/report.xml
-
./dbrepo-search-service/coverage.txt
expire_in
:
1 days
reports
:
junit
:
./dbrepo-search-service/report.xml
coverage
:
'
/TOTAL.*?([0-9]{1,3})%/'
test-lib
:
image
:
docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
stage
:
test
variables
:
PIPENV_PIPFILE
:
"
./lib/python/Pipfile"
needs
:
-
build-lib
dependencies
:
-
build-lib
script
:
-
"
pip
install
pipenv"
-
"
pipenv
install
gunicorn
&&
pipenv
install
--dev
--system
--deploy"
-
cd ./lib/python/ && coverage run -m pytest tests/test_unit_analyse.py tests/test_unit_container.py tests/test_unit_database.py tests/test_unit_identifier.py tests/test_unit_license.py tests/test_unit_query.py tests/test_unit_rest_client.py tests/test_unit_table.py tests/test_unit_user.py tests/test_unit_view.py --junitxml=report.xml && coverage html --omit="test/*" && coverage report --omit="test/*" > ./coverage.txt
-
"
cat
./coverage.txt
|
grep
-o
'TOTAL[^%]*%'"
artifacts
:
when
:
always
paths
:
-
./lib/python/report.xml
-
./lib/python/coverage.txt
expire_in
:
1 days
reports
:
junit
:
./lib/python/report.xml
coverage
:
'
/TOTAL.*?([0-9]{1,3})%/'
test-ui
:
stage
:
test
image
:
docker.io/docker:24-dind
needs
:
-
build-ui
dependencies
:
-
build-ui
before_script
:
-
"
apk
add
--no-cache
bash
apache2-utils"
-
"
docker
compose
build
dbrepo-ui"
-
"
docker
run
--name
dbrepo-ui
-e
NODE_OPTIONS='--max_old_space_size=256'
-p
3000:3000
-d
dbrepo-ui:latest"
script
:
-
"
sleep
30"
-
"
ENDPOINT=http://localhost:3000
bash
./dbrepo-ui/test/test_heap.sh"
release-images
:
stage
:
release
image
:
docker:24-dind
dependencies
:
-
test-metadata-service
-
test-data-service
-
test-analyse-service
only
:
refs
:
-
/^release-.*/
before_script
:
-
"
docker
logout
${CI_REGISTRY_URL}"
-
"
echo
${CI_REGISTRY_PASSWORD}
|
docker
login
--username
${CI_REGISTRY_USER}
--password-stdin
${CI_REGISTRY_URL}"
-
"
docker
logout
${CI_REGISTRY2_URL}"
-
"
echo
${CI_REGISTRY2_PASSWORD}
|
docker
login
--username
${CI_REGISTRY2_USER}
--password-stdin
${CI_REGISTRY2_URL}"
-
"
ifconfig
eth0
mtu
1450
up"
-
"
apk
add
--no-cache
make
bash"
script
:
-
"
make
release-images"
release-helm
:
stage
:
release
image
:
docker:24-dind
only
:
refs
:
-
/^release-.*/
when
:
manual
needs
:
-
build-helm
dependencies
:
-
build-helm
before_script
:
-
"
docker
logout
${CI_REGISTRY_URL}"
-
"
echo
${CI_REGISTRY_PASSWORD}
|
docker
login
--username
${CI_REGISTRY_USER}
--password-stdin
${CI_REGISTRY_URL}"
-
"
docker
logout
${CI_REGISTRY2_URL}"
-
"
echo
${CI_REGISTRY2_PASSWORD}
|
docker
login
--username
${CI_REGISTRY2_USER}
--password-stdin
${CI_REGISTRY2_URL}"
-
"
apk
add
sed
helm
curl"
-
"
mkdir
-p
~/.gnupg"
-
echo "$CI_GPG_KEYRING" | base64 -d > ~/.gnupg/secring.gpg
-
echo "$CI_GPG_KEYRING2" | base64 -d > ~/.gnupg/pubring.gpg
-
"
helm
package
./helm/dbrepo
--sign
--key
'Martin
Weise'
--keyring
~/.gnupg/secring.gpg
--destination
./build"
-
"
helm
plugin
install
https://github.com/sigstore/helm-sigstore"
script
:
-
"
helm
push
./build/dbrepo-${CHART_VERSION}.tgz
oci://${CI_REGISTRY2_URL}/helm"
-
"
helm
sigstore
upload
./build/dbrepo-${CHART_VERSION}.tgz"
release-docs
:
stage
:
release
image
:
docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
only
:
refs
:
-
/^release-.*/
before_script
:
-
"
apk
add
--no-cache
alpine-sdk
bash
sed
wget
openssh
jq
curl"
-
"
pip
install
pipenv"
-
"
pipenv
install
--dev
--system
--deploy"
-
"
mkdir
-p
./final/${DOC_VERSION}/rest"
-
"
mkdir
-p
./final/${APP_VERSION}"
script
:
-
"
make
gen-lib-doc
gen-docs-doc
package-config"
-
"
cp
-r
./lib/python/docs/build/html
./final/${DOC_VERSION}/python"
# sphinx
-
"
cp
.docs/.swagger/api.yaml
./final/${DOC_VERSION}/rest/api.yaml"
# swagger
-
"
cp
.docs/.swagger/swagger-ui.html
./final/${DOC_VERSION}/rest/index.html"
# swagger
-
"
cp
.docs/.swagger/custom.css
./final/${DOC_VERSION}/rest/custom.css"
# swagger
-
"
cp
-r
./site/*
./final/${DOC_VERSION}"
# mkdocs
-
"
cp
.docker/dist.tar.gz
./final/${APP_VERSION}/dist.tar.gz"
# dist
-
"
cp
.docs/index.html.tpl
./final/${APP_VERSION}/index.html"
# redirect patch docs
-
sed -i "s/\${DOC_VERSION}/${DOC_VERSION}/g" index.html
-
"
bash
./.gitlab/gen-badge.sh"
-
eval $(ssh-agent -s)
-
"
mkdir
-p
/root/.ssh"
-
echo "$CI_KEY_PRIVATE" > /root/.ssh/id_rsa && chmod 0600 /root/.ssh/id_rsa
-
echo "$CI_KEY_PUBLIC" > /root/.ssh/id_rsa.pub
-
echo "$CI_DOC_ID" > ~/.ssh/known_hosts
-
tar czf ./final.tar.gz ./final
-
"
scp
-oHostKeyAlgorithms=+ssh-rsa
-oPubkeyAcceptedAlgorithms=+ssh-rsa
final.tar.gz
$CI_DOC_USER@$CI_DOC_IP:final.tar.gz"
-
"
scp
-oHostKeyAlgorithms=+ssh-rsa
-oPubkeyAcceptedAlgorithms=+ssh-rsa
versions.json
$CI_DOC_USER@$CI_DOC_IP:/system/user/ifs/infrastructures/public_html/dbrepo/versions.json"
-
"
scp
-oHostKeyAlgorithms=+ssh-rsa
-oPubkeyAcceptedAlgorithms=+ssh-rsa
.docs/index.html.tpl
$CI_DOC_USER@$CI_DOC_IP:/system/user/ifs/infrastructures/public_html/dbrepo/index.html"
-
'
ssh
-oHostKeyAlgorithms=+ssh-rsa
-oPubkeyAcceptedAlgorithms=+ssh-rsa
$CI_DOC_USER@$CI_DOC_IP
"rm
-rf
/system/user/ifs/infrastructures/public_html/dbrepo/${DOC_VERSION};
tar
xzf
./final.tar.gz;
rm
-f
./final.tar.gz;
cp
-r
./final/*
/system/user/ifs/infrastructures/public_html/dbrepo;
rm
-rf
./final"'
#test-metadata-service:
release-libs
:
# image: maven:3-openjdk-${JAVA_VERSION}
stage
:
release
# stage: test
image
:
docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
# needs:
when
:
manual
# - build-metadata-service
only
:
# dependencies:
refs
:
# - build-metadata-service
-
/^release-.*/
# script:
variables
:
# - "mvn -f ./dbrepo-metadata-service/pom.xml clean test verify $MAVEN_OPTS"
PIPENV_PIPFILE
:
"
./dbrepo-analyse-service/Pipfile"
# - "cat ./dbrepo-metadata-service/report/target/site/jacoco-aggregate/index.html | grep -o 'Total[^%]*%' | sed 's/<.*>/ /; s/Total/Jacoco Coverage Total:/'"
before_script
:
# artifacts:
-
"
apk
add
sed
bash"
# when: always
-
"
pip
install
pipenv
twine
build"
# paths:
-
"
pipenv
install
gunicorn
&&
pipenv
install
--dev
--system
--deploy"
# - ./dbrepo-metadata-service/report/target/site/jacoco-aggregate/
script
:
# - ./dbrepo-metadata-service/rest-service/target/surefire-reports/
-
bash ./lib/python/package.sh
# expire_in: 1 days
-
bash ./lib/python/release.sh
# reports:
# junit: ./dbrepo-metadata-service/rest-service/target/surefire-reports/TEST-*.xml
verify-install-script
:
# coverage: '/Total.*?([0-9]{1,3})%/'
image
:
docker.io/docker:24-dind
#
stage
:
verify
#test-data-service:
only
:
# image: maven:3-openjdk-${JAVA_VERSION}
refs
:
# stage: test
-
/^release-.*/
# needs:
variables
:
# - build-data-service
SKIP_CHECKS
:
1
# dependencies:
before_script
:
# - build-data-service
-
"
apk
add
bash
curl"
# script:
script
:
# - "mvn -f ./dbrepo-metadata-service/pom.xml clean install $MAVEN_OPTS"
-
"
curl
-sSL
https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/release-${DOC_VERSION}/install.sh
|
bash
|
grep
'Success!'"
# - "mvn -f ./dbrepo-data-service/pom.xml clean test verify $MAVEN_OPTS"
# - "cat ./dbrepo-data-service/report/target/site/jacoco-aggregate/index.html | grep -o 'Total[^%]*%' | sed 's/<.*>/ /; s/Total/Jacoco Coverage Total:/'"
verify-dist
:
# artifacts:
image
:
docker.io/alpine:${ALPINE_VERSION}
# when: always
stage
:
verify
# paths:
only
:
# - ./dbrepo-data-service/report/target/site/jacoco-aggregate/
refs
:
# - ./dbrepo-data-service/rest-service/target/surefire-reports/
-
/^release-.*/
# expire_in: 1 days
before_script
:
# reports:
-
"
apk
add
curl"
# junit: ./dbrepo-data-service/rest-service/target/surefire-reports/TEST-*.xml
script
:
# coverage: '/Total.*?([0-9]{1,3})%/'
-
"
curl
-v
--output
/dev/null
--fail
https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/${APP_VERSION}/dist.tar.gz"
#
#test-upload-service:
scan-sonarqube
:
# image: maven:3-openjdk-${JAVA_VERSION}
image
:
sonarsource/sonar-scanner-cli:10.0
# stage: test
stage
:
scan
# script:
only
:
# - "mvn -f ./dbrepo-metadata-service/pom.xml clean install $MAVEN_OPTS -DskipTests"
refs
:
# - "mvn -f ./dbrepo-upload-service/pom.xml clean test $MAVEN_OPTS"
-
master
#
needs
:
#test-analyse-service:
-
build-data-service
# image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
-
build-metadata-service
# stage: test
dependencies
:
# variables:
-
build-data-service
# PIPENV_PIPFILE: "./dbrepo-analyse-service/Pipfile"
-
build-metadata-service
# needs:
script
:
# - build-analyse-service
-
'
sonar-scanner
-Dsonar.token="${CI_SONAR_TOKEN}"'
# dependencies:
allow_failure
:
true
# - build-analyse-service
cache
:
# script:
policy
:
pull
# - "pip install pipenv"
key
:
"
${CI_COMMIT_SHORT_SHA}"
# - "pipenv install gunicorn && pipenv install --dev --system --deploy"
paths
:
# - cd ./dbrepo-analyse-service/ && coverage run -m pytest test/test_determine_dt.py test/test_determine_pk.py test/test_s3_client.py --junitxml=report.xml && coverage html --omit="test/*" && coverage report --omit="test/*" > ./coverage.txt
-
sonar-scanner/
# - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'"
\ No newline at end of file
# artifacts:
# when: always
# paths:
# - ./dbrepo-analyse-service/report.xml
# - ./dbrepo-analyse-service/coverage.txt
# expire_in: 1 days
# reports:
# junit: ./dbrepo-analyse-service/report.xml
# coverage: '/TOTAL.*?([0-9]{1,3})%/'
#
#test-search-service:
# image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
# stage: test
# variables:
# PIPENV_PIPFILE: "./dbrepo-search-service/Pipfile"
# needs:
# - build-search-service
# dependencies:
# - build-search-service
# before_script:
# - "cp -r ./dbrepo-search-service/init/clients ./dbrepo-search-service/clients"
# - "cp -r ./dbrepo-search-service/init/omlib ./dbrepo-search-service/omlib"
# script:
# - "pip install pipenv"
# - "pipenv install gunicorn && pipenv install --dev --system --deploy"
# - cd ./dbrepo-search-service/ && coverage run -m pytest test/test_app.py test/test_jwt.py test/test_opensearch_client.py test/test_keycloak_client.py --junitxml=report.xml && coverage html && coverage report > ./coverage.txt
# - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'"
# artifacts:
# when: always
# paths:
# - ./dbrepo-search-service/report.xml
# - ./dbrepo-search-service/coverage.txt
# expire_in: 1 days
# reports:
# junit: ./dbrepo-search-service/report.xml
# coverage: '/TOTAL.*?([0-9]{1,3})%/'
#
#test-search-service-init:
# image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
# stage: test
# variables:
# PIPENV_PIPFILE: "./dbrepo-search-service/init/Pipfile"
# needs:
# - build-search-service
# dependencies:
# - build-search-service
# script:
# - "pip install pipenv"
# - "pipenv install gunicorn && pipenv install --dev --system --deploy"
# - cd ./dbrepo-search-service/init/ && coverage run -m pytest test/test_app.py --junitxml=report.xml && coverage html && coverage report > ./coverage.txt
# - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'"
# artifacts:
# when: always
# paths:
# - ./dbrepo-search-service/report.xml
# - ./dbrepo-search-service/coverage.txt
# expire_in: 1 days
# reports:
# junit: ./dbrepo-search-service/report.xml
# coverage: '/TOTAL.*?([0-9]{1,3})%/'
#
#test-lib:
# image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
# stage: test
# variables:
# PIPENV_PIPFILE: "./lib/python/Pipfile"
# needs:
# - build-lib
# dependencies:
# - build-lib
# script:
# - "pip install pipenv"
# - "pipenv install gunicorn && pipenv install --dev --system --deploy"
# - cd ./lib/python/ && coverage run -m pytest tests/test_unit_analyse.py tests/test_unit_container.py tests/test_unit_database.py tests/test_unit_identifier.py tests/test_unit_license.py tests/test_unit_query.py tests/test_unit_rest_client.py tests/test_unit_table.py tests/test_unit_user.py tests/test_unit_view.py --junitxml=report.xml && coverage html --omit="test/*" && coverage report --omit="test/*" > ./coverage.txt
# - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'"
# artifacts:
# when: always
# paths:
# - ./lib/python/report.xml
# - ./lib/python/coverage.txt
# expire_in: 1 days
# reports:
# junit: ./lib/python/report.xml
# coverage: '/TOTAL.*?([0-9]{1,3})%/'
#
#test-ui:
# stage: test
# image: docker.io/docker:24-dind
# needs:
# - build-ui
# dependencies:
# - build-ui
# before_script:
# - "apk add --no-cache bash apache2-utils"
# - "docker compose build dbrepo-ui"
# - "docker run --name dbrepo-ui -e NODE_OPTIONS='--max_old_space_size=256' -p 3000:3000 -d dbrepo-ui:latest"
# script:
# - "sleep 30"
# - "ENDPOINT=http://localhost:3000 bash ./dbrepo-ui/test/test_heap.sh"
#
#release-images:
# stage: release
# image: docker:24-dind
# dependencies:
# - test-metadata-service
# - test-data-service
# - test-analyse-service
# only:
# refs:
# - /^release-.*/
# before_script:
# - "docker logout ${CI_REGISTRY_URL}"
# - "echo ${CI_REGISTRY_PASSWORD} | docker login --username ${CI_REGISTRY_USER} --password-stdin ${CI_REGISTRY_URL}"
# - "docker logout ${CI_REGISTRY2_URL}"
# - "echo ${CI_REGISTRY2_PASSWORD} | docker login --username ${CI_REGISTRY2_USER} --password-stdin ${CI_REGISTRY2_URL}"
# - "ifconfig eth0 mtu 1450 up"
# - "apk add --no-cache make bash"
# script:
# - "make release-images"
#
#release-helm:
# stage: release
# image: docker:24-dind
# only:
# refs:
# - /^release-.*/
# when: manual
# needs:
# - build-helm
# dependencies:
# - build-helm
# before_script:
# - "docker logout ${CI_REGISTRY_URL}"
# - "echo ${CI_REGISTRY_PASSWORD} | docker login --username ${CI_REGISTRY_USER} --password-stdin ${CI_REGISTRY_URL}"
# - "docker logout ${CI_REGISTRY2_URL}"
# - "echo ${CI_REGISTRY2_PASSWORD} | docker login --username ${CI_REGISTRY2_USER} --password-stdin ${CI_REGISTRY2_URL}"
# - "apk add sed helm curl"
# - "mkdir -p ~/.gnupg"
# - echo "$CI_GPG_KEYRING" | base64 -d > ~/.gnupg/secring.gpg
# - echo "$CI_GPG_KEYRING2" | base64 -d > ~/.gnupg/pubring.gpg
# - "helm package ./helm/dbrepo --sign --key 'Martin Weise' --keyring ~/.gnupg/secring.gpg --destination ./build"
# - "helm plugin install https://github.com/sigstore/helm-sigstore"
# script:
# - "helm push ./build/dbrepo-${CHART_VERSION}.tgz oci://${CI_REGISTRY2_URL}/helm"
# - "helm sigstore upload ./build/dbrepo-${CHART_VERSION}.tgz"
#
#release-docs:
# stage: release
# image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
# only:
# refs:
# - /^release-.*/
# before_script:
# - "apk add --no-cache alpine-sdk bash sed wget openssh jq curl"
# - "pip install pipenv"
# - "pipenv install --dev --system --deploy"
# - "mkdir -p ./final/${DOC_VERSION}/rest"
# - "mkdir -p ./final/${APP_VERSION}"
# script:
# - "make gen-lib-doc gen-docs-doc package-config"
# - "cp -r ./lib/python/docs/build/html ./final/${DOC_VERSION}/python" # sphinx
# - "cp .docs/.swagger/api.yaml ./final/${DOC_VERSION}/rest/api.yaml" # swagger
# - "cp .docs/.swagger/swagger-ui.html ./final/${DOC_VERSION}/rest/index.html" # swagger
# - "cp .docs/.swagger/custom.css ./final/${DOC_VERSION}/rest/custom.css" # swagger
# - "cp -r ./site/* ./final/${DOC_VERSION}" # mkdocs
# - "cp .docker/dist.tar.gz ./final/${APP_VERSION}/dist.tar.gz" # dist
# - "cp .docs/index.html.tpl ./final/${APP_VERSION}/index.html" # redirect patch docs
# - sed -i "s/\${DOC_VERSION}/${DOC_VERSION}/g" index.html
# - "bash ./.gitlab/gen-badge.sh"
# - eval $(ssh-agent -s)
# - "mkdir -p /root/.ssh"
# - echo "$CI_KEY_PRIVATE" > /root/.ssh/id_rsa && chmod 0600 /root/.ssh/id_rsa
# - echo "$CI_KEY_PUBLIC" > /root/.ssh/id_rsa.pub
# - echo "$CI_DOC_ID" > ~/.ssh/known_hosts
# - tar czf ./final.tar.gz ./final
# - "scp -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedAlgorithms=+ssh-rsa final.tar.gz $CI_DOC_USER@$CI_DOC_IP:final.tar.gz"
# - "scp -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedAlgorithms=+ssh-rsa versions.json $CI_DOC_USER@$CI_DOC_IP:/system/user/ifs/infrastructures/public_html/dbrepo/versions.json"
# - "scp -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedAlgorithms=+ssh-rsa .docs/index.html.tpl $CI_DOC_USER@$CI_DOC_IP:/system/user/ifs/infrastructures/public_html/dbrepo/index.html"
# - 'ssh -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedAlgorithms=+ssh-rsa $CI_DOC_USER@$CI_DOC_IP "rm -rf /system/user/ifs/infrastructures/public_html/dbrepo/${DOC_VERSION}; tar xzf ./final.tar.gz; rm -f ./final.tar.gz; cp -r ./final/* /system/user/ifs/infrastructures/public_html/dbrepo; rm -rf ./final"'
#
#release-libs:
# stage: release
# image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
# when: manual
# only:
# refs:
# - /^release-.*/
# variables:
# PIPENV_PIPFILE: "./dbrepo-analyse-service/Pipfile"
# before_script:
# - "apk add sed bash"
# - "pip install pipenv twine build"
# - "pipenv install gunicorn && pipenv install --dev --system --deploy"
# script:
# - bash ./lib/python/package.sh
# - bash ./lib/python/release.sh
#
#verify-install-script:
# image: docker.io/docker:24-dind
# stage: verify
# only:
# refs:
# - /^release-.*/
# variables:
# SKIP_CHECKS: 1
# before_script:
# - "apk add bash curl"
# script:
# - "curl -sSL https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/release-${DOC_VERSION}/install.sh | bash | grep 'Success!'"
#
#verify-dist:
# image: docker.io/alpine:${ALPINE_VERSION}
# stage: verify
# only:
# refs:
# - /^release-.*/
# before_script:
# - "apk add curl"
# script:
# - "curl -v --output /dev/null --fail https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/${APP_VERSION}/dist.tar.gz"
#
#scan-sonarqube:
# image: sonarsource/sonar-scanner-cli:10.0
# stage: scan
# only:
# refs:
# - master
# needs:
# - build-data-service
# - build-metadata-service
# dependencies:
# - build-data-service
# - build-metadata-service
# script:
# - 'sonar-scanner -Dsonar.token="${CI_SONAR_TOKEN}"'
# allow_failure: true
# cache:
# policy: pull
# key: "${CI_COMMIT_SHORT_SHA}"
# paths:
# - sonar-scanner/
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment