Skip to content

Docker Build

Docker Build #555

Workflow file for this run

# -----------------------------------------------------------------------------
# Copyright Helio Chissini de Castro 2022.
# Part of the SW360 Project.
#
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# -----------------------------------------------------------------------------
name: Docker Build
on:
schedule:
- cron: '0 0 * * *' # Midnight
workflow_dispatch:
inputs:
invalidate-cache:
description: 'Build all images disregarding exists same version'
required: false
debug:
description: 'Debug docker build'
required: false
push:
tags:
- 'sw360-*'
paths-ignore:
- '**.md'
env:
REGISTRY: ghcr.io
permissions: write-all
jobs:
sw360_version:
name: SW360 Version
runs-on: ubuntu-latest
outputs:
sw360_version: ${{ steps.pom_version.outputs.SW360_VERSION }}
steps:
- name: Checkout main repository
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
cache: 'maven'
distribution: 'temurin'
- name: Get revision from pom.xml
id: pom_version
run: |
echo "SW360_VERSION=$(mvn help:evaluate -Dexpression=revision -q -DforceStdout)" >> "$GITHUB_OUTPUT"
thrift_image:
name: Build SW360 Thrift image
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout main repository
uses: actions/checkout@v4
- name: Set environment variables
run: |
cat .versions >> $GITHUB_ENV
- name: Build thrift image
uses: heliocastro/docker-build-control@v1
with:
name: thrift
token: ${{ secrets.GITHUB_TOKEN }}
version: ${{ env.THRIFT_VERSION }}
invalidate-cache: ${{ inputs.invalidate-cache }}
debug: ${{ inputs.debug }}
build-args: |
THRIFT_VERSION=${{ env.THRIFT_VERSION }}
binary_image:
name: SW360 Binary
needs: [sw360_version, thrift_image]
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout main repository
uses: actions/checkout@v4
- name: Set environment variables
run: |
cat .versions >> $GITHUB_ENV
- name: Build binary image
uses: heliocastro/docker-build-control@v1
with:
name: binaries
version: ${{ needs.sw360_version.outputs.sw360_version }}
token: ${{ secrets.GITHUB_TOKEN }}
invalidate-cache: ${{ inputs.invalidate-cache }}
debug: ${{ inputs.debug }}
build-args: |
THRIFT_VERSION=${{ env.THRIFT_VERSION }}
SW360_VERSION=${{ env.SHORT_SHA }}
secret-files: |
"sw360=./scripts/docker-config/default_secrets"
build-contexts: |
thrift=docker-image://${{ env.REGISTRY }}/${{ github.repository }}/thrift:${{ env.THRIFT_VERSION }}
runtime_image:
name: SW360 Runtime image
needs: [sw360_version, binary_image]
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout main repository
uses: actions/checkout@v4
- name: Set environment variables
run: |
cat .versions >> $GITHUB_ENV
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract components metadata (tags, labels) runtime image
id: meta_runtime
uses: docker/metadata-action@v5
with:
images: |
${{ env.REGISTRY }}/${{ github.repository }}
tags: |
type=schedule,pattern={{date 'YYYYMMDD'}}
type=schedule,pattern=nightly
type=raw,value=${{ needs.sw360_version.outputs.sw360_version }}
type=sha,enable=true,prefix=sha-,format=short
type=ref,event=tag
- name: Build image
uses: docker/build-push-action@v5
with:
context: .
target: sw360
push: true
tags: ${{ steps.meta_runtime.outputs.tags }}
labels: ${{ steps.meta_runtime.outputs.labels }}
build-contexts: |
base=docker-image://${{ env.REGISTRY }}/${{ github.repository }}/base:${{ env.JAVA_VERSION }}-jdk-${{ env.UBUNTU_VERSION }}
binaries=docker-image://${{ env.REGISTRY }}/${{ github.repository }}/binaries:${{ needs.sw360_version.outputs.sw360_version }}