1
0
VersionChecker/.gitlab-ci.yml
2023-07-29 12:37:34 +02:00

269 lines
11 KiB
YAML

stages:
- Tests
- Documentation
- Release
- Build Release
- Other
variables:
project_name: "$CI_PROJECT_NAME"
SEMANTIC_RELEASE_PACKAGE: "$CI_PROJECT_NAME"
SECURE_ANALYZERS_PREFIX: "registry.gitlab.com/gitlab-org/security-products/analyzers"
SAST_EXCLUDED_ANALYZERS: ""
SAST_EXCLUDED_PATHS: "spec, test, tests, tmp"
SCAN_KUBERNETES_MANIFESTS: "false"
SECRETS_ANALYZER_VERSION: "3"
SECRET_DETECTION_EXCLUDED_PATHS: ""
image: docker.griefed.dev/griefed/baseimage-ubuntu-jdk-8:2.0.22
services:
- name: docker.griefed.dev/griefed/gitlab-ci-cd:2.2.12
alias: docker
workflow:
rules:
- if: '$CI_MERGE_REQUEST_EVENT_TYPE == "detached"'
when: never
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: never
- if: '$CI_COMMIT_TITLE =~ /^RELEASE:.+$/ && $CI_COMMIT_BRANCH' # && $CI_COMMIT_TAG == null
when: never
- when: always
Gradle Test:
stage: Tests
before_script:
- chmod +x gradlew
script:
- echo "**** Building ${CI_PROJECT_NAME} ****"
- "./gradlew build --info --full-stacktrace"
- echo "**** Listing build directory ****"
- LC_COLLATE=C ls -ahl --group-directories-first --color=auto build/jacoco/test
- LC_COLLATE=C ls -ahl --group-directories-first --color=auto build/libs
- cat build/jacoco/test/html/index.html | grep -o 'Total[^%]*%'
- echo "**** Renaming files to please the eye ****"
- mv build/libs/${CI_PROJECT_NAME}.jar build/libs/${CI_PROJECT_NAME}-$CI_COMMIT_REF_NAME.jar
coverage: '/Total.*?([0-9]{1,3})%/'
artifacts:
paths:
- build/libs/${CI_PROJECT_NAME}-$CI_COMMIT_REF_NAME.jar
- build/jacoco/test/jacocoTestReport.xml
- build/reports/tests/test
expire_in: 1 week
Generate Release:
stage: Release
needs:
- job: Gradle Test
artifacts: false
image: docker.griefed.dev/griefed/gitlab-ci-cd:2.2.12
script:
- npx semantic-release
rules:
- if: '$CI_COMMIT_BRANCH == "alpha" && $CI_COMMIT_TITLE !~ /^RELEASE:.+$/ && $CI_SERVER_HOST == "git.griefed.de"'
- if: '$CI_COMMIT_BRANCH == "beta" && $CI_COMMIT_TITLE !~ /^RELEASE:.+$/ && $CI_SERVER_HOST == "git.griefed.de"'
- if: '$CI_COMMIT_BRANCH == "main" && $CI_COMMIT_TITLE !~ /^RELEASE:.+$/ && $CI_SERVER_HOST == "git.griefed.de"'
Build Release:
stage: Build Release
before_script:
- echo "**** Running in $CI_JOB_ID ****"
- echo "**** Java location ****"
- which java
- echo "**** Java version ****"
- java -version
- echo "**** Allowing execution of gradlew ****"
- chmod +x gradlew
- echo "**** Ensure clean environment ****"
- "./gradlew clean"
script:
- echo "**** Building ${CI_PROJECT_NAME} ****"
- "./gradlew build -Pversion=${CI_COMMIT_TAG} --info -x test"
- echo "**** Listing build directory ****"
- LC_COLLATE=C ls -ahl --group-directories-first --color=auto build
- LC_COLLATE=C ls -ahl --group-directories-first --color=auto build/libs
- echo "**** Uploading packages ****"
- 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file build/libs/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.jar "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${CI_COMMIT_TAG}/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.jar"'
- 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file build/libs/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-javadoc.jar "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${CI_COMMIT_TAG}/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-javadoc.jar"'
- 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file build/libs/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-sources.jar "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${CI_COMMIT_TAG}/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-sources.jar"'
- echo "**** Create asset links ****"
- 'curl --request POST --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" --data tag_name="${CI_COMMIT_TAG}" --data name="${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.jar" --data url="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${CI_COMMIT_TAG}/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.jar" --data link_type="package" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/releases/${CI_COMMIT_TAG}/assets/links"'
- 'curl --request POST --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" --data tag_name="${CI_COMMIT_TAG}" --data name="${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-javadoc.jar" --data url="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${CI_COMMIT_TAG}/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-javadoc.jar" --data link_type="package" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/releases/${CI_COMMIT_TAG}/assets/links"'
- 'curl --request POST --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" --data tag_name="${CI_COMMIT_TAG}" --data name="${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-sources.jar" --data url="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${CI_COMMIT_TAG}/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-sources.jar" --data link_type="package" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/releases/${CI_COMMIT_TAG}/assets/links"'
rules:
- if: "$CI_COMMIT_TAG =~ /^\\d+\\.\\d+\\.\\d+(-beta|-alpha)\\.\\d+$/"
- if: "$CI_COMMIT_TAG =~ /^\\d+\\.\\d+\\.\\d+$/"
Sign Java Publication:
stage: Build Release
needs:
- job: Build Release
artifacts: false
optional: false
before_script:
- chmod +x gradlew
script:
- echo "**** Publishing Maven Artifacts ****"
- "./gradlew signMavenJavaPublication -Pversion=${CI_COMMIT_TAG} -x test --info --stacktrace"
rules:
- if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+-beta\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"'
- if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"'
cache:
- key:
files:
- build.gradle
- gradle/gradle-wrapper.properties
paths:
- .gradle
policy: pull
Publish GitHub:
stage: Build Release
needs:
- job: Sign Java Publication
optional: false
artifacts: true
before_script:
- chmod +x gradlew
script:
- echo "**** Publishing Maven Artifacts to GitHub ****"
- "./gradlew publishMavenJavaPublicationToGitHubPackagesRepository -Pversion=${CI_COMMIT_TAG} -x test --info --stacktrace"
rules:
- if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+-beta\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"'
- if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"'
cache:
- key:
files:
- build.gradle
- gradle/gradle-wrapper.properties
paths:
- .gradle
policy: pull
Publish GitLab:
stage: Build Release
needs:
- job: Sign Java Publication
optional: false
artifacts: true
before_script:
- chmod +x gradlew
script:
- echo "**** Publishing Maven Artifacts to GitLab ****"
- "./gradlew publishMavenJavaPublicationToMaven2Repository -Pversion=${CI_COMMIT_TAG} -x test --info --stacktrace"
rules:
- if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+-beta\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"'
- if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"'
cache:
- key:
files:
- build.gradle
- gradle/gradle-wrapper.properties
paths:
- .gradle
policy: pull
Publish GitGriefed:
stage: Build Release
needs:
- job: Sign Java Publication
optional: false
artifacts: true
before_script:
- chmod +x gradlew
script:
- echo "**** Publishing Maven Artifacts GitGriefed ****"
- "./gradlew publishMavenJavaPublicationToMavenRepository -Pversion=${CI_COMMIT_TAG} -x test --info --stacktrace"
rules:
- if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+-beta\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"'
- if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"'
cache:
- key:
files:
- build.gradle
- gradle/gradle-wrapper.properties
paths:
- .gradle
policy: pull
Publish OSSRH:
stage: Build Release
needs:
- job: Sign Java Publication
optional: false
artifacts: true
before_script:
- chmod +x gradlew
script:
- echo "**** Publishing Maven Artifacts to OSSRH ****"
- "./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository -Pversion=${CI_COMMIT_TAG} -x test --info --stacktrace"
rules:
- if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+-beta\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"'
- if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"'
cache:
- key:
files:
- build.gradle
- gradle/gradle-wrapper.properties
paths:
- .gradle
policy: pull
#Inform About Release:
# stage: Build Release
# image: docker.griefed.dev/griefed/gitlab-ci-cd:2.0.9
# needs:
# - job: Build Release
# artifacts: false
# script:
# - /discord.sh
# --webhook-url="$WEBHOOK_URL"
# --username "$CI_PROJECT_TITLE"
# --avatar "https://i.griefed.de/images/2020/11/18/Prosper_Docker_300x300.png"
# --text "There's been a new release for ${CI_PROJECT_TITLE}. The new version is ${CI_COMMIT_TAG} and is available at <${CI_PROJECT_URL}/-/releases/${CI_COMMIT_TAG}>"
# --title "New ${CI_PROJECT_TITLE} Release"
# --description "There's been a new release for ${CI_PROJECT_TITLE}. The new version is ${CI_COMMIT_TAG} and is available at ${CI_PROJECT_URL}/-/releases/${CI_COMMIT_TAG}"
# --color "0xC0FFEE"
# --url "${CI_PROJECT_URL}/-/releases/${CI_COMMIT_TAG}"
# --author "Griefed"
# --author-url "https://${CI_SERVER_HOST}/Griefed"
# --author-icon "https://i.griefed.de/images/2022/01/21/sam_1500x1500.th.jpg"
# --thumbnail "https://i.griefed.de/images/2020/11/18/Prosper_Docker_300x300.th.png"
# --field "Author;[Griefed](https://${CI_SERVER_HOST}/Griefed)"
# --field "Platform;[${CI_SERVER_HOST}](https://${CI_SERVER_HOST})"
# --footer "Released at $CI_JOB_STARTED_AT"
# --footer-icon "https://i.griefed.de/images/2022/01/21/start_generation.png"
# rules:
# - if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+-(alpha|beta)\.\d+$/'
# - if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+$/'
release_job:
stage: Release
image: registry.gitlab.com/gitlab-org/release-cli:latest
rules:
- if: '$CI_COMMIT_TAG && $CI_SERVER_HOST == "gitlab.com"'
script:
- echo "Running the release job to mirror release generation from parent repository."
release:
tag_name: $CI_COMMIT_TAG
name: 'Release $CI_COMMIT_TAG'
description: './CHANGELOG.md'
pages:
stage: Documentation
before_script:
- which java
- chmod +x gradlew
- "./gradlew clean"
script:
- "./gradlew javaDoc --info -x test"
- cp -Rf build/docs/javadoc public
- LC_COLLATE=C ls -ahl --group-directories-first --color=auto public
only:
- main
artifacts:
paths:
- public
expire_in: 1 week