Merge pull request #25 from catenax-ng/feature/CXAR-919-quality-gates #35
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# Copyright (c) 2023 T-Systems International GmbH | |
# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation | |
# | |
# See the NOTICE file(s) distributed with this work for additional | |
# information regarding copyright ownership. | |
# | |
# This program and the accompanying materials are made available under the | |
# terms of the Apache License, Version 2.0 which is available at | |
# https://www.apache.org/licenses/LICENSE-2.0 | |
# | |
# Unless required by applicable law or agreed to in writing, software | |
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | |
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | |
# License for the specific language governing permissions and limitations | |
# under the License. | |
# | |
# SPDX-License-Identifier: Apache-2.0 | |
# | |
name: "Build" | |
on: | |
# Runs automatically on main and release branches | |
push: | |
branches: | |
- main | |
- 'releases/**' | |
# Runs automatically on all code-related PRs to main and release branches | |
pull_request: | |
branches: | |
- main | |
- 'releases/**' | |
paths-ignore: | |
- 'charts/**' | |
- 'docs/**' | |
- '**/*.md' | |
# Can be scheduled on all branches and version tags | |
workflow_dispatch: | |
tags: | |
- 'v*.*.*' | |
- 'v*.*.*-*' | |
branches: | |
- '*' | |
# the docker registry and namespace | |
env: | |
IMAGE_NAMESPACE: "tractusx" | |
# If build is triggered several times, e.g., through subsequent pushes | |
# into the same PR, cancel the previous runs, see below | |
concurrency: | |
# cancel only running jobs on pull requests | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
# Actual build/deploy logic | |
jobs: | |
# Build maven and docker stuff | |
build: | |
name: Build/Deploy Maven & Docker Artifacts | |
runs-on: ubuntu-latest | |
permissions: write-all | |
strategy: | |
fail-fast: false | |
steps: | |
# Get the Code | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
# Setup build environment | |
- uses: ./.github/actions/setup-java | |
# Enabled deployment access (if either running on main or a version tag on eclipse-tractusx) | |
- name: Login to GitHub Container Registry | |
if: ${{ github.repository == 'eclipse-tractusx/knowledge-agents' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) }} | |
uses: docker/login-action@v2 | |
with: | |
# Use existing DockerHub credentials present as secrets | |
username: ${{ secrets.DOCKER_HUB_USER }} | |
password: ${{ secrets.DOCKER_HUB_TOKEN }} | |
# Run Maven Deploy (if either running on main or a version tag on eclipse-tractusx) | |
- name: Deploy Java via Maven | |
if: ${{ github.repository == 'eclipse-tractusx/knowledge-agents' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) }} | |
run: | | |
./mvnw -s settings.xml deploy | |
env: | |
GITHUB_ACTOR: ${{ github.actor }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# Run Maven Install (otherwise) | |
- name: Build Java via Maven | |
if: ${{ github.repository != 'eclipse-tractusx/knowledge-agents' || (github.ref != 'refs/heads/main' && !startsWith(github.ref, 'refs/tags/v')) }} | |
run: | | |
./mvnw -s settings.xml install | |
env: | |
GITHUB_ACTOR: ${{ github.actor }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# Create SemVer or ref tags dependent of trigger event | |
- name: Docker Meta Conforming | |
id: meta-conf | |
uses: docker/metadata-action@v4 | |
with: | |
images: | | |
${{ env.IMAGE_NAMESPACE }}/conforming-agent | |
# Automatically prepare image tags; See action docs for more examples. | |
# semver patter will generate tags like these for example :1 :1.2 :1.2.3 | |
tags: | | |
type=sha,event=branch | |
type=sha,event=pr | |
type=semver,pattern={{version}} | |
type=semver,pattern={{major}} | |
type=semver,pattern={{major}}.{{minor}} | |
# build in any case, but push only main and version tag settings | |
- name: Conforming Container Build and Push | |
uses: docker/build-push-action@v3 | |
with: | |
context: conforming/. | |
file: conforming/src/main/docker/Dockerfile | |
# Build image for verification purposes on every trigger event. Only push if event is not a PR | |
push: ${{ github.repository == 'eclipse-tractusx/knowledge-agents' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) }} | |
tags: ${{ steps.meta-conf.outputs.tags }} | |
labels: ${{ steps.meta-conf.outputs.labels }} | |
# Important step to push image description to DockerHub - since this is version independent, we always take it from main | |
- name: Update Docker Hub description for Conforming Agent | |
if: ${{ github.repository == 'eclipse-tractusx/knowledge-agents' && github.ref == 'refs/heads/main' }} | |
uses: peter-evans/dockerhub-description@v3 | |
with: | |
readme-filepath: conforming/README.md | |
username: ${{ secrets.DOCKER_HUB_USER }} | |
password: ${{ secrets.DOCKER_HUB_TOKEN }} | |
repository: ${{ env.IMAGE_NAMESPACE }}/conforming-agent | |
# Create SemVer or ref tags dependent of trigger event | |
- name: Docker Meta Remoting | |
id: meta-remote | |
uses: docker/metadata-action@v4 | |
with: | |
images: | | |
${{ env.IMAGE_NAMESPACE }}/remoting-agent | |
# Automatically prepare image tags; See action docs for more examples. | |
# semver patter will generate tags like these for example :1 :1.2 :1.2.3 | |
tags: | | |
type=sha,event=branch | |
type=sha,event=pr | |
type=semver,pattern={{version}} | |
type=semver,pattern={{major}} | |
type=semver,pattern={{major}}.{{minor}} | |
# build in any case, but push only main and version tag settings | |
- name: Remoting Container Build and Push | |
uses: docker/build-push-action@v3 | |
with: | |
context: remoting/. | |
file: remoting/src/main/docker/Dockerfile | |
# Build image for verification purposes on every trigger event. Only push if event is not a PR | |
push: ${{ github.repository == 'eclipse-tractusx/knowledge-agents' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) }} | |
tags: ${{ steps.meta-remote.outputs.tags }} | |
labels: ${{ steps.meta-remote.outputs.labels }} | |
# Important step to push image description to DockerHub - since this is version independent, we always take it from main | |
- name: Update Docker Hub description for Remoting Agent | |
if: ${{ github.repository == 'eclipse-tractusx/knowledge-agents' && github.ref == 'refs/heads/main' }} | |
uses: peter-evans/dockerhub-description@v3 | |
with: | |
readme-filepath: remoting/README.md | |
username: ${{ secrets.DOCKER_HUB_USER }} | |
password: ${{ secrets.DOCKER_HUB_TOKEN }} | |
repository: ${{ env.IMAGE_NAMESPACE }}/remoting-agent | |
# Create SemVer or ref tags dependent of trigger event | |
- name: Docker Meta Provisioning | |
id: meta-prov | |
uses: docker/metadata-action@v4 | |
with: | |
images: | | |
${{ env.IMAGE_NAMESPACE }}/provisioning-agent | |
# Automatically prepare image tags; See action docs for more examples. | |
# semver patter will generate tags like these for example :1 :1.2 :1.2.3 | |
tags: | | |
type=sha,event=branch | |
type=sha,event=pr | |
type=semver,pattern={{version}} | |
type=semver,pattern={{major}} | |
type=semver,pattern={{major}}.{{minor}} | |
# build in any case, but push only main and version tag settings | |
- name: Provisioning Container Build and Push | |
uses: docker/build-push-action@v3 | |
with: | |
context: provisioning/. | |
file: provisioning/src/main/docker/Dockerfile | |
# Build image for verification purposes on every trigger event. Only push if event is not a PR | |
push: ${{ github.repository == 'eclipse-tractusx/knowledge-agents' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) }} | |
tags: ${{ steps.meta-prov.outputs.tags }} | |
labels: ${{ steps.meta-prov.outputs.labels }} | |
# Important step to push image description to DockerHub - since this is version independent, we always take it from main | |
- name: Update Docker Hub description for Provisioning Agent | |
if: ${{ github.repository == 'eclipse-tractusx/knowledge-agents' && github.ref == 'refs/heads/main' }} | |
uses: peter-evans/dockerhub-description@v3 | |
with: | |
readme-filepath: provisioning/README.md | |
username: ${{ secrets.DOCKER_HUB_USER }} | |
password: ${{ secrets.DOCKER_HUB_TOKEN }} | |
repository: ${{ env.IMAGE_NAMESPACE }}/provisioning-agent | |