Add pipeline to build enki image

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
This commit is contained in:
Dimitris Karakasilis 2023-10-03 12:53:12 +03:00
parent 2b0b5a1e70
commit 3d1efdf6ea
No known key found for this signature in database
GPG Key ID: 286DCAFD2C97DDE3
3 changed files with 104 additions and 1 deletions

69
.github/workflows/enki-image.yml vendored Normal file
View File

@ -0,0 +1,69 @@
---
name: 'Build enki image'
on:
push:
branches:
- master
tags:
- '*'
concurrency:
group: enki-image-${{ github.ref || github.head_ref }}
cancel-in-progress: true
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Prepare
id: prep
run: |
DOCKER_IMAGE=quay.io/kairos/enki
VERSION=latest
SHORTREF=${GITHUB_SHA::8}
# If this is git tag, use the tag name as a docker tag
if [[ $GITHUB_REF == refs/tags/* ]]; then
VERSION=${GITHUB_REF#refs/tags/}
fi
TAGS="${DOCKER_IMAGE}:${VERSION},${DOCKER_IMAGE}:${SHORTREF}"
# If the VERSION looks like a version number, assume that
# this is the most recent version of the image and also
# tag it 'latest'.
if [[ $VERSION =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
TAGS="$TAGS,${DOCKER_IMAGE}:latest"
fi
# Set output parameters.
echo ::set-output name=version::${VERSION}
echo ::set-output name=ref::${SHORTREF}
echo ::set-output name=tags::${TAGS}
echo ::set-output name=docker_image::${DOCKER_IMAGE}
- name: Set up QEMU
uses: docker/setup-qemu-action@master
with:
platforms: all
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@master
- name: Login to DockerHub
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
with:
registry: quay.io
username: ${{ secrets.QUAY_USERNAME }}
password: ${{ secrets.QUAY_PASSWORD }}
- name: Build
uses: docker/build-push-action@v4
with:
builder: ${{ steps.buildx.outputs.name }}
context: ./tools-image/enki
file: ./tools-image/enki/Dockerfile
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.prep.outputs.tags }}
build-args: "ENKI_VERSION=${{ steps.prep.outputs.version }}, ENKI_COMMIT=${{ steps.prep.outputs.ref }}"

24
.github/workflows/enki.yml vendored Normal file
View File

@ -0,0 +1,24 @@
---
name: 'run enki unit tests'
on:
pull_request:
concurrency:
group: enki-${{ github.ref || github.head_ref }}
cancel-in-progress: true
env:
FORCE_COLOR: 1
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: earthly/actions-setup@v1.0.7
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Build
run: cd tools-image/enki && earthly -P +test

View File

@ -5,7 +5,17 @@ WORKDIR /build
COPY . .
ENV CGO_ENABLED=0
RUN go build -ldflags '-extldflags "-static"' -o /enki
RUN go mod download
# Set arg/env after go mod download, otherwise we invalidate the cached layers due to the commit changing easily
ARG ENKI_VERSION
ARG ENKI_COMMIT
ENV ENKI_VERSION=${ENKI_VERSION}
ENV ENKI_COMMIT=${ENKI_COMMIT}
RUN go build \
-ldflags "-w -s \
-X github.com/kairos-io/enki/internal/version.version=$ENKI_VERSION \
-X github.com/kairos-io/enki/internal/version.gitCommit=$ENKI_COMMIT" \
-o /usr/bin/enki
FROM gcr.io/kaniko-project/executor:latest