ModeratorElection/.gitlab-ci.yml
2024-07-09 10:40:04 +02:00

119 lines
3.4 KiB
YAML

stages:
- build
# - test
# - package
# - publish
# - release
.kotlin-job: &kotlin
image: domaindrivenarchitecture/ddadevops-kotlin:4.10.7
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- .gradle/wrapper
- .gradle/caches
before_script:
- echo "---------- Start CI ----------"
- export GRADLE_USER_HOME=`pwd`/.gradle
- chmod +x gradlew
- export RELEASE_ARTIFACT_TOKEN=$MEISSA_REPO_BUERO_RW
- echo "------ commit info ---------------"
- echo $CI_COMMIT_TAG
- echo $CI_COMMIT_REF_NAME
- echo "----------------------------------"
.tag_only: &tag_only
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: never
- if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/'
build:
<<: *kotlin
stage: build
script:
- graalvm_jdk_version="22.0.1"
- curl -SsLo /tmp/graalvm-community-jdk.tar.gz https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-${graalvm_jdk_version}/graalvm-community-jdk-${graalvm_jdk_version}_linux-x64_bin.tar.gz
- curl -SsLo /tmp/graalvm-checksum https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-${graalvm_jdk_version}/graalvm-community-jdk-${graalvm_jdk_version}_linux-x64_bin.tar.gz.sha256
- echo " /tmp/graalvm-jdk-${graalvm_JDK_version}_linux-x64_bin.tar.gz"|tee -a /tmp/graalvm-jdk-${graalvm_JDK_version}_linux-x64_bin.tar.gz.sha256
- sha256sum -c --status /tmp/graalvm-jdk-${graalvm_JDK_version}_linux-x64_bin.tar.gz.sha256
- mkdir /usr/lib/jvm/
- tar -C /usr/lib/jvm/ -xzf /tmp/graalvm-jdk-${graalvm_JDK_version}_linux-x64_bin.tar.gz
- dirname_graalvm=$(ls /usr/lib/jvm/|grep -e graa)
- ln -s /usr/lib/jvm/$dirname_graalvm /usr/lib/jvm/graalvm
- export JAVA_HOME=/usr/lib/jvm/graalvm
- ./gradlew clean build -Pvaadin.productionMode
artifacts:
paths:
- build/libs/*.jar
expire_in: 1 week
variables:
DOCKER_TLS_CERTDIR: "/certs"
test:
stage: test
image: docker:latest
services:
- docker:dind
dependencies:
- build
before_script:
- echo "---------- BEFORE -------------"
- echo "$CI_REGISTRY_PASSWORD" | docker login $CI_REGISTRY --username $CI_REGISTRY_USER --password-stdin
script:
- echo "---------- TEST -------------"
- apk -U update && apk add bash
- docker build --pull -t "$CI_REGISTRY_IMAGE" .
- docker run --privileged -dit --name meapp_test -v /var/run/docker.sock:/var/run/docker.sock $CI_REGISTRY_IMAGE
- docker inspect -f '{{.State.Running}}' meapp_test
- ./gradlew -x assemble test -Dtestdockerwithoutsudo=true -DexcludeTags=extensivecontainertest,nonci
artifacts:
when: on_failure
paths:
- build/reports/*
reports:
junit: build/test-results/test/TEST-*.xml
package:
<<: *kotlin
stage: package
script:
- pyb package
artifacts:
paths:
- build/libs/*.jar
- build/libs/*.lst
publish-maven-package-to-gitlab:
<<: *kotlin
<<: *tag_only
stage: publish
script:
- ./gradlew -x assemble -x test publishLibraryPublicationToGitlabRepository
publish-maven-package-to-meissa:
<<: *kotlin
<<: *tag_only
stage: publish
allow_failure: true
script:
- ./gradlew -x assemble -x test publishLibraryPublicationToMeissaRepository
release-to-meissa:
<<: *kotlin
<<: *tag_only
stage: release
allow_failure: true
script:
- pyb publish_release
after_script:
- echo "---------- End CI ----------"