Improve builds part 2 #17
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) 2022 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 2.0 which is available at | |
# * http://www.apache.org/licenses/LICENSE-2.0 | |
# * | |
# * SPDX-License-Identifier: Apache-2.0 | |
# ********************************************************************************/ | |
name: seat-service-docker-build | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
paths: | |
- ".github/workflows/seat_service.yml" | |
- "seat_service/**" | |
- "proto/**" | |
workflow_call: | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.ref }}-${{ github.workflow }} | |
cancel-in-progress: true | |
# Needed as default_workflow_permissions is "read" | |
permissions: | |
packages: write | |
jobs: | |
check_ghcr_push: | |
uses: eclipse-kuksa/kuksa-actions/.github/workflows/check_ghcr_push.yml@2 | |
secrets: inherit | |
get_tag: | |
runs-on: ubuntu-latest | |
outputs: | |
tag: ${{ steps.eval_tag.outputs.tag }} | |
steps: | |
- name: Get tag from workflow / workflow dispatch or fallback to main | |
id: eval_tag | |
run: | | |
if [ -n "${{ github.event.inputs.tag }}" ]; then | |
IMAGE_TAG="${{ github.event.inputs.tag }}" | |
elif [ -n "${{ inputs.tag }}" ]; then | |
IMAGE_TAG="${{ inputs.tag }}" | |
else | |
### if not called from dispatch or call, it must be merging to main | |
IMAGE_TAG="main" | |
fi | |
echo "### Using image tag: $IMAGE_TAG" | |
echo "tag=${IMAGE_TAG}" >> $GITHUB_OUTPUT | |
call_seat_service_release: | |
uses: ./.github/workflows/seat_service_release_build.yml | |
build-container: | |
# The Dockerfile itself does not build from scratch, it relies on existing build artifacts | |
runs-on: ubuntu-latest | |
needs: | |
[ | |
check_ghcr_push, | |
call_seat_service_release | |
] | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Retrieve build binaries | |
uses: actions/download-artifact@v4 | |
with: | |
path: ${{github.workspace}}/seat_service | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
# list of Docker images to use as base name for tags | |
images: | | |
ghcr.io/eclipse-kuksa/kuksa-incubation/seat_service | |
# generate Docker tags based on the following events/attributes | |
tags: | | |
type=ref,event=branch | |
type=ref,event=pr | |
type=semver,pattern={{version}} | |
type=semver,pattern={{major}}.{{minor}} | |
type=semver,pattern={{major}} | |
- name: Log in to the Container registry | |
if: needs.check_ghcr_push.outputs.push == 'true' | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Build container and push to ghcr.io (and ttl.sh) | |
id: ghcr-build | |
if: needs.check_ghcr_push.outputs.push == 'true' | |
uses: docker/build-push-action@v5 | |
with: | |
platforms: | | |
linux/amd64 | |
linux/arm64 | |
file: ./seat_service/Dockerfile | |
context: ./seat_service | |
push: true | |
tags: | | |
${{ steps.meta.outputs.tags }} | |
ttl.sh/eclipse-kuksa/kuksa-incubation/seat_service-${{github.sha}} | |
labels: ${{ steps.meta.outputs.labels }} | |
- name: Build container and push to ttl.sh | |
if: needs.check_ghcr_push.outputs.push == 'false' | |
id: tmp-build | |
uses: docker/build-push-action@v5 | |
with: | |
platforms: | | |
linux/amd64 | |
linux/arm64 | |
file: ./seat_service/Dockerfile | |
context: ./seat_service | |
push: true | |
tags: "ttl.sh/eclipse-kuksa/kuksa-incubation/seat_service-${{github.sha}}" | |
labels: ${{ steps.meta.outputs.labels }} | |
- name: Posting message | |
uses: eclipse-kuksa/kuksa-actions/post-container-location@2 | |
with: | |
image: ttl.sh/eclipse-kuksa/kuksa-incubation/seat_service-${{github.sha}} |