mirror of
https://github.com/kairos-io/kairos.git
synced 2025-02-09 05:18:51 +00:00
1999 - Update repositories and adapt /etc/os-release to versioneer (#2081)
* Use kairos-agent instead of naming.sh everywhere For this commit, kairos-agent has to be built from at least 4409a4e Also: - Remove some relics from when we had docs in this repo and when we used to pass a VERSION to the bundle for systemd-sysext (now we use "_ANY") - Simplify earthly targets. They don't need all that input just to construct the artifact name because it's running on the "base-image". The artifact name is already written in the /etc/os-release file. - Remove +version target and convert GIT_VERSION to a normal target because when you call `DO +foo` in a target and "foo" has "FROM myimage" in it, after the call, your target now runs on "myimage". - Remove "VERSION" instances from most places, except in reusable-build-flavor which is using it to replace it with "latest" thus the current value (just the kairos version) should work. That workflow is disabled currently but I tried not to break it in case someone re-enables it. Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Fix rebase mistake Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Fix issues building arm Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Oops Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> --------- Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> Co-authored-by: Mauro Morales <mauro.morales@spectrocloud.com>
This commit is contained in:
parent
fa901cb6d1
commit
ec6a6f26be
10
.github/workflows/image-arm.yaml
vendored
10
.github/workflows/image-arm.yaml
vendored
@ -83,6 +83,12 @@ jobs:
|
||||
files_yaml: |
|
||||
nvidia:
|
||||
- 'images/Dockerfile.nvidia'
|
||||
|
||||
- name: Install kairos-agent (for versioneer)
|
||||
uses: Luet-lab/luet-install-action@v1.1
|
||||
with:
|
||||
repository: quay.io/kairos/packages
|
||||
packages: system/kairos-agent
|
||||
- name: Release space from worker
|
||||
if: steps.changed-files.outputs.nvidia_any_changed == 'true'
|
||||
run: |
|
||||
@ -131,7 +137,7 @@ jobs:
|
||||
- name: Build 🔧 & Push 🚀
|
||||
if: steps.changed-files.outputs.nvidia_any_changed == 'true'
|
||||
run: |
|
||||
export IMAGE=$(FAMILY=ubuntu FLAVOR=ubuntu FLAVOR_RELEASE="20.04" MODEL=nvidia-jetson-agx-orin VARIANT=core TARGETARCH=arm64 REGISTRY_AND_ORG="quay.io/kairos" ./images/naming.sh container_artifact_base_name)
|
||||
export IMAGE=$(FLAVOR=ubuntu FLAVOR_RELEASE="20.04" MODEL=nvidia-jetson-agx-orin VARIANT=core TARGETARCH=arm64 REGISTRY_AND_ORG="quay.io/kairos" ID=master kairos-agent versioneer base-container-artifact-name)
|
||||
docker build --platform=linux/arm64 -t $IMAGE -f ./images/Dockerfile.nvidia ./images
|
||||
docker push $IMAGE
|
||||
|
||||
@ -143,7 +149,7 @@ jobs:
|
||||
flavor: ubuntu
|
||||
flavor_release: "20.04"
|
||||
family: ubuntu
|
||||
# is there a way to run the naming.sh script here?
|
||||
# is there a way to run versioneer here?
|
||||
base_image: quay.io/kairos/ubuntu:20.04-core-arm64-nvidia-jetson-agx-orin-master
|
||||
model: nvidia-jetson-agx-orin
|
||||
worker: fast
|
||||
|
15
.github/workflows/release-arm.yaml
vendored
15
.github/workflows/release-arm.yaml
vendored
@ -68,6 +68,11 @@ jobs:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Install kairos-agent (for versioneer)
|
||||
uses: Luet-lab/luet-install-action@v1.1
|
||||
with:
|
||||
repository: quay.io/kairos/packages
|
||||
packages: system/kairos-agent
|
||||
- name: Release space from worker
|
||||
if: steps.changed-files.outputs.nvidia_any_changed == 'true'
|
||||
run: |
|
||||
@ -112,7 +117,7 @@ jobs:
|
||||
run: echo ${{ secrets.QUAY_PASSWORD }} | docker login -u ${{ secrets.QUAY_USERNAME }} --password-stdin quay.io
|
||||
- name: Build 🔧 & Push 🚀
|
||||
run: |
|
||||
export IMAGE=$(FAMILY=ubuntu FLAVOR=ubuntu FLAVOR_RELEASE="20.04" MODEL=nvidia-jetson-agx-orin VARIANT=core TARGETARCH=arm64 REGISTRY_AND_ORG="quay.io/kairos" BRANCH=release ./images/naming.sh container_artifact_base_name)
|
||||
export IMAGE=$(FLAVOR=ubuntu FLAVOR_RELEASE="20.04" MODEL=nvidia-jetson-agx-orin VARIANT=core TARGETARCH=arm64 REGISTRY_AND_ORG="quay.io/kairos" ID=release kairos-agent versioneer base-container-artifact-name)
|
||||
docker build --platform=linux/arm64 -t $IMAGE -f ./images/Dockerfile.nvidia ./images
|
||||
docker push $IMAGE
|
||||
|
||||
@ -123,7 +128,7 @@ jobs:
|
||||
flavor: ubuntu
|
||||
flavor_release: "20.04"
|
||||
family: ubuntu
|
||||
# is there a way to run the naming.sh script here?
|
||||
# is there a way to run versioneer here?
|
||||
base_image: quay.io/kairos/ubuntu:20.04-core-arm64-nvidia-jetson-agx-orin-release
|
||||
model: nvidia-jetson-agx-orin
|
||||
worker: fast
|
||||
@ -208,7 +213,6 @@ jobs:
|
||||
-BASE_IMAGE=${{ matrix.baseImage }}
|
||||
- name: Convert all json files into a reports.tar.gz file
|
||||
run: |
|
||||
export VERSION=$(cat build/VERSION)
|
||||
cd build
|
||||
filename=$(ls *-grype.json | head -n 1) && filename=${filename%%-grype.json}
|
||||
sudo tar cvf "${filename}-scan-reports.tar.gz" *.json
|
||||
@ -233,7 +237,7 @@ jobs:
|
||||
sudo luet util pack $IMAGE build.tar image.tar
|
||||
sudo -E docker load -i image.tar
|
||||
sudo -E docker push "$IMAGE"
|
||||
sudo rm -rf build/IMAGE build/VERSION
|
||||
sudo rm -rf build/IMAGE
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
@ -332,7 +336,6 @@ jobs:
|
||||
-BASE_IMAGE=${{ matrix.baseImage }}
|
||||
- name: Convert all json files into a reports.tar.gz file
|
||||
run: |
|
||||
export VERSION=$(cat build/VERSION)
|
||||
cd build
|
||||
filename=$(ls *-grype.json | head -n 1) && filename=${filename%%-grype.json}
|
||||
sudo tar cvf "${filename}-scan-reports.tar.gz" *.json
|
||||
@ -357,7 +360,7 @@ jobs:
|
||||
sudo luet util pack $IMAGE build.tar image.tar
|
||||
sudo -E docker load -i image.tar
|
||||
sudo -E docker push "$IMAGE"
|
||||
sudo rm -rf build/IMAGE build/VERSION
|
||||
sudo rm -rf build/IMAGE
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
|
6
.github/workflows/release.yaml
vendored
6
.github/workflows/release.yaml
vendored
@ -153,7 +153,6 @@ jobs:
|
||||
--output-signature="${filename}.sig" "${filename}"
|
||||
- name: Prepare files for release
|
||||
run: |
|
||||
export VERSION=$(cat release/VERSION)
|
||||
mkdir sarif
|
||||
mv release/*.sarif sarif/
|
||||
mkdir reports
|
||||
@ -163,7 +162,7 @@ jobs:
|
||||
sudo tar cvf "${filename}-scan-reports.tar.gz" *.json
|
||||
mv *.tar.gz ../release/
|
||||
cd ..
|
||||
rm release/VERSION release/IMAGE release/versions.yaml
|
||||
rm release/IMAGE release/versions.yaml
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
@ -256,7 +255,6 @@ jobs:
|
||||
cosign sign $(docker image inspect --format='{{index .RepoDigests 0}}' "$IMAGE")
|
||||
- name: Prepare files for release
|
||||
run: |
|
||||
export VERSION=$(cat release/VERSION)
|
||||
mkdir sarif
|
||||
mv release/*.sarif sarif/
|
||||
mkdir reports
|
||||
@ -266,7 +264,7 @@ jobs:
|
||||
sudo tar cvf "${filename}-scan-reports.tar.gz" *.json
|
||||
mv *.tar.gz ../release/
|
||||
cd ..
|
||||
sudo rm -rf release/IMAGE release/VERSION release/versions.yaml
|
||||
sudo rm -rf release/IMAGE release/versions.yaml
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
|
@ -90,9 +90,15 @@ jobs:
|
||||
- name: Login to Quay Registry
|
||||
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && steps.changed-files.outputs.nvidia_any_changed == 'true' }}
|
||||
run: echo ${{ secrets.QUAY_PASSWORD }} | docker login -u ${{ secrets.QUAY_USERNAME }} --password-stdin quay.io
|
||||
- name: Install kairos-agent (for versioneer)
|
||||
uses: Luet-lab/luet-install-action@v1.1
|
||||
with:
|
||||
repository: quay.io/kairos/packages
|
||||
packages: system/kairos-agent
|
||||
- name: Build 🔧 & Push 🚀
|
||||
if: steps.changed-files.outputs.nvidia_any_changed == 'true'
|
||||
run: |
|
||||
export IMAGE=$(FAMILY=${{ inputs.family }} FLAVOR=${{ inputs.flavor }} FLAVOR_RELEASE="${{ inputs.flavor_release}}" MODEL=${{ inputs.model}} TARGETARCH=${{ inputs.arch }} REGISTRY_AND_ORG="quay.io/kairos" ./images/naming.sh container_artifact_base_name)
|
||||
export IMAGE=$(FLAVOR=${{ inputs.flavor }} FLAVOR_RELEASE="${{ inputs.flavor_release}}" MODEL=${{ inputs.model}} TARGETARCH=${{ inputs.arch }} REGISTRY_AND_ORG="quay.io/kairos" ID=master kairos-agent versioneer base-container-artifact-name)
|
||||
|
||||
docker build --platform=linux/${{ inputs.arch }} --build-arg="FAMILY=${{ inputs.family }}" --build-arg="FLAVOR=${{ inputs.flavor }}" --build-arg="FLAVOR_RELEASE=${{ inputs.flavor_release }}" --build-arg="MODEL=${{ inputs.model }}" --build-arg="BASE_IMAGE=${{ inputs.base_image }}" -t $IMAGE -f ./images/Dockerfile.${{ inputs.family }} ./images
|
||||
docker push $IMAGE
|
||||
|
10
.github/workflows/reusable-build-flavor.yaml
vendored
10
.github/workflows/reusable-build-flavor.yaml
vendored
@ -95,9 +95,6 @@ jobs:
|
||||
sudo iptables -I INPUT -s 169.254.169.254 -j DROP
|
||||
sudo iptables -I OUTPUT -d 169.254.169.254 -j DROP
|
||||
- name: Build PR 🔧
|
||||
if: ${{ github.event_name == 'pull_request' }}
|
||||
env:
|
||||
VERSION: latest
|
||||
run: |
|
||||
earthly --platform=linux/${{ inputs.arch }} +ci \
|
||||
--SECURITY_SCANS=false \
|
||||
@ -109,10 +106,15 @@ jobs:
|
||||
--FAMILY=${{ inputs.family }}
|
||||
sudo mv build/* .
|
||||
sudo rm -rf build
|
||||
- name: Install kairos-agent (for versioneer)
|
||||
uses: Luet-lab/luet-install-action@v1.1
|
||||
with:
|
||||
repository: quay.io/kairos/packages
|
||||
packages: system/kairos-agent
|
||||
- name: Build master 🔧
|
||||
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
|
||||
run: |
|
||||
export BASE_IMAGE=$(FAMILY=${{ inputs.family }} FLAVOR=${{ inputs.flavor }} FLAVOR_RELEASE="${{ inputs.flavor_release}}" MODEL=${{ inputs.model}} TARGETARCH=${{ inputs.arch }} REGISTRY_AND_ORG="quay.io/kairos" ./images/naming.sh container_artifact_base_name)
|
||||
export BASE_IMAGE=$(FLAVOR=${{ inputs.flavor }} FLAVOR_RELEASE="${{ inputs.flavor_release}}" MODEL=${{ inputs.model}} TARGETARCH=${{ inputs.arch }} REGISTRY_AND_ORG="quay.io/kairos" ID=master kairos-agent versioneer base-container-artifact-name)
|
||||
earthly --platform=linux/${{ inputs.arch }} +ci \
|
||||
--SECURITY_SCANS=true \
|
||||
--VARIANT=${{ inputs.variant }} \
|
||||
|
@ -95,10 +95,15 @@ jobs:
|
||||
|
||||
sudo mv build/* .
|
||||
sudo rm -rf build
|
||||
- name: Install kairos-agent (for versioneer)
|
||||
uses: Luet-lab/luet-install-action@v1.1
|
||||
with:
|
||||
repository: quay.io/kairos/packages
|
||||
packages: system/kairos-agent
|
||||
- name: Build master 🔧
|
||||
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
|
||||
run: |
|
||||
export BASE_IMAGE=$(FAMILY=${{ inputs.family }} FLAVOR=${{ inputs.flavor }} FLAVOR_RELEASE="${{ inputs.flavor_release}}" MODEL=${{ inputs.model}} TARGETARCH=${{ inputs.arch }} REGISTRY_AND_ORG="quay.io/kairos" ./images/naming.sh container_artifact_base_name)
|
||||
export BASE_IMAGE=$(FLAVOR=${{ inputs.flavor }} FLAVOR_RELEASE="${{ inputs.flavor_release}}" MODEL=${{ inputs.model}} TARGETARCH=${{ inputs.arch }} REGISTRY_AND_ORG="quay.io/kairos" ID=master kairos-agent versioneer base-container-artifact-name)
|
||||
earthly --platform=linux/${{ inputs.arch }} +extract-framework-profile
|
||||
K3S_VERSION=$(sudo luet --config framework-profile.yaml search -o json k8s/k3s | jq '.packages | map(.version) | unique | last' | tr -d '"')
|
||||
earthly --platform=linux/${{ inputs.arch }} +ci \
|
||||
|
@ -121,7 +121,6 @@ jobs:
|
||||
- name: Convert all json files into a reports.tar.gz file
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
run: |
|
||||
export VERSION=$(cat build/VERSION)
|
||||
cd build
|
||||
filename=$(ls *-grype.json | head -n 1) && filename=${filename%%-grype.json}
|
||||
sudo tar cvf "${filename}-scan-reports.tar.gz" *.json
|
||||
@ -146,7 +145,7 @@ jobs:
|
||||
sudo luet util pack $IMAGE build.tar image.tar
|
||||
sudo -E docker load -i image.tar
|
||||
sudo -E docker push "$IMAGE"
|
||||
sudo rm -rf build/IMAGE build/VERSION
|
||||
sudo rm -rf build/IMAGE
|
||||
- name: Release
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
uses: softprops/action-gh-release@v1
|
||||
|
386
Earthfile
386
Earthfile
@ -106,6 +106,12 @@ arm-container-image:
|
||||
BUILD --platform=linux/arm64 +base-image
|
||||
|
||||
all-arm-generic:
|
||||
ARG --required FLAVOR
|
||||
ARG --required FLAVOR_RELEASE
|
||||
ARG --required BASE_IMAGE
|
||||
ARG --required MODEL
|
||||
ARG --required VARIANT
|
||||
ARG --required FAMILY
|
||||
BUILD --platform=linux/arm64 +iso --MODEL=generic
|
||||
|
||||
build-and-push-golang-testing:
|
||||
@ -136,31 +142,13 @@ uuidgen:
|
||||
|
||||
SAVE ARTIFACT UUIDGEN UUIDGEN
|
||||
|
||||
GIT_VERSION:
|
||||
COMMAND
|
||||
git-version:
|
||||
FROM alpine
|
||||
RUN apk add git
|
||||
COPY . ./
|
||||
RUN git describe --always --tags --dirty > GIT_VERSION
|
||||
SAVE ARTIFACT GIT_VERSION GIT_VERSION
|
||||
|
||||
version:
|
||||
ARG K3S_VERSION
|
||||
DO +GIT_VERSION
|
||||
ARG _GIT_VERSION=$(cat ./GIT_VERSION)
|
||||
|
||||
# Remove luet rebuild numbers like we do here:
|
||||
# https://github.com/kairos-io/packages/blob/2fbc098d0499a0c34c587057ff8a9f00c2b7f575/packages/k8s/k3s/build.yaml#L11-L12
|
||||
IF [ "$K3S_VERSION" != "" ]
|
||||
ARG _FIXED_VERSION=$(echo $K3S_VERSION | sed 's/+[[:digit:]]*//')
|
||||
ARG _K3S_VERSION="-k3sv${_FIXED_VERSION}+k3s1"
|
||||
END
|
||||
|
||||
RUN --no-cache echo ${_GIT_VERSION}${_K3S_VERSION} > VERSION
|
||||
|
||||
ARG VERSION=$(cat VERSION)
|
||||
SAVE ARTIFACT VERSION VERSION
|
||||
|
||||
hadolint:
|
||||
ARG HADOLINT_VERSION
|
||||
FROM hadolint/hadolint:$HADOLINT_VERSION
|
||||
@ -200,24 +188,9 @@ syft:
|
||||
SAVE ARTIFACT /syft syft
|
||||
|
||||
image-sbom:
|
||||
ARG TARGETARCH
|
||||
ARG --required FAMILY # The dockerfile to use
|
||||
ARG --required FLAVOR # The distribution E.g. "ubuntu"
|
||||
ARG --required FLAVOR_RELEASE # The distribution release/version E.g. "20.04"
|
||||
ARG --required VARIANT
|
||||
ARG --required MODEL
|
||||
ARG --required BASE_IMAGE # BASE_IMAGE is the image to apply the strategy (aka FLAVOR) on. E.g. ubuntu:20.04
|
||||
|
||||
# Use base-image so it can read original os-release file
|
||||
FROM +base-image
|
||||
WORKDIR /build
|
||||
ARG FLAVOR
|
||||
ARG VARIANT
|
||||
COPY +version/VERSION ./
|
||||
ARG KAIROS_VERSION=$(cat VERSION)
|
||||
|
||||
COPY ./images/naming.sh .
|
||||
ARG ISO_NAME=$(./naming.sh bootable_artifact_name)
|
||||
ARG ISO_NAME=$(source /etc/os-release; echo '$KAIROS_ARTIFACT')
|
||||
|
||||
COPY +syft/syft /usr/bin/syft
|
||||
RUN syft / -o json=sbom.syft.json -o spdx-json=sbom.spdx.json
|
||||
@ -253,6 +226,10 @@ extract-framework-profile:
|
||||
FROM quay.io/kairos/framework:${_FRAMEWORK_VERSION}
|
||||
SAVE ARTIFACT /etc/luet/luet.yaml framework-profile.yaml AS LOCAL ./framework-profile.yaml
|
||||
|
||||
extract-kairos-agent-from-framework:
|
||||
FROM quay.io/kairos/framework:${KAIROS_FRAMEWORK_VERSION}
|
||||
SAVE ARTIFACT /usr/bin/kairos-agent kairos-agent
|
||||
|
||||
base-image:
|
||||
ARG TARGETARCH # Earthly built-in (not passed)
|
||||
ARG --required FAMILY # The dockerfile to use
|
||||
@ -261,13 +238,26 @@ base-image:
|
||||
ARG --required VARIANT
|
||||
ARG --required MODEL
|
||||
ARG --required BASE_IMAGE # BASE_IMAGE is the image to apply the strategy (aka FLAVOR) on. E.g. ubuntu:20.04
|
||||
ARG K3S_VERSION
|
||||
ARG FRAMEWORK_VERSION
|
||||
# TODO for the framework image. Do we call the last stable version available or master?
|
||||
ARG K3S_VERSION
|
||||
DO +GIT_VERSION
|
||||
|
||||
ARG KAIROS_VERSION=$(cat ./GIT_VERSION)
|
||||
ARG K3S_VERSION # As it comes from luet package
|
||||
ARG SOFTWARE_VERSION_PREFIX="k3s"
|
||||
ARG _SOFTWARE_LUET_VERSION=$K3S_VERSION
|
||||
# Takes 1.28.2+1 and converts that to v1.18.2+k3s1
|
||||
# Hack because we use a different version in the luet package and in the
|
||||
# artifact names.
|
||||
# TODO: Remove this when we change the package version to not have the
|
||||
# hardcoded k3s1. Then we will use the version exactly as it comes from
|
||||
# luet, in the artifact names. E.g. v1.28.2+k3s2+3 (including our build number)
|
||||
IF [ "$K3S_VERSION" != "" ]
|
||||
ARG _FIXED_VERSION=$(echo $K3S_VERSION | sed 's/+[[:digit:]]*//')
|
||||
ARG SOFTWARE_VERSION="v${_FIXED_VERSION}+k3s1"
|
||||
END
|
||||
|
||||
COPY +git-version/GIT_VERSION GIT_VERSION
|
||||
|
||||
ARG RELEASE=$(cat ./GIT_VERSION)
|
||||
|
||||
IF [ "$FRAMEWORK_VERSION" != "" ]
|
||||
ARG _FRAMEWORK_VERSION=$FRAMEWORK_VERSION
|
||||
@ -281,40 +271,30 @@ base-image:
|
||||
--build-arg FLAVOR=$FLAVOR \
|
||||
--build-arg FLAVOR_RELEASE=$FLAVOR_RELEASE \
|
||||
--build-arg VARIANT=$VARIANT \
|
||||
--build-arg VERSION=$KAIROS_VERSION \
|
||||
--build-arg K3S_VERSION=$K3S_VERSION \
|
||||
--build-arg FAMILY=$FAMILY \
|
||||
--build-arg RELEASE=$RELEASE \
|
||||
--build-arg SOFTWARE_VERSION=$SOFTWARE_VERSION \
|
||||
--build-arg SOFTWARE_LUET_VERSION=$_SOFTWARE_LUET_VERSION \
|
||||
--build-arg SOFTWARE_VERSION_PREFIX=$SOFTWARE_VERSION_PREFIX \
|
||||
--build-arg FRAMEWORK_VERSION=$_FRAMEWORK_VERSION \
|
||||
-f +kairos-dockerfile/Dockerfile \
|
||||
./images
|
||||
|
||||
COPY +version/VERSION ./
|
||||
COPY ./images/naming.sh .
|
||||
|
||||
ARG OS_NAME=kairos-${VARIANT}-${FLAVOR}-${FLAVOR_RELEASE}
|
||||
RUN KAIROS_VERSION=$(cat ./VERSION) \
|
||||
OS_VERSION=$(cat ./VERSION) \
|
||||
OS_LABEL=$(cat ./VERSION) \
|
||||
OS_LABEL=$(naming.sh container_artifact_label) \
|
||||
OS_REPO=$(naming.sh container_artifact_repo) \
|
||||
ARTIFACT=$(naming.sh bootable_artifact_name) \
|
||||
envsubst >>/etc/os-release </usr/lib/os-release.tmpl
|
||||
RUN KAIROS_VERSION=$(cat ./VERSION) naming.sh container_artifact_name > /IMAGE
|
||||
RUN kairos-agent versioneer container-artifact-name # To see the error if one occurs.
|
||||
RUN kairos-agent versioneer container-artifact-name > /IMAGE
|
||||
|
||||
ARG _CIMG=$(cat ./IMAGE)
|
||||
|
||||
COPY +git-version/GIT_VERSION VERSION
|
||||
|
||||
SAVE IMAGE $_CIMG
|
||||
SAVE ARTIFACT /etc/os-release osrelease
|
||||
SAVE ARTIFACT /IMAGE AS LOCAL build/IMAGE
|
||||
SAVE ARTIFACT VERSION AS LOCAL build/VERSION
|
||||
SAVE ARTIFACT /etc/kairos/versions.yaml versions.yaml AS LOCAL build/versions.yaml
|
||||
|
||||
image-rootfs:
|
||||
ARG --required FAMILY
|
||||
ARG --required FLAVOR
|
||||
ARG --required FLAVOR_RELEASE
|
||||
ARG --required BASE_IMAGE
|
||||
ARG --required MODEL
|
||||
ARG --required VARIANT
|
||||
|
||||
BUILD +base-image # Make sure the image is also saved locally
|
||||
FROM +base-image
|
||||
|
||||
@ -356,13 +336,6 @@ uki-tools-image:
|
||||
# os-release
|
||||
# uname
|
||||
uki-base:
|
||||
ARG --required FAMILY # The dockerfile to use
|
||||
ARG --required FLAVOR # The distribution E.g. "ubuntu"
|
||||
ARG --required FLAVOR_RELEASE # The distribution release/version E.g. "20.04"
|
||||
ARG --required VARIANT
|
||||
ARG --required MODEL
|
||||
ARG --required BASE_IMAGE
|
||||
ARG TARGETARCH
|
||||
WORKDIR build
|
||||
# Build kernel,uname, etc artifacts
|
||||
FROM +base-image --BUILD_INITRD=false
|
||||
@ -393,8 +366,10 @@ uki-build:
|
||||
COPY +uki-base/Cmdline .
|
||||
COPY +uki-base/Uname .
|
||||
COPY +uki-base/Osrelease .
|
||||
COPY +version/VERSION .
|
||||
ARG KAIROS_VERSION=$(cat VERSION)
|
||||
|
||||
COPY +git-version/GIT_VERSION ./
|
||||
ARG KAIROS_VERSION=$(cat GIT_VERSION)
|
||||
|
||||
ARG UNAME=$(cat Uname)
|
||||
RUN /usr/lib/systemd/ukify Kernel initrd \
|
||||
--cmdline=@Cmdline \
|
||||
@ -422,8 +397,9 @@ uki-build:
|
||||
# Then we generate the image from scratch to not ring anything else
|
||||
uki-image-artifacts:
|
||||
FROM +uki-tools-image
|
||||
COPY +version/VERSION ./
|
||||
ARG KAIROS_VERSION=$(cat VERSION)
|
||||
COPY +git-version/GIT_VERSION ./
|
||||
ARG KAIROS_VERSION=$(cat GIT_VERSION)
|
||||
|
||||
COPY +uki-build/systemd-bootx64.signed.efi /output/efi/EFI/BOOT/BOOTX64.EFI
|
||||
COPY +uki-build/uki.signed.efi /output/efi/EFI/kairos/${KAIROS_VERSION}.efi
|
||||
COPY +uki-build/${KAIROS_VERSION}.conf /output/efi/loader/entries/${KAIROS_VERSION}.conf
|
||||
@ -442,18 +418,15 @@ uki-image:
|
||||
SAVE IMAGE --push $_CIMG.uki
|
||||
|
||||
uki-iso:
|
||||
FROM ubuntu
|
||||
COPY +version/VERSION ./
|
||||
ARG KAIROS_VERSION=$(cat VERSION)
|
||||
ARG TARGETARCH
|
||||
ARG --required FAMILY # The dockerfile to use
|
||||
ARG --required FLAVOR # The distribution E.g. "ubuntu"
|
||||
ARG --required FLAVOR_RELEASE # The distribution release/version E.g. "20.04"
|
||||
ARG --required VARIANT
|
||||
ARG --required MODEL
|
||||
ARG --required BASE_IMAGE
|
||||
COPY ./images/naming.sh .
|
||||
ARG ISO_NAME=$(./naming.sh bootable_artifact_name)
|
||||
# +base-image will be called again by +uki but will be cached.
|
||||
# We just use it here to take a shortcut to the artifact name
|
||||
FROM +base-image
|
||||
WORKDIR /build
|
||||
ARG ISO_NAME=$(source /etc/os-release; echo '$KAIROS_ARTIFACT')
|
||||
|
||||
COPY +git-version/GIT_VERSION ./
|
||||
ARG KAIROS_VERSION=$(cat GIT_VERSION)
|
||||
|
||||
ARG OSBUILDER_IMAGE
|
||||
FROM $OSBUILDER_IMAGE
|
||||
WORKDIR /build
|
||||
@ -498,23 +471,6 @@ uki-iso:
|
||||
###
|
||||
|
||||
iso:
|
||||
FROM ubuntu
|
||||
|
||||
COPY +version/VERSION ./
|
||||
ARG KAIROS_VERSION=$(cat VERSION)
|
||||
ARG TARGETARCH
|
||||
|
||||
# args for base-image target
|
||||
ARG --required FAMILY
|
||||
ARG --required FLAVOR
|
||||
ARG --required FLAVOR_RELEASE
|
||||
ARG --required BASE_IMAGE
|
||||
ARG --required MODEL
|
||||
ARG --required VARIANT
|
||||
|
||||
COPY ./images/naming.sh .
|
||||
ARG ISO_NAME=$(./naming.sh bootable_artifact_name)
|
||||
|
||||
ARG OSBUILDER_IMAGE
|
||||
FROM $OSBUILDER_IMAGE
|
||||
WORKDIR /build
|
||||
@ -524,6 +480,8 @@ iso:
|
||||
COPY --keep-own +image-rootfs/rootfs /build/image
|
||||
COPY --keep-own +image-rootfs/IMAGE IMAGE
|
||||
|
||||
ARG ISO_NAME=$(source /build/image/etc/os-release; echo '$KAIROS_ARTIFACT')
|
||||
|
||||
RUN /entrypoint.sh --name $ISO_NAME --debug build-iso --squash-no-compression --date=false dir:/build/image --output /build/
|
||||
SAVE ARTIFACT IMAGE AS LOCAL build/IMAGE
|
||||
SAVE ARTIFACT /build/$ISO_NAME.iso kairos.iso AS LOCAL build/$ISO_NAME.iso
|
||||
@ -535,57 +493,31 @@ iso:
|
||||
# you can override either the full thing by setting --REMOTE_IMG=docker:REPO/IMAGE:TAG
|
||||
# or by --REMOTE_IMG=REPO/IMAGE:TAG
|
||||
iso-remote:
|
||||
FROM ubuntu
|
||||
ARG --required REMOTE_IMG
|
||||
FROM $REMOTE_IMG
|
||||
ARG ISO_NAME=$(source /etc/os-release; echo '$KAIROS_ARTIFACT')
|
||||
|
||||
ARG TARGETARCH
|
||||
ARG REMOTE_IMG
|
||||
|
||||
COPY +version/VERSION ./
|
||||
ARG KAIROS_VERSION=$(cat VERSION)
|
||||
|
||||
ARG --required FAMILY # The dockerfile to use
|
||||
ARG --required FLAVOR # The distribution E.g. "ubuntu"
|
||||
ARG --required FLAVOR_RELEASE # The distribution release/version E.g. "20.04"
|
||||
ARG --required VARIANT
|
||||
ARG --required MODEL
|
||||
ARG --required BASE_IMAGE
|
||||
|
||||
COPY ./images/naming.sh .
|
||||
ARG ISO_NAME=$(./naming.sh bootable_artifact_name)
|
||||
ARG OSBUILDER_IMAGE
|
||||
FROM $OSBUILDER_IMAGE
|
||||
WORKDIR /build
|
||||
COPY . ./
|
||||
RUN /entrypoint.sh --name $ISO_NAME --debug build-iso --squash-no-compression --date=false docker:$REMOTE_IMG --output /build/
|
||||
|
||||
SAVE ARTIFACT /build/$ISO_NAME.iso kairos.iso AS LOCAL build/$ISO_NAME.iso
|
||||
SAVE ARTIFACT /build/$ISO_NAME.iso.sha256 kairos.iso.sha256 AS LOCAL build/$ISO_NAME.iso.sha256
|
||||
|
||||
netboot:
|
||||
FROM ubuntu
|
||||
FROM +base-image
|
||||
|
||||
COPY +version/VERSION ./
|
||||
RUN echo "version ${VERSION}"
|
||||
# For ipxe.tmpl to be able to substitute. It's called version but it references the release tag, this is why we need
|
||||
# to remove the -k3s version
|
||||
ARG VERSION=$(cat VERSION | sed 's/-k3s.*//')
|
||||
# For naming.sh we need the complete version including the K3S version in order to build the artifact names
|
||||
ARG KAIROS_VERSION=$(cat VERSION)
|
||||
ARG ISO_NAME=$(source /etc/os-release; echo '$KAIROS_ARTIFACT')
|
||||
|
||||
ARG TARGETARCH # Earthly built-in (not passed)
|
||||
ARG --required FAMILY # The dockerfile to use
|
||||
ARG --required FLAVOR # The distribution E.g. "ubuntu"
|
||||
ARG --required FLAVOR_RELEASE # The distribution release/version E.g. "20.04"
|
||||
ARG --required VARIANT
|
||||
ARG --required MODEL
|
||||
ARG --required BASE_IMAGE # BASE_IMAGE is the image to apply the strategy (aka FLAVOR) on. E.g. ubuntu:20.04
|
||||
|
||||
COPY ./images/naming.sh .
|
||||
ARG ISO_NAME=$(./naming.sh bootable_artifact_name)
|
||||
ARG OSBUILDER_IMAGE
|
||||
|
||||
# Used here: https://github.com/kairos-io/osbuilder/blob/66e9e7a9403a413e310f462136b70d715605ab09/tools-image/ipxe.tmpl#L5
|
||||
# Variables used here:
|
||||
# https://github.com/kairos-io/osbuilder/blob/66e9e7a9403a413e310f462136b70d715605ab09/tools-image/ipxe.tmpl#L5
|
||||
COPY +git-version/GIT_VERSION GIT_VERSION
|
||||
ARG VERSION=$(cat ./GIT_VERSION)
|
||||
ARG RELEASE_URL=https://github.com/kairos-io/kairos/releases/download
|
||||
|
||||
ARG OSBUILDER_IMAGE
|
||||
FROM $OSBUILDER_IMAGE
|
||||
WORKDIR /build
|
||||
|
||||
@ -601,44 +533,18 @@ netboot:
|
||||
SAVE ARTIFACT /build/$ISO_NAME-initrd initrd AS LOCAL build/$ISO_NAME-initrd
|
||||
SAVE ARTIFACT /build/$ISO_NAME.ipxe ipxe AS LOCAL build/$ISO_NAME.ipxe
|
||||
|
||||
artifact-name:
|
||||
ARG TARGETARCH
|
||||
ARG --required FAMILY
|
||||
ARG --required FLAVOR
|
||||
ARG --required FLAVOR_RELEASE
|
||||
ARG --required VARIANT
|
||||
ARG --required MODEL
|
||||
ARG --required BASE_IMAGE
|
||||
ARG --required NAMING_FUNC
|
||||
ARG --required NAMING_EXT
|
||||
ARG --required KAIROS_VERSION
|
||||
FROM ubuntu
|
||||
|
||||
COPY ./images/naming.sh /usr/bin/local/naming.sh
|
||||
RUN echo $(/usr/bin/local/naming.sh ${NAMING_FUNC})${NAMING_EXT} > /ARTIFACT_NAME
|
||||
SAVE ARTIFACT /ARTIFACT_NAME ARTIFACT_NAME
|
||||
|
||||
arm-image:
|
||||
ARG OSBUILDER_IMAGE
|
||||
ARG COMPRESS_IMG=true
|
||||
ARG IMG_COMPRESSION=xz
|
||||
|
||||
COPY --platform=linux/arm64 +base-image/osrelease osrelease
|
||||
ARG IMAGE_NAME=$(source osrelease && echo $KAIROS_ARTIFACT).img
|
||||
RUN rm osrelease
|
||||
|
||||
FROM $OSBUILDER_IMAGE
|
||||
|
||||
COPY +version/VERSION ./
|
||||
ARG KAIROS_VERSION=$(cat VERSION)
|
||||
RUN echo "version ${KAIROS_VERSION}"
|
||||
|
||||
ARG TARGETARCH
|
||||
ARG --required FAMILY
|
||||
ARG --required FLAVOR
|
||||
ARG --required FLAVOR_RELEASE
|
||||
ARG --required VARIANT
|
||||
ARG --required MODEL
|
||||
ARG --required BASE_IMAGE
|
||||
|
||||
COPY --platform=linux/arm64 (+artifact-name/ARTIFACT_NAME --KAIROS_VERSION=${KAIROS_VERSION} --NAMING_FUNC=bootable_artifact_name --NAMING_EXT=".img") /ARTIFACT_NAME
|
||||
ARG IMAGE_NAME=$(cat /ARTIFACT_NAME)
|
||||
RUN rm /ARTIFACT_NAME
|
||||
WORKDIR /build
|
||||
# These sizes are in MB
|
||||
ENV SIZE="15200"
|
||||
@ -677,25 +583,11 @@ arm-image:
|
||||
prepare-arm-image:
|
||||
ARG OSBUILDER_IMAGE
|
||||
ARG COMPRESS_IMG=true
|
||||
|
||||
FROM $OSBUILDER_IMAGE
|
||||
|
||||
COPY +version/VERSION ./
|
||||
RUN echo "version ${VERSION}"
|
||||
ARG KAIROS_VERSION=$(cat VERSION)
|
||||
|
||||
ARG TARGETARCH
|
||||
ARG --required FAMILY
|
||||
ARG --required FLAVOR
|
||||
ARG --required FLAVOR_RELEASE
|
||||
ARG --required VARIANT
|
||||
ARG --required BASE_IMAGE
|
||||
ARG --required MODEL
|
||||
|
||||
COPY --platform=linux/arm64 (+artifact-name/ARTIFACT_NAME --KAIROS_VERSION=${KAIROS_VERSION} --NAMING_FUNC=bootable_artifact_name --NAMING_EXT=".img") /ARTIFACT_NAME
|
||||
ARG IMAGE_NAME=$(cat /ARTIFACT_NAME)
|
||||
WORKDIR /build
|
||||
# These sizes are in MB
|
||||
|
||||
# These sizes are in MB
|
||||
ENV SIZE="15200"
|
||||
|
||||
IF [[ "$MODEL" = "nvidia-jetson-agx-orin" ]]
|
||||
@ -728,6 +620,19 @@ prepare-arm-image:
|
||||
|
||||
ipxe-iso:
|
||||
ARG TARGETARCH
|
||||
|
||||
COPY +base-image/osrelease osrelease
|
||||
ARG IMAGE_NAME=$(source osrelease && echo $KAIROS_ARTIFACT).img
|
||||
RUN rm osrelease
|
||||
|
||||
ARG ISO_NAME=$(source /etc/os-release; echo '$KAIROS_ARTIFACT')
|
||||
|
||||
# Variables used here:
|
||||
# https://github.com/kairos-io/osbuilder/blob/66e9e7a9403a413e310f462136b70d715605ab09/tools-image/ipxe.tmpl#L5
|
||||
COPY +git-version/GIT_VERSION GIT_VERSION
|
||||
ARG VERSION=$(cat ./GIT_VERSION)
|
||||
ARG RELEASE_URL=https://github.com/kairos-io/kairos/releases/download
|
||||
|
||||
FROM ubuntu
|
||||
ARG ipxe_script
|
||||
RUN apt update
|
||||
@ -736,27 +641,9 @@ ipxe-iso:
|
||||
# jq docker
|
||||
WORKDIR /build
|
||||
|
||||
COPY +version/VERSION ./
|
||||
ARG KAIROS_VERSION=$(cat VERSION)
|
||||
ARG TARGETARCH
|
||||
|
||||
# args for base-image target
|
||||
ARG --required FAMILY
|
||||
ARG --required FLAVOR
|
||||
ARG --required FLAVOR_RELEASE
|
||||
ARG --required BASE_IMAGE
|
||||
ARG --required MODEL
|
||||
ARG --required VARIANT
|
||||
|
||||
COPY ./images/naming.sh .
|
||||
ARG ISO_NAME=$(./naming.sh bootable_artifact_name)
|
||||
|
||||
# Used here: https://github.com/kairos-io/osbuilder/blob/66e9e7a9403a413e310f462136b70d715605ab09/tools-image/ipxe.tmpl#L5
|
||||
ARG RELEASE_URL
|
||||
|
||||
RUN git clone https://github.com/ipxe/ipxe
|
||||
IF [ "$ipxe_script" = "" ]
|
||||
COPY (+netboot/ipxe --VERSION=$KAIROS_VERSION --RELEASE_URL=$RELEASE_URL) /build/ipxe/script.ipxe
|
||||
COPY (+netboot/ipxe --VERSION=$VERSION --RELEASE_URL=$RELEASE_URL) /build/ipxe/script.ipxe
|
||||
ELSE
|
||||
COPY $ipxe_script /build/ipxe/script.ipxe
|
||||
END
|
||||
@ -771,13 +658,12 @@ ipxe-iso:
|
||||
# is to boot from them and do a reset to get the latest system installed
|
||||
# This allows us to build a raw disk image locally to test the cloud workflow easily
|
||||
raw-image:
|
||||
FROM ubuntu
|
||||
ARG TARGETARCH
|
||||
COPY +version/VERSION ./
|
||||
RUN echo "version ${VERSION}"
|
||||
ARG VERSION=$(cat VERSION)
|
||||
COPY ./images/naming.sh .
|
||||
ARG IMG_NAME=$(./naming.sh bootable_artifact_name).raw
|
||||
# +base-image will be called again by +uki-artifacts but will be cached
|
||||
# We just use it here to take a shortcut to the artifact name
|
||||
FROM +base-image
|
||||
WORKDIR /build
|
||||
ARG IMG_NAME=$(source /etc/os-release; echo '$KAIROS_ARTIFACT').raw
|
||||
|
||||
ARG OSBUILDER_IMAGE
|
||||
FROM $OSBUILDER_IMAGE
|
||||
WORKDIR /build
|
||||
@ -814,19 +700,11 @@ trivy-scan:
|
||||
|
||||
# Use base-image so it can read original os-release file
|
||||
FROM +base-image
|
||||
|
||||
ARG ISO_NAME=$(source /etc/os-release; echo '$KAIROS_ARTIFACT')
|
||||
|
||||
COPY +trivy/trivy /trivy
|
||||
COPY +trivy/contrib /contrib
|
||||
COPY +version/VERSION ./
|
||||
ARG KAIROS_VERSION=$(cat VERSION)
|
||||
ARG TARGETARCH
|
||||
ARG --required FAMILY # The dockerfile to use
|
||||
ARG --required FLAVOR # The distribution E.g. "ubuntu"
|
||||
ARG --required FLAVOR_RELEASE # The distribution release/version E.g. "20.04"
|
||||
ARG --required VARIANT
|
||||
ARG --required MODEL
|
||||
ARG --required BASE_IMAGE # BASE_IMAGE is the image to apply the strategy (aka FLAVOR) on. E.g. ubuntu:20.04
|
||||
COPY ./images/naming.sh .
|
||||
ARG ISO_NAME=$(./naming.sh bootable_artifact_name)
|
||||
|
||||
WORKDIR /build
|
||||
RUN /trivy filesystem --skip-dirs /tmp --timeout 30m --format sarif -o report.sarif --no-progress /
|
||||
@ -846,17 +724,8 @@ grype-scan:
|
||||
# Use base-image so it can read original os-release file
|
||||
FROM +base-image
|
||||
COPY +grype/grype /grype
|
||||
COPY +version/VERSION ./
|
||||
ARG KAIROS_VERSION=$(cat VERSION)
|
||||
ARG TARGETARCH
|
||||
ARG --required FAMILY # The dockerfile to use
|
||||
ARG --required FLAVOR # The distribution E.g. "ubuntu"
|
||||
ARG --required FLAVOR_RELEASE # The distribution release/version E.g. "20.04"
|
||||
ARG --required VARIANT
|
||||
ARG --required MODEL
|
||||
ARG --required BASE_IMAGE # BASE_IMAGE is the image to apply the strategy (aka FLAVOR) on. E.g. ubuntu:20.04
|
||||
COPY ./images/naming.sh .
|
||||
ARG ISO_NAME=$(./naming.sh bootable_artifact_name)
|
||||
|
||||
ARG ISO_NAME=$(source /etc/os-release; echo '$KAIROS_ARTIFACT')
|
||||
|
||||
WORKDIR /build
|
||||
RUN /grype dir:/ --output sarif --add-cpes-if-none --file report.sarif
|
||||
@ -905,32 +774,24 @@ run-qemu-datasource-tests:
|
||||
|
||||
|
||||
run-qemu-netboot-test:
|
||||
FROM +base-image
|
||||
ARG ISO_NAME=$(source /etc/os-release; echo '$KAIROS_ARTIFACT')
|
||||
|
||||
COPY +git-version/GIT_VERSION GIT_VERSION
|
||||
ARG VERSION=$(cat ./GIT_VERSION)
|
||||
|
||||
FROM +go-deps-test
|
||||
COPY . /test
|
||||
WORKDIR /test
|
||||
|
||||
COPY +version/VERSION ./
|
||||
ARG KAIROS_VERSION=$(cat VERSION)
|
||||
|
||||
ARG TARGETARCH # Earthly built-in (not passed)
|
||||
ARG --required FAMILY # The dockerfile to use
|
||||
ARG --required FLAVOR # The distribution E.g. "ubuntu"
|
||||
ARG --required FLAVOR_RELEASE # The distribution release/version E.g. "20.04"
|
||||
ARG --required VARIANT
|
||||
ARG --required MODEL
|
||||
ARG --required BASE_IMAGE # BASE_IMAGE is the image to apply the strategy (aka FLAVOR) on. E.g. ubuntu:20.04
|
||||
|
||||
COPY ./images/naming.sh .
|
||||
ARG ISO_NAME=$(./naming.sh bootable_artifact_name)
|
||||
|
||||
# This is the IP at which qemu vm can see the host
|
||||
ARG IP="10.0.2.2"
|
||||
|
||||
COPY (+netboot/squashfs --VERSION=$KAIROS_VERSION --RELEASE_URL=http://$IP) ./build/$KAIROS_VERSION/$ISO_NAME.squashfs
|
||||
COPY (+netboot/kernel --VERSION=$KAIROS_VERSION --RELEASE_URL=http://$IP) ./build/$KAIROS_VERSION/$ISO_NAME-kernel
|
||||
COPY (+netboot/initrd --VERSION=$KAIROS_VERSION --RELEASE_URL=http://$IP) ./build/$KAIROS_VERSION/$ISO_NAME-initrd
|
||||
COPY (+netboot/ipxe --VERSION=$KAIROS_VERSION --RELEASE_URL=http://$IP) ./build/$KAIROS_VERSION/$ISO_NAME.ipxe
|
||||
COPY (+ipxe-iso/iso --VERSION=$KAIROS_VERSION --RELEASE_URL=http://$IP) ./build/${ISO_NAME}-ipxe.iso
|
||||
COPY (+netboot/squashfs --VERSION=$VERSION --RELEASE_URL=http://$IP) ./build/$VERSION/$ISO_NAME.squashfs
|
||||
COPY (+netboot/kernel --VERSION=$VERSION --RELEASE_URL=http://$IP) ./build/$VERSION/$ISO_NAME-kernel
|
||||
COPY (+netboot/initrd --VERSION=$VERSION --RELEASE_URL=http://$IP) ./build/$VERSION/$ISO_NAME-initrd
|
||||
COPY (+netboot/ipxe --VERSION=$VERSION --RELEASE_URL=http://$IP) ./build/$VERSION/$ISO_NAME.ipxe
|
||||
COPY (+ipxe-iso/iso --VERSION=$VERSION --RELEASE_URL=http://$IP) ./build/${ISO_NAME}-ipxe.iso
|
||||
|
||||
ENV ISO=/test/build/$ISO_NAME-ipxe.iso
|
||||
|
||||
@ -993,7 +854,6 @@ pull-build-artifacts:
|
||||
FROM $OSBUILDER_IMAGE
|
||||
RUN zypper in -y jq docker
|
||||
COPY +uuidgen/UUIDGEN ./
|
||||
COPY +version/VERSION ./
|
||||
ARG UUIDGEN=$(cat UUIDGEN)
|
||||
ARG BUNDLE_IMAGE=ttl.sh/$UUIDGEN:24h
|
||||
|
||||
@ -1007,7 +867,6 @@ push-build-artifacts:
|
||||
FROM $OSBUILDER_IMAGE
|
||||
RUN zypper in -y jq docker
|
||||
COPY +uuidgen/UUIDGEN ./
|
||||
COPY +version/VERSION ./
|
||||
ARG UUIDGEN=$(cat UUIDGEN)
|
||||
ARG BUNDLE_IMAGE=ttl.sh/$UUIDGEN:24h
|
||||
|
||||
@ -1028,13 +887,9 @@ prepare-bundles-tests:
|
||||
FROM $OSBUILDER_IMAGE
|
||||
RUN zypper in -y jq docker
|
||||
COPY +uuidgen/UUIDGEN ./
|
||||
COPY +version/VERSION ./
|
||||
ARG UUIDGEN=$(cat UUIDGEN)
|
||||
ARG BUNDLE_IMAGE=ttl.sh/$UUIDGEN:24h
|
||||
# BUILD +examples-bundle --BUNDLE_IMAGE=$BUNDLE_IMAGE
|
||||
ARG VERSION=$(cat VERSION)
|
||||
RUN echo "version ${VERSION}"
|
||||
WITH DOCKER --load $IMG=(+examples-bundle --BUNDLE_IMAGE=$BUNDLE_IMAGE --VERSION=$VERSION)
|
||||
WITH DOCKER --load $IMG=(+examples-bundle --BUNDLE_IMAGE=$BUNDLE_IMAGE)
|
||||
RUN docker push $BUNDLE_IMAGE
|
||||
END
|
||||
BUILD +examples-bundle-config --BUNDLE_IMAGE=$BUNDLE_IMAGE
|
||||
@ -1050,8 +905,7 @@ run-qemu-bundles-tests:
|
||||
### ./earthly.sh +examples-bundle --BUNDLE_IMAGE=ttl.sh/testfoobar:8h
|
||||
examples-bundle:
|
||||
ARG BUNDLE_IMAGE
|
||||
ARG VERSION
|
||||
FROM DOCKERFILE --build-arg VERSION=$VERSION -f examples/bundle/Dockerfile .
|
||||
FROM DOCKERFILE -f examples/bundle/Dockerfile .
|
||||
SAVE IMAGE $BUNDLE_IMAGE
|
||||
|
||||
## ./earthly.sh +examples-bundle-config --BUNDLE_IMAGE=ttl.sh/testfoobar:8h
|
||||
@ -1120,20 +974,6 @@ temp-image:
|
||||
FROM +base-image
|
||||
SAVE IMAGE --push $TTL_IMAGE
|
||||
|
||||
generate-schema:
|
||||
FROM alpine
|
||||
COPY . ./
|
||||
COPY +version/VERSION ./
|
||||
COPY +luet/luet /usr/bin/luet
|
||||
RUN mkdir -p /etc/luet/repos.conf.d/
|
||||
RUN luet repo add kairos --yes --url quay.io/kairos/packages --type docker
|
||||
RUN luet install -y system/kairos-agent
|
||||
ARG RELEASE_VERSION=$(cat VERSION)
|
||||
RUN mkdir "docs/static/$RELEASE_VERSION"
|
||||
ARG SCHEMA_FILE="docs/static/$RELEASE_VERSION/cloud-config.json"
|
||||
RUN kairos-agent print-schema > $SCHEMA_FILE
|
||||
SAVE ARTIFACT ./docs/static/* AS LOCAL docs/static/
|
||||
|
||||
last-commit-packages:
|
||||
FROM quay.io/skopeo/stable
|
||||
RUN dnf install -y jq
|
||||
|
@ -1,8 +1,6 @@
|
||||
FROM alpine as build
|
||||
# Install a binary
|
||||
ARG VERSION
|
||||
ENV VERSION=$VERSION
|
||||
|
||||
# Install a binary
|
||||
RUN wget https://github.com/ipfs/kubo/releases/download/v0.15.0/kubo_v0.15.0_linux-amd64.tar.gz -O kubo.tar.gz
|
||||
RUN tar xvf kubo.tar.gz
|
||||
RUN mv kubo/ipfs /usr/bin/ipfs
|
||||
@ -13,4 +11,4 @@ RUN echo ID=_any > /usr/lib/extension-release.d/extension-release.kubo
|
||||
FROM scratch
|
||||
|
||||
COPY --from=build /usr/bin/ipfs /usr/bin/ipfs
|
||||
COPY --from=build /usr/lib/extension-release.d /usr/lib/extension-release.d
|
||||
COPY --from=build /usr/lib/extension-release.d /usr/lib/extension-release.d
|
||||
|
@ -12,46 +12,51 @@ COPY --from=framework / /
|
||||
|
||||
RUN rm -rf /etc/ssh/ssh_host_*
|
||||
|
||||
COPY naming.sh /usr/local/bin/naming.sh
|
||||
COPY which-init.sh /usr/local/bin/which-init.sh
|
||||
|
||||
RUN sed -i -n '/KAIROS_/!p' /etc/os-release
|
||||
|
||||
# need to be defined after FROM for them to be replaced in the RUN bellow
|
||||
ARG FLAVOR
|
||||
ARG FLAVOR_RELEASE
|
||||
ARG VARIANT
|
||||
ARG OS_ID=kairos
|
||||
ARG HOME_URL="https://github.com/kairos-io/kairos"
|
||||
ARG BUG_REPORT_URL="https://github.com/kairos-io/kairos/issues"
|
||||
ARG GITHUB_REPO="kairos-io/kairos"
|
||||
# TODO: merge these
|
||||
ARG VERSION
|
||||
ARG ID=kairos
|
||||
ARG REGISTRY_AND_ORG="quay.io/kairos"
|
||||
|
||||
ARG RELEASE
|
||||
ARG FLAVOR
|
||||
ARG FLAVOR_RELEASE
|
||||
ARG VARIANT
|
||||
ARG FAMILY
|
||||
ARG MODEL
|
||||
ARG REGISTRY_AND_ORG="quay.io/kairos"
|
||||
ARG K3S_VERSION
|
||||
ARG TARGETARCH
|
||||
ARG SOFTWARE_VERSION
|
||||
ARG SOFTWARE_VERSION_PREFIX
|
||||
ARG SOFTWARE_LUET_VERSION=""
|
||||
|
||||
RUN rm -rf /etc/machine-id
|
||||
|
||||
FROM base-kairos AS kairos-core
|
||||
|
||||
FROM base-kairos AS kairos-standard
|
||||
ARG K3S_VERSION
|
||||
LABEL io.kairos.k3s_version="${K3S_VERSION}"
|
||||
ARG SOFTWARE_VERSION
|
||||
LABEL io.kairos.k3s_version="${SOFTWARE_VERSION}"
|
||||
RUN luet install -y system/provider-kairos
|
||||
RUN luet install -y "k8s/k3s-$(which-init.sh)@${K3S_VERSION}" utils/edgevpn utils/k9s utils/nerdctl container/kubectl utils/kube-vip
|
||||
RUN luet install -y "k8s/k3s-$(which-init.sh)@${SOFTWARE_LUET_VERSION:-$SOFTWARE_VERSION}" utils/edgevpn utils/k9s utils/nerdctl container/kubectl utils/kube-vip
|
||||
|
||||
FROM kairos-${VARIANT} AS kairos-final
|
||||
ARG BASE_IMAGE
|
||||
ARG VARIANT
|
||||
ARG FAMILY
|
||||
ARG FRAMEWORK_VERSION
|
||||
ARG RELEASE
|
||||
ARG FLAVOR
|
||||
ARG FLAVOR_RELEASE
|
||||
ARG VARIANT
|
||||
ARG FAMILY
|
||||
ARG MODEL
|
||||
ARG VERSION
|
||||
ARG FRAMEWORK_VERSION
|
||||
ARG TARGETARCH
|
||||
ARG SOFTWARE_VERSION
|
||||
ARG SOFTWARE_VERSION_PREFIX
|
||||
|
||||
LABEL org.opencontainers.image.authors="Kairos Maintainers <team@kairos.io>"
|
||||
LABEL org.opencontainers.image.licenses="Apache-2.0"
|
||||
LABEL org.opencontainers.image.url="https://github.com/kairos-io/kairos"
|
||||
@ -62,8 +67,14 @@ LABEL io.kairos.family="${FAMILY}"
|
||||
LABEL io.kairos.flavor="${FLAVOR}"
|
||||
LABEL io.kairos.flavor_release="${FLAVOR_RELEASE}"
|
||||
LABEL io.kairos.model="${MODEL}"
|
||||
LABEL io.kairos.version="${VERSION}"
|
||||
LABEL io.kairos.release="${RELEASE}"
|
||||
LABEL io.kairos.framework-version="${FRAMEWORK_VERSION}"
|
||||
LABEL io.kairos.software-version="${SOFTWARE_VERSION}"
|
||||
LABEL io.kairos.software-version-prefix="${SOFTWARE_VERSION_PREFIX}"
|
||||
LABEL io.kairos.targetarch="${TARGETARCH}"
|
||||
|
||||
RUN kairos-agent versioneer os-release-variables
|
||||
RUN kairos-agent versioneer os-release-variables >> /etc/os-release
|
||||
|
||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||
RUN luet database get-all-installed --output /etc/kairos/versions.yaml
|
||||
@ -100,4 +111,4 @@ RUN if [ "$(which-init.sh)" = "systemd" ]; then \
|
||||
|
||||
RUN rm -rf /tmp/*
|
||||
RUN luet cleanup
|
||||
RUN rm -rf /var/luet
|
||||
RUN rm -rf /var/luet
|
||||
|
@ -163,46 +163,51 @@ COPY --from=framework / /
|
||||
|
||||
RUN rm -rf /etc/ssh/ssh_host_*
|
||||
|
||||
COPY naming.sh /usr/local/bin/naming.sh
|
||||
COPY which-init.sh /usr/local/bin/which-init.sh
|
||||
|
||||
RUN sed -i -n '/KAIROS_/!p' /etc/os-release
|
||||
|
||||
# need to be defined after FROM for them to be replaced in the RUN bellow
|
||||
ARG FLAVOR
|
||||
ARG FLAVOR_RELEASE
|
||||
ARG VARIANT
|
||||
ARG OS_ID=kairos
|
||||
ARG HOME_URL="https://github.com/kairos-io/kairos"
|
||||
ARG BUG_REPORT_URL="https://github.com/kairos-io/kairos/issues"
|
||||
ARG GITHUB_REPO="kairos-io/kairos"
|
||||
# TODO: merge these
|
||||
ARG VERSION
|
||||
ARG ID=kairos
|
||||
ARG REGISTRY_AND_ORG="quay.io/kairos"
|
||||
|
||||
ARG RELEASE
|
||||
ARG FLAVOR
|
||||
ARG FLAVOR_RELEASE
|
||||
ARG VARIANT
|
||||
ARG FAMILY
|
||||
ARG MODEL
|
||||
ARG REGISTRY_AND_ORG="quay.io/kairos"
|
||||
ARG K3S_VERSION
|
||||
ARG TARGETARCH
|
||||
ARG SOFTWARE_VERSION
|
||||
ARG SOFTWARE_VERSION_PREFIX
|
||||
ARG SOFTWARE_LUET_VERSION=""
|
||||
|
||||
RUN rm -rf /etc/machine-id
|
||||
|
||||
FROM base-kairos AS kairos-core
|
||||
|
||||
FROM base-kairos AS kairos-standard
|
||||
ARG K3S_VERSION
|
||||
LABEL io.kairos.k3s_version="${K3S_VERSION}"
|
||||
ARG SOFTWARE_VERSION
|
||||
LABEL io.kairos.k3s_version="${SOFTWARE_VERSION}"
|
||||
RUN luet install -y system/provider-kairos
|
||||
RUN luet install -y "k8s/k3s-$(which-init.sh)@${K3S_VERSION}" utils/edgevpn utils/k9s utils/nerdctl container/kubectl utils/kube-vip
|
||||
RUN luet install -y "k8s/k3s-$(which-init.sh)@${SOFTWARE_LUET_VERSION:-$SOFTWARE_VERSION}" utils/edgevpn utils/k9s utils/nerdctl container/kubectl utils/kube-vip
|
||||
|
||||
FROM kairos-${VARIANT} AS kairos-final
|
||||
ARG BASE_IMAGE
|
||||
ARG VARIANT
|
||||
ARG FAMILY
|
||||
ARG FRAMEWORK_VERSION
|
||||
ARG RELEASE
|
||||
ARG FLAVOR
|
||||
ARG FLAVOR_RELEASE
|
||||
ARG VARIANT
|
||||
ARG FAMILY
|
||||
ARG MODEL
|
||||
ARG VERSION
|
||||
ARG FRAMEWORK_VERSION
|
||||
ARG TARGETARCH
|
||||
ARG SOFTWARE_VERSION
|
||||
ARG SOFTWARE_VERSION_PREFIX
|
||||
|
||||
LABEL org.opencontainers.image.authors="Kairos Maintainers <team@kairos.io>"
|
||||
LABEL org.opencontainers.image.licenses="Apache-2.0"
|
||||
LABEL org.opencontainers.image.url="https://github.com/kairos-io/kairos"
|
||||
@ -213,8 +218,14 @@ LABEL io.kairos.family="${FAMILY}"
|
||||
LABEL io.kairos.flavor="${FLAVOR}"
|
||||
LABEL io.kairos.flavor_release="${FLAVOR_RELEASE}"
|
||||
LABEL io.kairos.model="${MODEL}"
|
||||
LABEL io.kairos.version="${VERSION}"
|
||||
LABEL io.kairos.release="${RELEASE}"
|
||||
LABEL io.kairos.framework-version="${FRAMEWORK_VERSION}"
|
||||
LABEL io.kairos.software-version="${SOFTWARE_VERSION}"
|
||||
LABEL io.kairos.software-version-prefix="${SOFTWARE_VERSION_PREFIX}"
|
||||
LABEL io.kairos.targetarch="${TARGETARCH}"
|
||||
|
||||
RUN kairos-agent versioneer os-release-variables
|
||||
RUN kairos-agent versioneer os-release-variables >> /etc/os-release
|
||||
|
||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||
RUN luet database get-all-installed --output /etc/kairos/versions.yaml
|
||||
|
@ -164,46 +164,51 @@ COPY --from=framework / /
|
||||
|
||||
RUN rm -rf /etc/ssh/ssh_host_*
|
||||
|
||||
COPY naming.sh /usr/local/bin/naming.sh
|
||||
COPY which-init.sh /usr/local/bin/which-init.sh
|
||||
|
||||
RUN sed -i -n '/KAIROS_/!p' /etc/os-release
|
||||
|
||||
# need to be defined after FROM for them to be replaced in the RUN bellow
|
||||
ARG FLAVOR
|
||||
ARG FLAVOR_RELEASE
|
||||
ARG VARIANT
|
||||
ARG OS_ID=kairos
|
||||
ARG HOME_URL="https://github.com/kairos-io/kairos"
|
||||
ARG BUG_REPORT_URL="https://github.com/kairos-io/kairos/issues"
|
||||
ARG GITHUB_REPO="kairos-io/kairos"
|
||||
# TODO: merge these
|
||||
ARG VERSION
|
||||
ARG ID=kairos
|
||||
ARG REGISTRY_AND_ORG="quay.io/kairos"
|
||||
|
||||
ARG RELEASE
|
||||
ARG FLAVOR
|
||||
ARG FLAVOR_RELEASE
|
||||
ARG VARIANT
|
||||
ARG FAMILY
|
||||
ARG MODEL
|
||||
ARG REGISTRY_AND_ORG="quay.io/kairos"
|
||||
ARG K3S_VERSION
|
||||
ARG TARGETARCH
|
||||
ARG SOFTWARE_VERSION
|
||||
ARG SOFTWARE_VERSION_PREFIX
|
||||
ARG SOFTWARE_LUET_VERSION=""
|
||||
|
||||
RUN rm -rf /etc/machine-id
|
||||
|
||||
FROM base-kairos AS kairos-core
|
||||
|
||||
FROM base-kairos AS kairos-standard
|
||||
ARG K3S_VERSION
|
||||
LABEL io.kairos.k3s_version="${K3S_VERSION}"
|
||||
ARG SOFTWARE_VERSION
|
||||
LABEL io.kairos.k3s_version="${SOFTWARE_VERSION}"
|
||||
RUN luet install -y system/provider-kairos
|
||||
RUN luet install -y "k8s/k3s-$(which-init.sh)@${K3S_VERSION}" utils/edgevpn utils/k9s utils/nerdctl container/kubectl utils/kube-vip
|
||||
RUN luet install -y "k8s/k3s-$(which-init.sh)@${SOFTWARE_LUET_VERSION:-$SOFTWARE_VERSION}" utils/edgevpn utils/k9s utils/nerdctl container/kubectl utils/kube-vip
|
||||
|
||||
FROM kairos-${VARIANT} AS kairos-final
|
||||
ARG BASE_IMAGE
|
||||
ARG VARIANT
|
||||
ARG FAMILY
|
||||
ARG FRAMEWORK_VERSION
|
||||
ARG RELEASE
|
||||
ARG FLAVOR
|
||||
ARG FLAVOR_RELEASE
|
||||
ARG VARIANT
|
||||
ARG FAMILY
|
||||
ARG MODEL
|
||||
ARG VERSION
|
||||
ARG FRAMEWORK_VERSION
|
||||
ARG TARGETARCH
|
||||
ARG SOFTWARE_VERSION
|
||||
ARG SOFTWARE_VERSION_PREFIX
|
||||
|
||||
LABEL org.opencontainers.image.authors="Kairos Maintainers <team@kairos.io>"
|
||||
LABEL org.opencontainers.image.licenses="Apache-2.0"
|
||||
LABEL org.opencontainers.image.url="https://github.com/kairos-io/kairos"
|
||||
@ -214,8 +219,14 @@ LABEL io.kairos.family="${FAMILY}"
|
||||
LABEL io.kairos.flavor="${FLAVOR}"
|
||||
LABEL io.kairos.flavor_release="${FLAVOR_RELEASE}"
|
||||
LABEL io.kairos.model="${MODEL}"
|
||||
LABEL io.kairos.version="${VERSION}"
|
||||
LABEL io.kairos.release="${RELEASE}"
|
||||
LABEL io.kairos.framework-version="${FRAMEWORK_VERSION}"
|
||||
LABEL io.kairos.software-version="${SOFTWARE_VERSION}"
|
||||
LABEL io.kairos.software-version-prefix="${SOFTWARE_VERSION_PREFIX}"
|
||||
LABEL io.kairos.targetarch="${TARGETARCH}"
|
||||
|
||||
RUN kairos-agent versioneer os-release-variables
|
||||
RUN kairos-agent versioneer os-release-variables >> /etc/os-release
|
||||
|
||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||
RUN luet database get-all-installed --output /etc/kairos/versions.yaml
|
||||
|
@ -81,6 +81,7 @@ RUN zypper in --force-resolution -y \
|
||||
tmux \
|
||||
vim \
|
||||
which \
|
||||
tpm2* \
|
||||
&& zypper cc
|
||||
|
||||
FROM common as amd64
|
||||
@ -170,46 +171,51 @@ COPY --from=framework / /
|
||||
|
||||
RUN rm -rf /etc/ssh/ssh_host_*
|
||||
|
||||
COPY naming.sh /usr/local/bin/naming.sh
|
||||
COPY which-init.sh /usr/local/bin/which-init.sh
|
||||
|
||||
RUN sed -i -n '/KAIROS_/!p' /etc/os-release
|
||||
|
||||
# need to be defined after FROM for them to be replaced in the RUN bellow
|
||||
ARG FLAVOR
|
||||
ARG FLAVOR_RELEASE
|
||||
ARG VARIANT
|
||||
ARG OS_ID=kairos
|
||||
ARG HOME_URL="https://github.com/kairos-io/kairos"
|
||||
ARG BUG_REPORT_URL="https://github.com/kairos-io/kairos/issues"
|
||||
ARG GITHUB_REPO="kairos-io/kairos"
|
||||
# TODO: merge these
|
||||
ARG VERSION
|
||||
ARG ID=kairos
|
||||
ARG REGISTRY_AND_ORG="quay.io/kairos"
|
||||
|
||||
ARG RELEASE
|
||||
ARG FLAVOR
|
||||
ARG FLAVOR_RELEASE
|
||||
ARG VARIANT
|
||||
ARG FAMILY
|
||||
ARG MODEL
|
||||
ARG REGISTRY_AND_ORG="quay.io/kairos"
|
||||
ARG K3S_VERSION
|
||||
ARG TARGETARCH
|
||||
ARG SOFTWARE_VERSION
|
||||
ARG SOFTWARE_VERSION_PREFIX
|
||||
ARG SOFTWARE_LUET_VERSION=""
|
||||
|
||||
RUN rm -rf /etc/machine-id
|
||||
|
||||
FROM base-kairos AS kairos-core
|
||||
|
||||
FROM base-kairos AS kairos-standard
|
||||
ARG K3S_VERSION
|
||||
LABEL io.kairos.k3s_version="${K3S_VERSION}"
|
||||
ARG SOFTWARE_VERSION
|
||||
LABEL io.kairos.k3s_version="${SOFTWARE_VERSION}"
|
||||
RUN luet install -y system/provider-kairos
|
||||
RUN luet install -y "k8s/k3s-$(which-init.sh)@${K3S_VERSION}" utils/edgevpn utils/k9s utils/nerdctl container/kubectl utils/kube-vip
|
||||
RUN luet install -y "k8s/k3s-$(which-init.sh)@${SOFTWARE_LUET_VERSION:-$SOFTWARE_VERSION}" utils/edgevpn utils/k9s utils/nerdctl container/kubectl utils/kube-vip
|
||||
|
||||
FROM kairos-${VARIANT} AS kairos-final
|
||||
ARG BASE_IMAGE
|
||||
ARG VARIANT
|
||||
ARG FAMILY
|
||||
ARG FRAMEWORK_VERSION
|
||||
ARG RELEASE
|
||||
ARG FLAVOR
|
||||
ARG FLAVOR_RELEASE
|
||||
ARG VARIANT
|
||||
ARG FAMILY
|
||||
ARG MODEL
|
||||
ARG VERSION
|
||||
ARG FRAMEWORK_VERSION
|
||||
ARG TARGETARCH
|
||||
ARG SOFTWARE_VERSION
|
||||
ARG SOFTWARE_VERSION_PREFIX
|
||||
|
||||
LABEL org.opencontainers.image.authors="Kairos Maintainers <team@kairos.io>"
|
||||
LABEL org.opencontainers.image.licenses="Apache-2.0"
|
||||
LABEL org.opencontainers.image.url="https://github.com/kairos-io/kairos"
|
||||
@ -220,8 +226,14 @@ LABEL io.kairos.family="${FAMILY}"
|
||||
LABEL io.kairos.flavor="${FLAVOR}"
|
||||
LABEL io.kairos.flavor_release="${FLAVOR_RELEASE}"
|
||||
LABEL io.kairos.model="${MODEL}"
|
||||
LABEL io.kairos.version="${VERSION}"
|
||||
LABEL io.kairos.release="${RELEASE}"
|
||||
LABEL io.kairos.framework-version="${FRAMEWORK_VERSION}"
|
||||
LABEL io.kairos.software-version="${SOFTWARE_VERSION}"
|
||||
LABEL io.kairos.software-version-prefix="${SOFTWARE_VERSION_PREFIX}"
|
||||
LABEL io.kairos.targetarch="${TARGETARCH}"
|
||||
|
||||
RUN kairos-agent versioneer os-release-variables
|
||||
RUN kairos-agent versioneer os-release-variables >> /etc/os-release
|
||||
|
||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||
RUN luet database get-all-installed --output /etc/kairos/versions.yaml
|
||||
|
@ -26,7 +26,7 @@ FROM epel AS almalinux
|
||||
FROM epel AS rockylinux
|
||||
|
||||
FROM base AS fedora
|
||||
RUN dnf install -y "https://zfsonlinux.org/fedora/zfs-release-2-3$(rpm --eval "%{dist}").noarch.rpm" && dnf clean all
|
||||
RUN dnf install -y "https://zfsonlinux.org/fedora/zfs-release-2-4$(rpm --eval "%{dist}").noarch.rpm" && dnf clean all
|
||||
|
||||
# install common packages
|
||||
FROM ${FLAVOR} AS common
|
||||
@ -98,46 +98,51 @@ COPY --from=framework / /
|
||||
|
||||
RUN rm -rf /etc/ssh/ssh_host_*
|
||||
|
||||
COPY naming.sh /usr/local/bin/naming.sh
|
||||
COPY which-init.sh /usr/local/bin/which-init.sh
|
||||
|
||||
RUN sed -i -n '/KAIROS_/!p' /etc/os-release
|
||||
|
||||
# need to be defined after FROM for them to be replaced in the RUN bellow
|
||||
ARG FLAVOR
|
||||
ARG FLAVOR_RELEASE
|
||||
ARG VARIANT
|
||||
ARG OS_ID=kairos
|
||||
ARG HOME_URL="https://github.com/kairos-io/kairos"
|
||||
ARG BUG_REPORT_URL="https://github.com/kairos-io/kairos/issues"
|
||||
ARG GITHUB_REPO="kairos-io/kairos"
|
||||
# TODO: merge these
|
||||
ARG VERSION
|
||||
ARG ID=kairos
|
||||
ARG REGISTRY_AND_ORG="quay.io/kairos"
|
||||
|
||||
ARG RELEASE
|
||||
ARG FLAVOR
|
||||
ARG FLAVOR_RELEASE
|
||||
ARG VARIANT
|
||||
ARG FAMILY
|
||||
ARG MODEL
|
||||
ARG REGISTRY_AND_ORG="quay.io/kairos"
|
||||
ARG K3S_VERSION
|
||||
ARG TARGETARCH
|
||||
ARG SOFTWARE_VERSION
|
||||
ARG SOFTWARE_VERSION_PREFIX
|
||||
ARG SOFTWARE_LUET_VERSION=""
|
||||
|
||||
RUN rm -rf /etc/machine-id
|
||||
|
||||
FROM base-kairos AS kairos-core
|
||||
|
||||
FROM base-kairos AS kairos-standard
|
||||
ARG K3S_VERSION
|
||||
LABEL io.kairos.k3s_version="${K3S_VERSION}"
|
||||
ARG SOFTWARE_VERSION
|
||||
LABEL io.kairos.k3s_version="${SOFTWARE_VERSION}"
|
||||
RUN luet install -y system/provider-kairos
|
||||
RUN luet install -y "k8s/k3s-$(which-init.sh)@${K3S_VERSION}" utils/edgevpn utils/k9s utils/nerdctl container/kubectl utils/kube-vip
|
||||
RUN luet install -y "k8s/k3s-$(which-init.sh)@${SOFTWARE_LUET_VERSION:-$SOFTWARE_VERSION}" utils/edgevpn utils/k9s utils/nerdctl container/kubectl utils/kube-vip
|
||||
|
||||
FROM kairos-${VARIANT} AS kairos-final
|
||||
ARG BASE_IMAGE
|
||||
ARG VARIANT
|
||||
ARG FAMILY
|
||||
ARG FRAMEWORK_VERSION
|
||||
ARG RELEASE
|
||||
ARG FLAVOR
|
||||
ARG FLAVOR_RELEASE
|
||||
ARG VARIANT
|
||||
ARG FAMILY
|
||||
ARG MODEL
|
||||
ARG VERSION
|
||||
ARG FRAMEWORK_VERSION
|
||||
ARG TARGETARCH
|
||||
ARG SOFTWARE_VERSION
|
||||
ARG SOFTWARE_VERSION_PREFIX
|
||||
|
||||
LABEL org.opencontainers.image.authors="Kairos Maintainers <team@kairos.io>"
|
||||
LABEL org.opencontainers.image.licenses="Apache-2.0"
|
||||
LABEL org.opencontainers.image.url="https://github.com/kairos-io/kairos"
|
||||
@ -148,8 +153,14 @@ LABEL io.kairos.family="${FAMILY}"
|
||||
LABEL io.kairos.flavor="${FLAVOR}"
|
||||
LABEL io.kairos.flavor_release="${FLAVOR_RELEASE}"
|
||||
LABEL io.kairos.model="${MODEL}"
|
||||
LABEL io.kairos.version="${VERSION}"
|
||||
LABEL io.kairos.release="${RELEASE}"
|
||||
LABEL io.kairos.framework-version="${FRAMEWORK_VERSION}"
|
||||
LABEL io.kairos.software-version="${SOFTWARE_VERSION}"
|
||||
LABEL io.kairos.software-version-prefix="${SOFTWARE_VERSION_PREFIX}"
|
||||
LABEL io.kairos.targetarch="${TARGETARCH}"
|
||||
|
||||
RUN kairos-agent versioneer os-release-variables
|
||||
RUN kairos-agent versioneer os-release-variables >> /etc/os-release
|
||||
|
||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||
RUN luet database get-all-installed --output /etc/kairos/versions.yaml
|
||||
|
@ -89,6 +89,7 @@ RUN apt-get update \
|
||||
ubuntu-advantage-tools \
|
||||
xz-utils \
|
||||
zstd \
|
||||
tpm2-* \
|
||||
&& apt-get remove -y unattended-upgrades && apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
###############################################################
|
||||
@ -267,46 +268,51 @@ COPY --from=framework / /
|
||||
|
||||
RUN rm -rf /etc/ssh/ssh_host_*
|
||||
|
||||
COPY naming.sh /usr/local/bin/naming.sh
|
||||
COPY which-init.sh /usr/local/bin/which-init.sh
|
||||
|
||||
RUN sed -i -n '/KAIROS_/!p' /etc/os-release
|
||||
|
||||
# need to be defined after FROM for them to be replaced in the RUN bellow
|
||||
ARG FLAVOR
|
||||
ARG FLAVOR_RELEASE
|
||||
ARG VARIANT
|
||||
ARG OS_ID=kairos
|
||||
ARG HOME_URL="https://github.com/kairos-io/kairos"
|
||||
ARG BUG_REPORT_URL="https://github.com/kairos-io/kairos/issues"
|
||||
ARG GITHUB_REPO="kairos-io/kairos"
|
||||
# TODO: merge these
|
||||
ARG VERSION
|
||||
ARG ID=kairos
|
||||
ARG REGISTRY_AND_ORG="quay.io/kairos"
|
||||
|
||||
ARG RELEASE
|
||||
ARG FLAVOR
|
||||
ARG FLAVOR_RELEASE
|
||||
ARG VARIANT
|
||||
ARG FAMILY
|
||||
ARG MODEL
|
||||
ARG REGISTRY_AND_ORG="quay.io/kairos"
|
||||
ARG K3S_VERSION
|
||||
ARG TARGETARCH
|
||||
ARG SOFTWARE_VERSION
|
||||
ARG SOFTWARE_VERSION_PREFIX
|
||||
ARG SOFTWARE_LUET_VERSION=""
|
||||
|
||||
RUN rm -rf /etc/machine-id
|
||||
|
||||
FROM base-kairos AS kairos-core
|
||||
|
||||
FROM base-kairos AS kairos-standard
|
||||
ARG K3S_VERSION
|
||||
LABEL io.kairos.k3s_version="${K3S_VERSION}"
|
||||
ARG SOFTWARE_VERSION
|
||||
LABEL io.kairos.k3s_version="${SOFTWARE_VERSION}"
|
||||
RUN luet install -y system/provider-kairos
|
||||
RUN luet install -y "k8s/k3s-$(which-init.sh)@${K3S_VERSION}" utils/edgevpn utils/k9s utils/nerdctl container/kubectl utils/kube-vip
|
||||
RUN luet install -y "k8s/k3s-$(which-init.sh)@${SOFTWARE_LUET_VERSION:-$SOFTWARE_VERSION}" utils/edgevpn utils/k9s utils/nerdctl container/kubectl utils/kube-vip
|
||||
|
||||
FROM kairos-${VARIANT} AS kairos-final
|
||||
ARG BASE_IMAGE
|
||||
ARG VARIANT
|
||||
ARG FAMILY
|
||||
ARG FRAMEWORK_VERSION
|
||||
ARG RELEASE
|
||||
ARG FLAVOR
|
||||
ARG FLAVOR_RELEASE
|
||||
ARG VARIANT
|
||||
ARG FAMILY
|
||||
ARG MODEL
|
||||
ARG VERSION
|
||||
ARG FRAMEWORK_VERSION
|
||||
ARG TARGETARCH
|
||||
ARG SOFTWARE_VERSION
|
||||
ARG SOFTWARE_VERSION_PREFIX
|
||||
|
||||
LABEL org.opencontainers.image.authors="Kairos Maintainers <team@kairos.io>"
|
||||
LABEL org.opencontainers.image.licenses="Apache-2.0"
|
||||
LABEL org.opencontainers.image.url="https://github.com/kairos-io/kairos"
|
||||
@ -317,8 +323,14 @@ LABEL io.kairos.family="${FAMILY}"
|
||||
LABEL io.kairos.flavor="${FLAVOR}"
|
||||
LABEL io.kairos.flavor_release="${FLAVOR_RELEASE}"
|
||||
LABEL io.kairos.model="${MODEL}"
|
||||
LABEL io.kairos.version="${VERSION}"
|
||||
LABEL io.kairos.release="${RELEASE}"
|
||||
LABEL io.kairos.framework-version="${FRAMEWORK_VERSION}"
|
||||
LABEL io.kairos.software-version="${SOFTWARE_VERSION}"
|
||||
LABEL io.kairos.software-version-prefix="${SOFTWARE_VERSION_PREFIX}"
|
||||
LABEL io.kairos.targetarch="${TARGETARCH}"
|
||||
|
||||
RUN kairos-agent versioneer os-release-variables
|
||||
RUN kairos-agent versioneer os-release-variables >> /etc/os-release
|
||||
|
||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||
RUN luet database get-all-installed --output /etc/kairos/versions.yaml
|
||||
|
181
images/naming.sh
181
images/naming.sh
@ -1,181 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
|
||||
# This script accepts values as defined in .github/flavors.json
|
||||
# and returns a proper artifact name for that set of values.
|
||||
# It's meant to be the single point of truth for artifacts names.
|
||||
|
||||
setEnvVarsFromJSON() {
|
||||
export FLAVOR
|
||||
export FLAVOR_RELEASE
|
||||
export VARIANT
|
||||
export TARGETARCH
|
||||
export MODEL
|
||||
FLAVOR=$(echo "$ARTIFACT_JSON" | jq -r '.flavor | select (.!=null)')
|
||||
FLAVOR_RELEASE=$(echo "$ARTIFACT_JSON" | jq -r '.flavorRelease | select (.!=null)')
|
||||
VARIANT=$(echo "$ARTIFACT_JSON" | jq -r '.variant | select (.!=null)')
|
||||
TARGETARCH=$(echo "$ARTIFACT_JSON" | jq -r '.arch | select (.!=null)')
|
||||
MODEL=$(echo "$ARTIFACT_JSON" | jq -r '.model | select (.!=null)')
|
||||
}
|
||||
|
||||
common_artifact_name() {
|
||||
if [ -z "$KAIROS_VERSION" ]; then
|
||||
echo 'KAIROS_VERSION must be defined'
|
||||
exit 1
|
||||
fi
|
||||
if [ -z "$FLAVOR_RELEASE" ]; then
|
||||
echo 'FLAVOR_RELEASE must be defined'
|
||||
exit 1
|
||||
fi
|
||||
if [ -z "$VARIANT" ]; then
|
||||
echo 'VARIANT must be defined'
|
||||
exit 1
|
||||
fi
|
||||
if [ -z "$TARGETARCH" ]; then
|
||||
echo 'TARGETARCH must be defined'
|
||||
exit 1
|
||||
fi
|
||||
if [ -z "$MODEL" ]; then
|
||||
echo 'MODEL must be defined'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "$FLAVOR_RELEASE-$VARIANT-$TARGETARCH-$MODEL-$KAIROS_VERSION"
|
||||
}
|
||||
|
||||
common_artifact_base_name() {
|
||||
if [ -z "$FLAVOR_RELEASE" ]; then
|
||||
echo 'FLAVOR_RELEASE must be defined'
|
||||
exit 1
|
||||
fi
|
||||
if [ -z "$TARGETARCH" ]; then
|
||||
echo 'TARGETARCH must be defined'
|
||||
exit 1
|
||||
fi
|
||||
if [ -z "$MODEL" ]; then
|
||||
echo 'MODEL must be defined'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "$FLAVOR_RELEASE-$TARGETARCH-$MODEL"
|
||||
}
|
||||
|
||||
bootable_artifact_name() {
|
||||
if [ -z "$FLAVOR" ]; then
|
||||
echo 'FLAVOR must be defined'
|
||||
exit 1
|
||||
fi
|
||||
local common
|
||||
common=$(common_artifact_name)
|
||||
|
||||
echo "kairos-$FLAVOR-$common"
|
||||
}
|
||||
|
||||
container_artifact_name() {
|
||||
if [ -z "$KAIROS_VERSION" ]; then
|
||||
echo 'KAIROS_VERSION must be defined'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$FLAVOR" ]; then
|
||||
echo 'FLAVOR must be defined'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$REGISTRY_AND_ORG" ]; then
|
||||
echo 'REGISTRY_AND_ORG must be defined'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# quay.io doesn't accept "+" in the repo name
|
||||
export KAIROS_VERSION="${KAIROS_VERSION/+/-}"
|
||||
local tag
|
||||
tag=$(common_artifact_name)
|
||||
|
||||
echo "$REGISTRY_AND_ORG/$FLAVOR:$tag"
|
||||
}
|
||||
|
||||
container_artifact_base_name() {
|
||||
if [ -z "$BRANCH" ]; then
|
||||
export BRANCH=master
|
||||
fi
|
||||
|
||||
if [ -z "$FLAVOR" ]; then
|
||||
echo 'FLAVOR must be defined'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$REGISTRY_AND_ORG" ]; then
|
||||
echo 'REGISTRY_AND_ORG must be defined'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# quay.io doesn't accept "+" in the repo name
|
||||
export KAIROS_VERSION="${KAIROS_VERSION/+/-}"
|
||||
local tag
|
||||
tag=$(common_artifact_base_name)
|
||||
|
||||
echo "$REGISTRY_AND_ORG/$FLAVOR:$tag-$BRANCH"
|
||||
}
|
||||
|
||||
container_artifact_label() {
|
||||
if [ -z "$KAIROS_VERSION" ]; then
|
||||
echo 'KAIROS_VERSION must be defined'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
export KAIROS_VERSION="${KAIROS_VERSION/+/-}"
|
||||
common_artifact_name
|
||||
}
|
||||
|
||||
# returns the repo name for the container artifact
|
||||
# for example quay.io/kairos/opensuse or quake.io/kairos/alpine
|
||||
container_artifact_repo() {
|
||||
if [ -z "$FLAVOR" ]; then
|
||||
echo 'FLAVOR must be defined'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$REGISTRY_AND_ORG" ]; then
|
||||
echo 'REGISTRY_AND_ORG must be defined'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "$REGISTRY_AND_ORG/$FLAVOR"
|
||||
}
|
||||
|
||||
|
||||
if [ -n "$ARTIFACT_JSON" ]; then
|
||||
setEnvVarsFromJSON
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
"container_artifact_name")
|
||||
container_artifact_name
|
||||
;;
|
||||
"container_artifact_label")
|
||||
container_artifact_label
|
||||
;;
|
||||
"bootable_artifact_name")
|
||||
bootable_artifact_name
|
||||
;;
|
||||
"common_artifact_name")
|
||||
common_artifact_name
|
||||
;;
|
||||
"container_artifact_repo")
|
||||
container_artifact_repo
|
||||
;;
|
||||
"container_artifact_base_name")
|
||||
container_artifact_base_name
|
||||
;;
|
||||
*)
|
||||
echo "Function not found: $1"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# ARTIFACT_JSON='{"flavor":"opensuse-leap","flavorRelease":"15.5","variant":"standard","model":"generic","arch":"amd64"}'
|
||||
# KAIROS_VERSION=v2.4.1
|
||||
# REGISTRY_AND_ORG=quay.io/kairos
|
||||
# container_artifact_name
|
||||
# bootable_artifact_name
|
Loading…
Reference in New Issue
Block a user