Files
archived-teslamate/.github/actions/build/action.yaml
T

79 lines
2.7 KiB
YAML

name: "Build"
description: "Build images"
inputs:
is_dockerhub_pushed:
description: "Need docker hub login?"
required: true
default: ""
docker_password:
description: "Docker password"
required: true
repository_owner:
description: "Repository owner"
required: true
default: "teslamate-org"
repository:
description: "Repo owner and name (repo_owner/repo_name)"
required: true
default: "teslamate"
github_token:
description: "GitHub Token"
required: true
labels:
description: "Labels added on metadata"
required: false
default: ""
version:
description: "Branch deployed"
required: false
default: ""
runs:
using: "composite"
steps:
- name: Docker meta
id: meta
uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 # v5.5.1
with:
images: ${{ env.REGISTRY_IMAGE }}
labels: |
{{ inputs.labels }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@4fd812986e6c8c2a69e18311145f9371337f27d4 # v3.4.0
- name: Login to Docker Hub
if: inputs.is_dockerhub_pushed != ''
uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446 # v3.2.0
with:
username: teslamate
password: ${{ inputs.docker_password }}
- name: Login to GitHub Container Registry
uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446 # v3.2.0
with:
registry: ghcr.io
username: ${{ inputs.repository_owner }}
password: ${{ inputs.github_token }}
- name: Build and push by digest
id: build
uses: docker/build-push-action@1a162644f9a7e87d8f4b053101d1d9a712edc18c # v6.3.0
with:
context: .
platforms: ${{ matrix.platform }}
labels: ${{ steps.meta.outputs.labels }}
tags: ${{ steps.docker_meta.outputs.tags }}
cache-from: type=registry,ref=ghcr.io/${{ inputs.repository }}:buildcache-${{ matrix.cache_id }}-${{ inputs.version }}
cache-to: type=registry,ref=ghcr.io/${{ inputs.repository }}:buildcache-${{ matrix.cache_id }}-${{ inputs.version }},mode=max
outputs: type=image,name=${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true
- name: Export digest
shell: bash
run: |
mkdir -p /tmp/digests
digest="${{ steps.build.outputs.digest }}"
touch "/tmp/digests/${digest#sha256:}"
ls -l /tmp/digests/
- name: Upload digest
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
with:
name: single-digest-${{ matrix.cache_id }}
path: /tmp/digests/*
if-no-files-found: error
retention-days: 1