public devops part

This commit is contained in:
Tobias Lehmann 2024-06-03 08:44:51 +02:00
parent 626cb4e4ac
commit 65d420d417
3 changed files with 169 additions and 0 deletions

View File

@ -0,0 +1,47 @@
#
#
# Build workflow for all modules of captica.expert
#
# Project: workflows
# Author: Marc Böhm <marc.boehm@captica.de>
# License: MIT License (see LICENSE.md)
#
# Copyright (c) captica GmbH est. 2021
#
name: Java build workflow for captica.expert modules
on:
workflow_call:
jobs:
build:
name: Build java distribution
runs-on: docker-ubuntu-nonroot
steps:
- name: Checkout source code
uses: actions/checkout@v4
with:
token: ${{ secrets.GIT_ACCESS_TOKEN }}
submodules: 'true'
- name: Setup java runtime
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '21'
- name: Run gradle build process
run: |
./gradlew build
- name: Upload build artifacts
uses: actions/upload-artifact@v3
with:
name: artifacts-build
path: |
build/libs/
build/*.sh
retention-days: 10
- name: Upload test artifacts
uses: actions/upload-artifact@v3
with:
name: artifacts-test
path: |
build/test-results
build/reports
retention-days: 10

View File

@ -0,0 +1,48 @@
#
#
# Publish docker workflow for all modules of captica.expert
#
# Project: workflows
# Author: Marc Böhm <marc.boehm@captica.de>
# License: MIT License (see LICENSE.md)
#
# Copyright (c) captica GmbH est. 2021
#
name: Publish docker workflow for captica.expert modules
on:
workflow_call:
jobs:
publish_docker:
name: Build and publish docker image
runs-on: docker-ubuntu
steps:
- name: Checkout source code
uses: actions/checkout@v4
- name: Download build artifacts (dist files)
uses: actions/download-artifact@v3
with:
name: artifacts-build
path: build/
- name: Setup docker buildx environment
uses: docker/setup-buildx-action@v3
- name: Login to docker registry
uses: docker/login-action@v3
with:
registry: ${{ vars.CONTAINER_REGISTRY_URL }}
username: ${{ vars.CONTAINER_REGISTRY_USERNAME }}
password: ${{ secrets.CONTAINER_REGISTRY_TOKEN }}
- name: Setup environment variables from "build/env-setup.sh"
run: |
source build/env-setup.sh
- name: Build and push docker image
uses: docker/build-push-action@v5
with:
context: .
file: ./Dockerfile
push: true
tags: "${{ vars.CONTAINER_REGISTRY_URL }}/${{gitea.repository}}:latest"
build-args: |
FILE_BINARY=${{ env.CAPTICA_APPLICATION_FILE_BINARY }}
NAME_APPLICATION=${{ env.CAPTICA_APPLICATION_NAME }}
PORT_EXPOSURE=${{ env.CAPTICA_APPLICATION_PORT }}
JAVA_VERSION=${{ env.CAPTICA_APPLICATION_JAVA_VERSION }}

View File

@ -0,0 +1,74 @@
/*
* Enables version handling on build process
*
* Project: gradle
* Author: Marc Böhm <marc.boehm@captica.de>
* License: MIT License (see LICENSE.md)
*
* Copyright (c) captica GmbH est. 2021
*/
// Load external plugins
buildscript {
repositories {
gradlePluginPortal()
mavenCentral()
}
dependencies {
classpath 'me.qoomon:gradle-git-versioning-plugin:6.4.3'
}
}
// Apply plugins
apply plugin: me.qoomon.gradle.gitversioning.GitVersioningPlugin
// Setup versions handling
gitVersioning.apply {
refs {
branch('(feature|bugfix)/(?<feature>.+)') {
version = '${ref.feature}-SNAPSHOT'
}
branch('release/v(?<version>.*)') {
version = '${ref.version}-RC'
}
branch('.+') {
version = '${ref}-SNAPSHOT'
}
tag('v(?<version>.*)') {
version = '${ref.version}'
}
}
// optional fallback configuration in case of no matching ref configuration
rev {
version = '${commit}'
}
}
// Simple task to write the env shell script to register version env vars
task writeVersionFile() {
doLast {
new File(buildDir, 'env-setup.sh').text = """
#!/bin/sh
# Default env vars
export CAPTICA_APPLICATION_VERSION=${version}
export CAPTICA_APPLICATION_NAME=${project.name}
export CAPTICA_APPLICATION_FILE_BINARY=${bootJar.archiveFileName.get()}
export CAPTICA_APPLICATION_PORT=${applicationPort}
export CAPTICA_APPLICATION_JAVA_VERSION=${java.sourceCompatibility}
# Gitea/Github specific env variables
echo "CAPTICA_APPLICATION_VERSION=\$CAPTICA_APPLICATION_VERSION" >> \$GITHUB_ENV
echo "CAPTICA_APPLICATION_FILE_BINARY=\$CAPTICA_APPLICATION_FILE_BINARY" >> \$GITHUB_ENV
echo "CAPTICA_APPLICATION_NAME=\$CAPTICA_APPLICATION_NAME" >> \$GITHUB_ENV
echo "CAPTICA_APPLICATION_PORT=\$CAPTICA_APPLICATION_PORT" >> \$GITHUB_ENV
echo "CAPTICA_APPLICATION_JAVA_VERSION=\$CAPTICA_APPLICATION_JAVA_VERSION" >> \$GITHUB_ENV
"""
}
}
// Link up version file task to bootJar
tasks.named('bootJar').configure {
dependsOn writeVersionFile
}