Compare commits

...

53 Commits

Author SHA1 Message Date
ddb09cdefd wip 2025-06-23 22:29:41 +03:00
3ebd1a8b7e wip 2025-06-23 22:25:49 +03:00
7a07b6f9a5 wip 2025-06-23 22:23:17 +03:00
0bc8fb228d wip
Some checks failed
Building alt images / test-process (push) Has been cancelled
Building alt images / build-process (push) Has been cancelled
2025-06-23 21:52:27 +03:00
6cbde103dd fix(alt/php, alt/ruby): strip whitespace, don't use 'raw' blocks 2025-06-18 11:20:32 +03:00
14c787b0db delete org/alt/etcd (duplicate org/k8s/etcd) 2025-06-18 10:42:19 +03:00
d161930947 fix(.gitea/workflow): change vendor label for c10f2 in single workflow 2025-06-17 18:15:04 +03:00
0c426721dd k8s/coredns: check key in dict before using it 2025-06-17 17:54:49 +03:00
0d08c6f88f build: pass tasks for distroless images 2025-06-17 14:24:35 +03:00
a56bc4eb06 k8s/coredns: update templates 2025-05-28 21:15:48 +03:00
739b5d8eba better handle templates with variables and control flow in info.yaml 2025-05-28 21:14:29 +03:00
941b8fb599 support python 3.9 2025-05-16 14:52:01 +03:00
aacaf22d79 feat(k8s/etcd): add etcd image for kubernetes 2025-05-12 13:44:30 +03:00
2d5df6ea4c fix command error vendor label for c10f2 2025-05-07 12:11:51 +03:00
626b6feb4c fix vendor label for c10f2 in dostroless templates 2025-05-07 10:24:12 +03:00
69e7c13ea2 fix(.gitea/workflow): change vendor label for c10f2 2025-05-06 13:02:15 +03:00
d47bc5a030 fix(alt/nginx): listen on 0.0.0.0 in nginx image 2025-04-17 22:03:44 +03:00
9702a487d7 fix(k8s/flannel-cni-plugin): make excpetion for 1.4.0 2025-04-16 13:50:46 +03:00
c3398350b7 fix(workflow single image): fix image path in test step 2025-04-14 16:16:02 +03:00
c6011932ec add quotes buildkit-image tag info 2025-04-14 15:31:47 +03:00
b1a9067f7d delete 'v' from buildkit-image tag 2025-04-14 15:22:21 +03:00
2755b77312 fix(workflow single image): fix image path in test step 2025-04-14 15:21:12 +03:00
61993c8c67 fix(build): don't print responses 2025-04-12 22:07:48 +03:00
8831b5d4f3 fix(k8s/flannel-cni-plugin): properly set image tag 2025-04-12 22:02:53 +03:00
c9361ef016 add test for buildkit image 2025-04-10 16:50:32 +03:00
bb0eb56454 add buildkit image 2025-04-10 16:32:58 +03:00
059f378d62 Fix wf mistake 2025-03-21 17:20:30 +03:00
c0534070b3 Fix wf mistake 2025-03-21 17:15:21 +03:00
ede851f34f Add version building param for etcd 2025-03-21 16:59:51 +03:00
b1867f776f Fix wf mistake 2025-03-21 15:37:45 +03:00
686bed6efa Fix wf mistake 2025-03-21 15:23:02 +03:00
124ed4ff29 Fix wf mistake 2025-03-21 15:03:33 +03:00
a5d6c2d543 Fix wf steps order 2025-03-21 13:31:27 +03:00
ba6faf6d32 Add log-level to workflow, fix singl wf to new repo structure 2025-03-21 13:15:24 +03:00
8bd17b82bc docs: update version_template description in README.md 2025-03-21 13:08:42 +03:00
20c4e922df fix(build): remove usage of branch when it is unavailable 2025-03-21 13:08:42 +03:00
c3778f6436 feat(alt/etcd): update Dockerfile and info.yaml 2025-03-21 13:08:42 +03:00
5a22edb089 feat(build): allow version_template to be a list of strings 2025-03-21 13:08:42 +03:00
4ba29556fe feat(build): log when running external commands 2025-03-21 13:08:42 +03:00
4db1672f06 feat(build): allow querying package versions from tasks 2025-03-21 13:08:42 +03:00
24c24ddd57 feat(build): introduce logging 2025-03-21 13:08:42 +03:00
97478923d3 Add exlusion building for base image with risc arch, delete excess deps 2025-03-21 12:29:59 +03:00
a670e7847c Add exclusion branches 'c10f2', 'c10f1' for image alt/distroless-toybox 2025-03-03 16:49:39 +03:00
c24ac6f89a Place python3 package first in the list
The first package in the list is used to form the image tag based
on the package version.
2025-02-24 17:06:29 +03:00
5c47e2296d Fix typo 2025-02-23 15:14:47 +03:00
34405300aa Add kmod and ipset to kube-proxy image for IPVS mode 2025-02-10 10:57:34 +03:00
7ee8840061 Add mount package to kubelet image
This is for closer resemblance with upstream kubernetes images.
2025-02-03 12:34:16 +03:00
a36a9d974e Add package nftables to kube-proxy image
This is for closer resemblance with upstream kubernetes images.
2025-02-03 12:34:16 +03:00
8ef16f6ea7 Make symlinks to /usr/local and use them as entrypoints
This is for closer resemblance with upstream kubernetes images.
2025-02-03 12:34:16 +03:00
6668dc4d6a fix building command in workflow 2025-01-14 22:51:30 +03:00
ae109e7adf delete exclusion building of distroless-devel from workflow 2025-01-14 22:44:10 +03:00
48a422a735 cut out base images for isolated building 2025-01-14 13:01:00 +03:00
efaa4b0aab add kubevirt images 2024-12-23 15:29:30 +03:00
85 changed files with 673 additions and 133 deletions

View File

@ -3,6 +3,7 @@ on:
push:
tags:
- '*_*'
- '!*_k8s'
jobs:
build-process:
@ -14,6 +15,14 @@ jobs:
repo: ${{ env.REPO }}
buildres: ${{ steps.build-script.outcome }}
steps:
- name: Update apt
uses: actions/init-alt-env@v1
- name: Install requires
run: |
echo "apt-get install -y python3-module-tomli python3-module-jinja2 python3-module-yaml python3-module-requests podman buildah jq curl"
apt-get install -y python3-module-tomli python3-module-jinja2 python3-module-yaml python3-module-requests podman buildah jq curl
echo "apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-riscv qemu-user-static-binfmt-loongarch"
apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-riscv qemu-user-static-binfmt-loongarch
- name: Check workspace
run: |
repourl=$(echo $GU | cut -d '/' -f 3)
@ -25,23 +34,6 @@ jobs:
env:
GU: ${{ gitea.server_url }}
GR: ${{ gitea.repository }}
- name: Set repo for c10f2 (Temporary)
if: ${{ contains(github.ref_name, 'c10f2') }}
run: |
echo "event tag=${{ github.ref_name }}"
echo "10.4.0.3 update.altsp.su" >> /etc/hosts
echo "cat /etc/hosts"
cat /etc/hosts
- name: Update apt
uses: actions/init-alt-env@v1
- name: Install requires
run: |
echo "apt-get install -y python3-module-tomli python3-module-jinja2 python3-module-yaml python3-module-requests podman buildah jq curl"
apt-get install -y python3-module-tomli python3-module-jinja2 python3-module-yaml python3-module-requests podman buildah jq curl
echo "apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc qemu-user-static-binfmt-riscv qemu-user-static-binfmt-loongarch"
apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc qemu-user-static-binfmt-riscv qemu-user-static-binfmt-loongarch
- name: Check out current repo
uses: actions/checkout@v4
- name: Parse target branch and tag from events context, save to env
env:
EV: ${{ toJson(gitea.event) }}
@ -51,6 +43,24 @@ jobs:
org=$(echo $EV | jq '.ref' -r | sed 's/refs\/tags\///g' | cut -d '_' -f 2)
echo "ORG=$org" >> ${GITHUB_ENV}
echo "ORG=$org"
- name: Check out current repo
uses: actions/checkout@v4
- name: Change vendor label for c10f
if: ${{ contains(github.ref_name, 'c10f') }}
run: |
echo "sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/Dockerfile.template ||:"
sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/Dockerfile.template ||:
echo "sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/distroless.toml ||:"
sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/distroless.toml ||:
env:
ORG: ${{ env.ORG }}
- name: Set repo for c10f2 (Temporary)
if: ${{ contains(github.ref_name, 'c10f2') }}
run: |
echo "event tag=${{ github.ref_name }}"
echo "10.4.0.3 update.altsp.su" >> /etc/hosts
echo "cat /etc/hosts"
cat /etc/hosts
- name: Login podman gitea
run: |
echo "podman login ${{ env.URL }}"
@ -61,14 +71,16 @@ jobs:
- name: Run building script
id: build-script
run: |
build_args="-b $BR -o $ORG --skip-images alt/distroless-devel"
if [[ "$BR" == "sisyphus" ]]; then arches="--arches amd64 386 arm64 loong64"; else arches="--arches amd64 386 arm64"; fi
if [[ "$ORG" == "k8s" ]]; then build_args="$build_args --overwrite-organization $ORG-$BR --package-versions {\"k8s/kube-apiserver\":\"1.31\",\"k8s/kube-scheduler\":\"1.31\",\"k8s/kube-controller-manager\":\"1.31\",\"k8s/kube-proxy\":\"1.31\",\"k8s/coredns\":\"1.11.3\",\"k8s/kubelet\":\"1.31\"}"; fi
echo "build.py $build_args $arches"
#build base with riskv64 for sisyphus if it is
if [[ "$BR" == "sisyphus" && "$ORG" == "base" ]]; then echo "${{ gitea.workspace }}/build.py --log-level debug -i base/base -b $BR --latest $BR --registry $BUILD_URL"; ${{ gitea.workspace }}/build.py -i base/base -b "$BR" --latest "$BR" --registry "$BUILD_URL"; fi
build_args="-b $BR --log-level debug --latest $BR -o $ORG --registry $BUILD_URL --package-versions {\"alt/etcd\":\"3.5.15\"}"
if [[ "$BR" == "sisyphus" ]]; then arches="--arches amd64 386 arm64 loong64 --skip-images base/base"; else arches="--arches amd64 386 arm64"; fi
echo "${{ gitea.workspace }}/build.py $build_args $arches"
${{ gitea.workspace }}/build.py $build_args $arches
env:
ORG: ${{ env.ORG }}
BR: ${{ env.BRANCH }}
BUILD_URL: "gitea.basealt.ru/alt"
continue-on-error: true
- name: Send notification if build crashed
if: ${{ steps.build-script.outcome != 'success' }}

View File

@ -0,0 +1,199 @@
name: Building alt images
on:
push:
tags:
- '*'
jobs:
build-process:
runs-on: alt-sisyphus
outputs:
branch: ${{ env.BRANCH }}
image: ${{ env.IMAGE }}
url: ${{ env.URL }}
repo: ${{ env.REPO }}
buildres: ${{ steps.build-script.outcome }}
test: ${{ env.TEST }}
steps:
- name: Check workspace
run: |
repourl=$(echo $GU | cut -d '/' -f 3)
echo "URL=$repourl" >> ${GITHUB_ENV}
echo "URL=$repourl"
reponame=$(echo $GR | cut -d '/' -f 1)
echo "REPO=$reponame" >> ${GITHUB_ENV}
echo "REPO=$reponame"
env:
GU: ${{ gitea.server_url }}
GR: ${{ gitea.repository }}
- name: Set repo for c10f2 (Temporary)
if: ${{ contains(github.ref_name, 'c10f2') }}
run: |
echo "event tag=${{ github.ref_name }}"
echo "10.4.0.3 update.altsp.su" >> /etc/hosts
echo "cat /etc/hosts"
cat /etc/hosts
- name: Update apt
uses: actions/init-alt-env@v1
- name: Install requires
run: |
echo "apt-get install -y python3-module-tomli python3-module-jinja2 python3-module-yaml python3-module-requests podman buildah jq curl"
apt-get install -y python3-module-tomli python3-module-jinja2 python3-module-yaml python3-module-requests podman buildah jq curl
echo "apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc qemu-user-static-binfmt-riscv qemu-user-static-binfmt-loongarch"
apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc qemu-user-static-binfmt-riscv qemu-user-static-binfmt-loongarch
- name: Check out current repo
uses: actions/checkout@v4
- name: Login podman gitea
run: |
echo "podman login ${{ env.URL }}"
podman login --username $P_USER --password $P_PASS ${{ env.URL }}
env:
P_USER: ${{ secrets.PODMAN_USER }}
P_PASS: ${{ secrets.PODMAN_PASS }}
- name: Check files in the repository
run: |
ls -a ${{ gitea.workspace }}
- name: Parse target branch and tag from events context, save to env
env:
EV: ${{ toJson(gitea.event) }}
run: |
branch="$(echo $EV | jq '.ref' -r | sed "s|refs/tags/||g" | cut -d '_' -f 1)"
echo $EV | jq '.ref' -r | sed "s|refs/tags/|BRANCH=|g" | cut -d '_' -f 1
echo $EV | jq '.ref' -r | sed "s|refs/tags/|BRANCH=|g" | cut -d '_' -f 1 >> ${GITHUB_ENV}
rest="$(echo $EV | jq '.ref' -r | sed "s|refs/tags/|BRANCH=|g" | cut -d '_' -f 1-)"
IFS='_' read -ra parts <<< "$rest"
images=()
declare -A versions
for part in "${parts[@]}"; do
image="${part%@*}"
version="${part#*@}"
images+=("$image")
versions["$image"]="$version"
done
image_args="${images[*]}"
# Build JSON for package-versions
package_versions="{"
for i in "${!images[@]}"; do
img="${images[$i]}"
ver="${versions[$img]}"
sep=$([[ $i -lt $((${#images[@]} - 1)) ]] && echo "," || echo "")
package_versions+="\"$img\": \"$ver\"$sep"
done
package_versions+="}"
echo "IMAGES=$image_args" >> $GITEA_OUTPUT
echo "PACKAGE_VERSIONS=$package_versions" >> $GITEA_OUTPUT
- name: Change vendor label for c10f
if: ${{ contains(github.ref_name, 'c10f') }}
run: |
echo "sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/Dockerfile.template ||:"
sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/Dockerfile.template ||:
echo "sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/distroless.toml ||:"
sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/distroless.toml ||:
env:
ORG: ${{ env.ORG }}
- name: Get test for image
run: |
if test -f ${{ gitea.workspace }}/org/$IM/test; then testscript=$(cat ${{ gitea.workspace }}/org/$IM/test); else testscript=""; fi
echo "TEST=$testscript" >> ${GITHUB_ENV}
env:
IM: ${{ env.IMAGE }}
BR: ${{ env.BRANCH }}
- name: Run building script
id: build-script
run: |
${{ gitea.workspace }}/build.py \
--log-level debug \
--skip-stages push \
--branch $BRANCH \
--registry gitea.basealt.ru/alt \
--arches amd64 \
-i $IMAGES \
--package-versions "$PACKAGE_VERSIONS"
env:
BRANCH: ${{ env.BRANCH }}
IMAGES: ${{ env.IMAGES }}
PACKAGE_VERSIONS: ${{ env.PACKAGE_VERSIONS }}
continue-on-error: true
# - name: Send notification if build crashed
# if: ${{ steps.build-script.outcome != 'success' }}
# run: |
# issueid=1
# body="Building image $IM finish with some errors."
# curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s
# echo "notification about test error is sent to issue $issueid"
# env:
# T: ${{ secrets.TOKEN }}
# BR: ${{ env.BRANCH }}
# URL: ${{ gitea.server_url }}
# REPO: ${{ env.REPO }}
# IM: ${{ env.IMAGE }}
- name: Delete event tag
run: |
tagname=$(echo $EV | jq '.ref' -r | sed "s/refs\/tags\///g")
curl -X 'DELETE' "$URL/api/v1/repos/$REPO/image-forge/tags/$tagname?token=$T" -H 'accept: application/json' -s
echo "tag $tagname is deleted"
env:
T: ${{ secrets.TOKEN }}
BR: ${{ env.BRANCH }}
URL: ${{ gitea.server_url }}
REPO: ${{ env.REPO }}
EV: ${{ toJson(gitea.event) }}
test-process:
needs: build-process
if: ${{ needs.build-process.outputs.buildres == 'success' }}
runs-on: alt-sisyphus
steps:
- name: Update apt
uses: https://gitea.basealt.ru/actions/init-alt-env@v1
- name: Install requires
run: |
echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah curl"
apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah curl
- name: Run test
id: test-script
if: ${{ needs.build-process.outputs.test != '' }}
continue-on-error: true
run: |
imname=$(echo "$IM" | cut -d "/" -f2)
if [[ "$IM" == *"k8s"* ]]; then echo "skip tests for k8s images"; else podman run --rm --entrypoint="/bin/sh" $URL/$REPO/$BR/$imname:latest -c "$TEST"; fi
env:
IM: ${{ needs.build-process.outputs.image }}
BR: ${{ needs.build-process.outputs.branch }}
URL: ${{ needs.build-process.outputs.url }}
REPO: ${{ needs.build-process.outputs.repo }}
TEST: ${{ needs.build-process.outputs.test }}
- name: Run special test
id: special-test
if: ${{ needs.build-process.outputs.test == '' }}
continue-on-error: true
run: |
imname=$(echo "$IM" | cut -d "/" -f2)
if [[ $IM = 'alt/distroless-true' ]]; then podman run --rm $URL/$REPO/$BR/$imname:latest true; fi
if [[ $IM = 'alt/distroless-gotop' ]]; then podman run --rm $URL/$REPO/$BR/$imname:latest --version; fi
env:
IM: ${{ needs.build-process.outputs.image }}
BR: ${{ needs.build-process.outputs.branch }}
URL: ${{ needs.build-process.outputs.url }}
REPO: ${{ needs.build-process.outputs.repo }}
- name: Send notification if test crashed
if: ${{ steps.test-script.outcome == 'failure' || steps.special-test.outcome == 'failure' }}
run: |
issueid=1
errors=$(cat errors.log)
body="Testing image $IM finish with some errors."
curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s
echo "notification about test error is sent to issue $issueid"
env:
T: ${{ secrets.TOKEN }}
BR: ${{ needs.build-process.outputs.branch }}
URL: ${{ gitea.server_url }}
REPO: ${{ needs.build-process.outputs.repo }}
IM: ${{ needs.build-process.outputs.image }}

View File

@ -21,7 +21,7 @@ jobs:
echo "URL=$repourl" >> ${GITHUB_ENV}
echo "URL=$repourl"
reponame=$(echo $GR | cut -d '/' -f 1)
echo "REPO=$reponame" >> ${GITHUB_ENV}
echo "REPO=$reponame" >> ${GITHUB_ENV}
echo "REPO=$reponame"
env:
GU: ${{ gitea.server_url }}
@ -29,7 +29,7 @@ jobs:
- name: Set repo for c10f2 (Temporary)
if: ${{ contains(github.ref_name, 'c10f2') }}
run: |
echo "event tag=${{ github.ref_name }}"
echo "event tag=${{ github.ref_name }}"
echo "10.4.0.3 update.altsp.su" >> /etc/hosts
echo "cat /etc/hosts"
cat /etc/hosts
@ -46,14 +46,14 @@ jobs:
- name: Login podman gitea
run: |
echo "podman login ${{ env.URL }}"
podman login --username $P_USER --password $P_PASS ${{ env.URL }}
podman login --username $P_USER --password $P_PASS ${{ env.URL }}
env:
P_USER: ${{ secrets.PODMAN_USER }}
P_PASS: ${{ secrets.PODMAN_PASS }}
- name: Check files in the repository
run: |
ls -a ${{ gitea.workspace }}
- name: Parse target branch and tag from events context, save to env
- name: Parse target branch and tag from events context, save to env
env:
EV: ${{ toJson(gitea.event) }}
run: |
@ -68,6 +68,15 @@ jobs:
ver=$(echo $EV | jq '.ref' -r | sed 's/refs\/tags\///g' | cut -d '_' -f 3)
echo "VER=$ver" >> ${GITHUB_ENV}
echo "VER=$ver"
- name: Change vendor label for c10f
if: ${{ contains(github.ref_name, 'c10f') }}
run: |
echo "sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/Dockerfile.template ||:"
sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/Dockerfile.template ||:
echo "sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/distroless.toml ||:"
sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/distroless.toml ||:
env:
ORG: ${{ env.ORG }}
- name: Get test for image
run: |
if test -f ${{ gitea.workspace }}/org/$IM/test; then testscript=$(cat ${{ gitea.workspace }}/org/$IM/test); else testscript=""; fi
@ -78,10 +87,10 @@ jobs:
- name: Run building script
id: build-script
run: |
if [[ "$IM" == *"k8s"* ]]; then k8sarg="--overwrite-organization $ORG-$BR --package-versions {\"$IM\":\"$VER\"}"; else k8sarg=""; fi
if [[ "$IM" == *"k8s"* ]]; then k8sarg="--package-versions {\"$IM\":\"$VER\"}"; else k8sarg=""; fi
if [[ "$BR" == "sisyphus" ]]; then arches="--arches amd64 386 arm64 loong64"; else arches="--arches amd64 386 arm64"; fi
echo "build.py -i $IM -b $BR $arches $k8sarg"
${{ gitea.workspace }}/build.py -i $IM -b $BR $arches $k8sarg
${{ gitea.workspace }}/build.py -i $IM -b $BR $arches --latest $BR --log-level debug --registry gitea.basealt.ru/alt $k8sarg
env:
IM: ${{ env.IMAGE }}
VER: ${{ env.VER }}
@ -94,7 +103,7 @@ jobs:
issueid=1
body="Building image $IM finish with some errors."
curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s
echo "notification about test error is sent to issue $issueid"
echo "notification about test error is sent to issue $issueid"
env:
T: ${{ secrets.TOKEN }}
BR: ${{ env.BRANCH }}
@ -122,17 +131,18 @@ jobs:
- name: Install requires
run: |
echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah curl"
apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah curl
apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah curl
- name: Run test
id: test-script
if: ${{ needs.build-process.outputs.test != '' }}
continue-on-error: true
run: |
if [[ "$IM" == *"k8s"* ]]; then echo "skip tests for k8s images"; else podman run --rm --entrypoint="/bin/sh" $URL/$IM:$BR -c "$TEST"; fi
imname=$(echo "$IM" | cut -d "/" -f2)
if [[ "$IM" == *"k8s"* ]]; then echo "skip tests for k8s images"; else podman run --rm --entrypoint="/bin/sh" $URL/$REPO/$BR/$imname:latest -c "$TEST"; fi
env:
IM: ${{ needs.build-process.outputs.image }}
IM: ${{ needs.build-process.outputs.image }}
BR: ${{ needs.build-process.outputs.branch }}
URL: ${{ needs.build-process.outputs.url }}
URL: ${{ needs.build-process.outputs.url }}
REPO: ${{ needs.build-process.outputs.repo }}
TEST: ${{ needs.build-process.outputs.test }}
- name: Run special test
@ -140,8 +150,9 @@ jobs:
if: ${{ needs.build-process.outputs.test == '' }}
continue-on-error: true
run: |
if [[ $IM = 'alt/distroless-true' ]]; then podman run --rm $URL/$IM:$BR true; fi
if [[ $IM = 'alt/distroless-gotop' ]]; then podman run --rm $URL/$IM:$BR --version; fi
imname=$(echo "$IM" | cut -d "/" -f2)
if [[ $IM = 'alt/distroless-true' ]]; then podman run --rm $URL/$REPO/$BR/$imname:latest true; fi
if [[ $IM = 'alt/distroless-gotop' ]]; then podman run --rm $URL/$REPO/$BR/$imname:latest --version; fi
env:
IM: ${{ needs.build-process.outputs.image }}
BR: ${{ needs.build-process.outputs.branch }}
@ -154,7 +165,7 @@ jobs:
errors=$(cat errors.log)
body="Testing image $IM finish with some errors."
curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s
echo "notification about test error is sent to issue $issueid"
echo "notification about test error is sent to issue $issueid"
env:
T: ${{ secrets.TOKEN }}
BR: ${{ needs.build-process.outputs.branch }}

View File

@ -38,10 +38,12 @@ If you push to the users repository, then organiztion is your username.
If contains jinja2 template syntax, `--package-version`
CLI option must be specified.
- `version_template`: **string** (OPTIONAL)
- `version_template`: **string** or **list of strings** (OPTIONAL)
template to apply when construction the tag,
`version` string variable is available in the template
Template to apply when construction the tag,
`version` string variable is available in the template.
If `version_template` is a list of strings, then the image wiil be tagged
with every string in the list.
### examples
@ -84,6 +86,22 @@ source_packages:
./build.py -i k8s/pause
```
#### org/k8s/etcd
```yaml
is_versioned: true
version_template:
- "v{{ version }}"
- "{{ version }}"
- "{{ version }}-0"
source_packages:
- etcd-for-kubernetes{{ version }}
```
```bash
./build.py -b sisyphus -i k8s/etcd --package-version '{"k8s/etcd": "1.32"}'
```
## Dependencies
On x86_64 machine using p10 branch you need:
- `python3-module-tomli`

133
build.py
View File

@ -3,6 +3,7 @@
import argparse
import functools
import json
import logging
import re
import subprocess
import textwrap
@ -10,23 +11,32 @@ from datetime import datetime
from dataclasses import dataclass
from graphlib import TopologicalSorter
from pathlib import Path
from typing import Optional, Union
import requests
import tomli
import yaml
from jinja2 import Template
from jinja2 import Environment, BaseLoader
logger = logging.getLogger(__name__)
ORG_DIR = Path("org")
PKG_VERSIONS: dict | None = None
PKG_VERSIONS: Optional[dict] = None
# Jinja2 custom fail filter
def fail(message: str):
raise ValueError(message)
JINJA_ENV = Environment(loader=BaseLoader())
JINJA_ENV.filters['fail'] = fail
@dataclass
class Image:
canonical_name: str
is_versioned: bool | None
verion_template: str | None
source_packages: list[str] | None
is_versioned: Optional[bool]
version_template: Union[list[str], str, None]
source_packages: Optional[list[str]]
def __init__(self, canonical_name: str):
self.canonical_name = canonical_name
@ -91,12 +101,10 @@ def api_get_source_package_version(branch: str, package_name: str) -> str:
params = {"branch": branch, "name": package_name}
response = requests.get(api_url, params)
if response.status_code != 200:
print(response)
api_url = "https://rdb.altlinux.org/api/site/package_versions"
params = {"arch": "x86_64", "package_type": "source", "name": package_name}
response = requests.get(api_url, params)
if response.status_code != 200:
print(response)
raise RuntimeError(
f"failed to retrieve source package version: source package {package_name!r}, branch {branch!r} "
)
@ -114,15 +122,33 @@ def api_get_source_package_version(branch: str, package_name: str) -> str:
return result["versions"][0]["version"]
def api_get_source_package_version_from_task(task_id: str, package_name: str):
api_url = f"https://rdb.altlinux.org/api/task/packages/{task_id}"
response = requests.get(api_url)
if response.status_code != 200:
raise RuntimeError(
f"failed to retrieve source package version from task: source package {package_name!r}, task_id {task_id}"
)
result = response.json()
for subtask in result["subtasks"]:
if subtask["source"]["name"] == package_name:
return subtask["source"]["version"]
raise RuntimeError(
f"failed to retrieve source package version from task: source package {package_name!r}, task_id {task_id}"
)
class Tags:
def __init__(self, tags_file: str | None, latest: str):
def __init__(self, tags_file: Optional[str], latest: str):
if tags_file is None:
self._tags = None
else:
self._tags = tomli.loads(Path(tags_file).read_text())
self._latest = latest
def tags(self, branch: str, image: Image):
def tags(self, branch: str, image: Image, tasks: Optional[Tasks] = None):
if self._tags is None:
if image.is_versioned is None:
tags = [branch]
@ -132,10 +158,7 @@ class Tags:
elif image.is_versioned and image.source_packages:
package_name = image.source_packages[0]
if re.search("{%.*%}", package_name):
package_name = Template(package_name).render(branch=branch).strip()
print(f"{package_name=}")
context_version = ""
if re.search("{{.*}}", package_name):
if PKG_VERSIONS is None:
raise RuntimeError(
@ -152,23 +175,62 @@ class Tags:
f"invalid version for image {image.canonical_name!r}: {PKG_VERSIONS[image.canonical_name]!r}"
)
package_name = Template(package_name).render(
version=PKG_VERSIONS[image.canonical_name]
)
version = api_get_source_package_version(branch, package_name)
context_version = PKG_VERSIONS[image.canonical_name]
if re.search("{%.*%}", package_name) or re.search("{{.*}}", package_name):
package_name = JINJA_ENV.from_string(package_name).render(
branch=branch,
version=context_version,
)
if tasks is not None:
task_ids = tasks.get(branch, image)
else:
task_ids = []
if task_ids:
logger.info(
"getting %s package version from task %s",
package_name,
task_ids[0],
)
version = api_get_source_package_version_from_task(
task_ids[0], package_name
)
else:
logger.info(
"getting %s package version from repo %s",
package_name,
branch,
)
version = api_get_source_package_version(branch, package_name)
tags = []
if image.version_template is not None:
version = (
Template(image.version_template).render(version=version).strip()
)
if isinstance(image.version_template, str):
version_tag = (
JINJA_ENV.from_string(image.version_template).render(version=version).strip()
)
tags.append(version_tag)
elif isinstance(image.version_template, list):
for v in image.version_template:
version_tag = (
JINJA_ENV.from_string(v).render(version=version).strip()
)
tags.append(version_tag)
else:
raise RuntimeError(f"expected type for version_template: 'str' or 'list[str]', got '{type(image.version_template)}' for image {image}")
else:
tags.append(version)
tags = [version]
tags.append("latest")
else:
version = datetime.now().strftime('%Y%m%d')
if image.version_template is not None:
if not isinstance(image.version_template, str):
raise RuntimeError(f"expected type for version_template: 'str', got '{type(image.version_template)}' for image {image}")
version = (
Template(image.version_template).render(version=version).strip()
JINJA_ENV.from_string(image.version_template).render(version=version).strip()
)
tags = [version]
tags.append("latest")
@ -349,12 +411,13 @@ class DockerBuilder:
else:
registry = ""
alt_image = "alt"
rendered = Template(template).render(
rendered = JINJA_ENV.from_string(template).render(
alt_image=alt_image,
branch=self.branch,
install_packages=install_packages,
organization=organization,
registry=registry,
pkg_versions=PKG_VERSIONS,
**kwargs,
)
@ -455,6 +518,8 @@ class DockerBuilder:
pre_cmd = ["echo"]
else:
pre_cmd = []
logger.debug("run: %s", pre_cmd + cmd)
subprocess.run(pre_cmd + cmd, *args, **kwargs)
def distroless_build(self, image: Image, arches):
@ -601,7 +666,7 @@ class DockerBuilder:
build_arches = set(arches) - set(
self.images_info.skip_arches(image.canonical_name)
)
tags = self.tags.tags(self.branch, image)
tags = self.tags.tags(self.branch, image, self.tasks)
manifest = self.render_full_tag(image, tags[0])
msg = "Building image {} for {} arches".format(
@ -652,7 +717,7 @@ class DockerBuilder:
self.images_info.skip_arches(image.canonical_name)
)
platforms = ",".join([f"linux/{a}" for a in build_arches])
tags = self.tags.tags(self.branch, image)
tags = self.tags.tags(self.branch, image, self.tasks)
manifest = self.render_full_tag(image, tags[0])
msg = "Building image {} for {} arches".format(
@ -712,7 +777,7 @@ class DockerBuilder:
if self.images_info.skip_branch(image.canonical_name, self.branch):
return
tags = self.tags.tags(self.branch, image)
tags = self.tags.tags(self.branch, image, self.tasks)
manifests = [self.render_full_tag(image, t) for t in tags]
for manifest in manifests:
@ -765,6 +830,8 @@ def parse_args():
images = [f"{o.name}/{i.name}" for o in organizations for i in o.iterdir()]
organizations = [o.name for o in organizations]
log_levels = ["debug", "info", "warning", "error", "critical"]
parser = argparse.ArgumentParser(
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
)
@ -875,6 +942,12 @@ def parse_args():
type=json.loads,
help="json string where key is image name, value is the package version",
)
parser.add_argument(
"--log-level",
default="warning",
choices=log_levels,
help="log messages above specified level",
)
args = parser.parse_args()
args.stages = set(args.stages) - set(args.skip_stages)
@ -890,6 +963,14 @@ def main():
args = parse_args()
PKG_VERSIONS = args.package_versions
numeric_level = getattr(logging, args.log_level.upper(), logging.WARNING)
logging.basicConfig(
level=numeric_level, format="%(asctime)s - %(levelname)s\t- %(message)s"
)
logger.info("PKG_VERSIONS=%s", PKG_VERSIONS)
arches = args.arches
images_info = ImagesInfo()
tags = Tags(args.tags, args.latest)

View File

@ -1,11 +1,14 @@
["alt/buildpack-deps"]
skip-branches = [ "p9" ]
["alt/distroless-toybox"]
skip-branches = [ "p10" ]
skip-branches = [ "p10", "c10f2", "c10f1" ]
["base/distroless-toybox"]
skip-branches = [ "p10", "c10f2", "c10f1" ]
["alt/openjdk21"]
skip-arches = [ "386" ]
["alt/ansible"]
skip-branches = [ "c10f2", "c10f1", "p10" ]
skip-branches = [ "c10f2", "c10f1", "p10" ]
["alt/buildkit"]
skip-branches = [ "c10f1", "p10" ]

View File

@ -0,0 +1,16 @@
FROM {{ registry }}{{ branch }}/base:latest
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="buildkit"
LABEL org.opencontainers.image.description="Concurrent, cache-efficient, and Dockerfile-agnostic builder toolkit"
LABEL org.opencontainers.image.source="https://github.com/moby/buildkit"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages(
"ca-certificates",
"buildkit"
) }}
ENTRYPOINT ["/usr/bin/buildkitd"]

View File

@ -2,5 +2,5 @@
is_versioned: true
version_template: "{{ version }}"
source_packages:
- etcd
- buildkit
...

1
org/alt/buildkit/test Normal file
View File

@ -0,0 +1 @@
buildkitd --version

View File

@ -1,15 +0,0 @@
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="etcd"
LABEL org.opencontainers.image.description="Distributed reliable key-value store for the most critical data of a distributed system"
LABEL org.opencontainers.image.source="https://github.com/etcd-io/etcd"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("etcd") }}
VOLUME /data
ENTRYPOINT ["/usr/sbin/etcd", "--data-dir", "/data"]

View File

@ -1,13 +0,0 @@
dockerfiles-alt-etcd
=========================
ALT dockerfile for etcd.
Copy Dockerfile somewhere and build the image:
`$ docker build --rm -t <username>/etcd.`
And launch the etcd container:
`docker run -d -v <etcd data dir>:/data <username>/etcd`
If etcdclt watnted it could be run via:
`docker run --entrypoint etcdctl <username>/etcd`

View File

@ -1 +0,0 @@
etcdctl version

View File

@ -15,7 +15,7 @@ RUN cd /etc/nginx/sites-enabled.d && ln -s ../sites-available.d/default.conf .
RUN ln -sf /dev/stdout /var/log/nginx/access.log
RUN ln -sf /dev/stderr /var/log/nginx/error.log
RUN sed -Ei 's/^([[:space:]]*listen[[:space:]]+)localhost(:80)/\10.0.0.0\2/' \
RUN sed -Ei 's/^([[:space:]]*listen[[:space:]]+)(localhost|127.0.0.1)(:80)/\10.0.0.0\3/' \
/etc/nginx/sites-available.d/default.conf
EXPOSE 80

View File

@ -3,9 +3,9 @@ is_versioned: true
version_template: "{{ version }}"
source_packages:
- >
{% if branch in [ "p10", "c10f1", "c10f2"] %}
{% raw %}php8.2{% endraw %}
{% else %}
{%- if branch in [ "p10", "c10f1", "c10f2"] -%}
php8.2
{%- else -%}
php8.3
{% endif %}
{%- endif -%}
...

View File

@ -2,8 +2,8 @@
is_versioned: true
version_template: "{{ version }}"
source_packages:
- python3
- python3-module-setuptools
- python3-dev
- python3-module-pip
- gcc-defaults
...

View File

@ -2,7 +2,7 @@
is_versioned: true
version_template: "{{ version }}"
source_packages:
- python
- python-module-setuptools
- python-dev
- gcc-defaults
...

View File

@ -3,9 +3,9 @@ is_versioned: true
version_template: "{{ version }}"
source_packages:
- >
{% if branch in ["p10", "c10f2", "c10f1"] %}
{% raw %}ruby{% endraw %}
{% else %}
{%- if branch in ["p10", "c10f2", "c10f1"] -%}
ruby
{%- else -%}
gem-irb
{% endif %}
{%- endif -%}
...

View File

@ -8,7 +8,16 @@ LABEL org.opencontainers.image.source="https://github.com/coredns/coredns"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{% if branch in ["sisyphus", "p11", "c10f2"] %}
{% if pkg_versions and "k8s/coredns" in pkg_versions %}
{% set version_parts = pkg_versions["k8s/coredns"].split('.') | length %}
{% else %}
{% set version_parts = 0 %}
{% endif %}
{% if branch in ["sisyphus"] and version_parts == 2 %}
ARG PKG_VERSION
{{ install_packages("coredns-for-kubernetes${PKG_VERSION}") }}
{% elif branch in ["sisyphus", "p11", "c10f2"] and version_parts == 3 %}
ARG PKG_VERSION
{{ install_packages("coredns${PKG_VERSION}") }}

View File

@ -3,9 +3,13 @@ is_versioned: true
version_template: v{{ version }}
source_packages:
- >
{% if branch in ["sisyphus", "p11", "c10f2"] %}
{% raw %}coredns{{ version }}{% endraw %}
{% else %}
{%- set version_parts = version.split('.') -%}
{%- set version_major = version_parts[1] | int -%}
{%- if branch in ["sisyphus"] and version_parts | length == 2 and version_major >= 33 -%}
coredns-for-kubernetes{{ version }}
{%- elif branch in ["sisyphus", "p11", "c10f2"] -%}
coredns{{ version }}
{%- else -%}
coredns
{% endif %}
{%- endif -%}
...

View File

@ -8,7 +8,13 @@ LABEL org.opencontainers.image.source="https://github.com/etcd-io/etcd"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("etcd") }}
ARG PKG_VERSION
{{ install_packages("etcd-for-kubernetes${PKG_VERSION}") }}
RUN ln -s /usr/sbin/etcd /usr/local/bin/etcd && ln -s /usr/bin/etcdctl /usr/local/bin/etcdctl
EXPOSE 2379 2380
VOLUME /data

19
org/k8s/etcd/README.md Normal file
View File

@ -0,0 +1,19 @@
dockerfiles-alt-etcd
=========================
ALT dockerfile for etcd.
Copy Dockerfile somewhere and build the image:
```console
$ podman build --rm -t <username>/etcd.
```
And launch the etcd container:
```console
$ podman run -d -v <etcd data dir>:/data <username>/etcd
```
If etcdclt is wanted, it could be run via:
```console
$ podman run --entrypoint etcdctl <username>/etcd
```

View File

@ -1,12 +1,9 @@
---
is_versioned: true
version_template: >
{% set version_patch = version.split(".")[2] | int %}
{% if version_patch < 16 %}
{{ version }}-0
{% else %}
v{{ version }}
{% endif %}
version_template:
- "v{{ version }}"
- "{{ version }}"
- "{{ version }}-0"
source_packages:
- etcd
- etcd-for-kubernetes{{ version }}
...

View File

@ -1 +1 @@
etcd --version
etcd --version && etcdctl --version

View File

@ -1,6 +1,18 @@
---
is_versioned: true
version_template: v{{ version.rsplit('.', 1) | first }}-flannel{{ version.rsplit('.', 1) | last }}
version_template: >-
{%- set version_parts = version.split('.') -%}
{%- if version_parts | length == 3 -%}
{%- if version == "1.4.0" -%}
v{{ version }}-flannel1
{%- else -%}
v{{ version }}
{%- endif %}
{%- elif version_parts | length == 4 -%}
v{{ version.rsplit('.', 1) | first }}-flannel{{ version.rsplit('.', 1) | last }}
{%- else -%}
{{ "Invalid version format: must have 3 or 4 parts" | fail }}
{%- endif %}
source_packages:
- cni-plugin-flannel
...

View File

@ -6,7 +6,9 @@ ARG PKG_VERSION
{{ install_packages("kubernetes${PKG_VERSION}-master") }}
ENTRYPOINT ["/usr/bin/kube-apiserver"]
RUN ln -s /usr/bin/kube-apiserver /usr/local/bin/kube-apiserver
ENTRYPOINT ["/usr/local/bin/kube-apiserver"]
LABEL org.opencontainers.image.title="kube-apiserver"
LABEL org.opencontainers.image.description="The Kubernetes API server validates and configures data for the api objects which include pods, services, replicationcontrollers, and others."

View File

@ -6,7 +6,9 @@ ARG PKG_VERSION
{{ install_packages("kubernetes${PKG_VERSION}-master") }}
ENTRYPOINT ["/usr/bin/kube-controller-manager"]
RUN ln -s /usr/bin/kube-controller-manager /usr/local/bin/kube-controller-manager
ENTRYPOINT ["/usr/local/bin/kube-controller-manager"]
LABEL org.opencontainers.image.title="kube-controller-manager"
LABEL org.opencontainers.image.description="The Kubernetes controller manager is a daemon that embeds the core control loops shipped with Kubernetes."

View File

@ -4,11 +4,11 @@ MAINTAINER alt-cloud
ARG PKG_VERSION
{{ install_packages("kubernetes${PKG_VERSION}-node") }}
{{ install_packages("kmod", "ipset", "nftables", "kubernetes${PKG_VERSION}-node") }}
RUN ln -s /usr/bin/kube-proxy /usr/local/bin/kube-proxy
ENTRYPOINT ["/usr/bin/kube-proxy"]
ENTRYPOINT ["/usr/local/bin/kube-proxy"]
LABEL org.opencontainers.image.title="kube-proxy"
LABEL org.opencontainers.image.description="The Kubernetes network proxy runs on each node."

View File

@ -6,7 +6,9 @@ ARG PKG_VERSION
{{ install_packages("kubernetes${PKG_VERSION}-master") }}
ENTRYPOINT ["/usr/bin/kube-scheduler"]
RUN ln -s /usr/bin/kube-scheduler /usr/local/bin/kube-scheduler
ENTRYPOINT ["/usr/local/bin/kube-scheduler"]
LABEL org.opencontainers.image.title="kube-scheduler"
LABEL org.opencontainers.image.description="The Kubernetes scheduler is a control plane process which assigns Pods to Nodes."

View File

@ -4,11 +4,11 @@ MAINTAINER alt-cloud
ARG PKG_VERSION
{{ install_packages("ca-certificates", "ethtool", "socat", "kubernetes${PKG_VERSION}-kubelet") }}
{{ install_packages("ca-certificates", "ethtool", "socat", "mount", "kubernetes${PKG_VERSION}-kubelet") }}
RUN ln -s /usr/bin/kubelet /usr/local/bin/kubelet
ENTRYPOINT ["/usr/bin/kubelet"]
ENTRYPOINT ["/usr/local/bin/kubelet"]
LABEL org.opencontainers.image.title="kubelet" \
org.opencontainers.image.description="An agent that runs on each node in the cluster. It makes sure that containers are running in a Pod." \

View File

@ -0,0 +1,16 @@
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="virt-api"
LABEL org.opencontainers.image.description="Kubevirt API server"
LABEL org.opencontainers.image.source="https://github.com/kubevirt/kubevirt"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("kubevirt-virt-api") }}
RUN useradd -m -d /home/virt-api -u 10001 -s /bin/bash -c "virt-api user" virt-api
USER 10001
ENTRYPOINT ["/usr/bin/virt-api"]

View File

@ -0,0 +1,6 @@
---
is_versioned: true
version_template: "{{ version }}"
source_packages:
- kubevirt
...

View File

@ -0,0 +1,16 @@
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="virt-controller"
LABEL org.opencontainers.image.description="Controller for kubevirt"
LABEL org.opencontainers.image.source="https://github.com/kubevirt/kubevirt"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("kubevirt-virt-controller") }}
RUN useradd -m -d /home/virt-controller -u 10001 -s /bin/bash -c "virt-controller user" virt-controller
USER 10001
ENTRYPOINT ["/usr/bin/virt-controller"]

View File

@ -0,0 +1,6 @@
---
is_versioned: true
version_template: "{{ version }}"
source_packages:
- kubevirt
...

View File

@ -0,0 +1,16 @@
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="virt-exportproxy"
LABEL org.opencontainers.image.description="Export proxy for kubevirt"
LABEL org.opencontainers.image.source="https://github.com/kubevirt/kubevirt"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("kubevirt-virt-exportproxy") }}
RUN useradd -m -d /home/virt-exportproxy -u 10001 -s /bin/bash -c "virt-exportproxy user" virt-exportproxy
USER 10001
ENTRYPOINT ["/usr/bin/virt-exportproxy"]

View File

@ -0,0 +1,6 @@
---
is_versioned: true
version_template: "{{ version }}"
source_packages:
- kubevirt
...

View File

@ -0,0 +1,16 @@
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="virt-exportserver"
LABEL org.ope:wncontainersncontainers.image.description="Export server for kubevirt"
LABEL org.opencontainers.image.source="https://github.com/kubevirt/kubevirt"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("kubevirt-virt-exportserver") }}
RUN useradd -m -d /home/virt-exportserver -u 10001 -s /bin/bash -c "virt-exportserver user" virt-exportserver
USER 10001
ENTRYPOINT ["/usr/bin/virt-exportserver"]

View File

@ -0,0 +1,6 @@
---
is_versioned: true
version_template: "{{ version }}"
source_packages:
- kubevirt
...

View File

@ -0,0 +1,21 @@
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="virt-handler"
LABEL org.opencontainers.image.description="Handler component for kubevirt"
LABEL org.opencontainers.image.source="https://github.com/kubevirt/kubevirt"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
RUN groupadd -f -g 107 qemu > /dev/null 2>&1 ||:
RUN useradd -g qemu -m -d /home/qemu -s /bin/bash -c "qemu user" -u 107 qemu > /dev/null 2>&1 ||:
{{ install_packages(
"kubevirt-virt-handler",
"kubevirt-container-disk"
) }}
RUN cp -f /usr/share/kube-virt/virt-handler/nsswitch.conf /etc/ && cp -f /usr/share/kube-virt/virt-handler/virt_launcher.cil /
ENTRYPOINT ["/usr/bin/virt-handle"]

View File

@ -0,0 +1,6 @@
---
is_versioned: true
version_template: "{{ version }}"
source_packages:
- kubevirt
...

View File

@ -0,0 +1,30 @@
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="virt-launcher"
LABEL org.opencontainers.image.description="Launcher component for kubevirt"
LABEL org.opencontainers.image.source="https://github.com/kubevirt/kubevirt"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
RUN groupadd -f -g 107 qemu > /dev/null 2>&1 ||:
RUN useradd -g qemu -m -d /home/qemu -s /bin/bash -c "qemu user" -u 107 qemu > /dev/null 2>&1 ||:
{{ install_packages(
"kubevirt-virt-launcher",
"kubevirt-container-disk"
) }}
ENV DISPLAY=":0.0"
RUN export DISPLAY=":0.0"
RUN cp -f /usr/share/kube-virt/virt-launcher/virtqemud.conf /etc/libvirt/virtqemud.conf && cp -f /usr/share/kube-virt/virt-launcher/qemu.conf /etc/libvirt/qemu.conf
RUN VIRTIOFSD=$(rpm --eval '%{_libexecdir}')/virtiofsd; [ -d ${VIRTIOFSD} ] && VIRTIOFSD=${VIRTIOFSD}/virtiofsd; [ -f /usr/libexec/virtiofsd ] || (mkdir -p /usr/libexec && ln -svrt /usr/libexec ${VIRTIOFSD})
RUN setcap 'cap_net_bind_service=+ep' /usr/bin/virt-launcher && setcap 'cap_net_bind_service=+ep' /usr/bin/virt-launcher-monitor && setcap 'cap_net_bind_service=+ep' /usr/bin/qemu-system-$(uname -m) && chmod 0755 /etc/libvirt
RUN cd /var && rm -rf run && ln -s ../run .
ENTRYPOINT ["/usr/bin/virt-launcher-monitor"]

View File

@ -0,0 +1,6 @@
---
is_versioned: true
version_template: "{{ version }}"
source_packages:
- kubevirt
...

View File

@ -0,0 +1,18 @@
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="virt-operator"
LABEL org.opencontainers.image.description="Operator component for kubevirt"
LABEL org.opencontainers.image.source="https://github.com/kubevirt/kubevirt"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("kubevirt-virt-operator") }}
EXPOSE 8443 8444
RUN useradd -m -d /home/virt-operator -u 10001 -s /bin/bash -c "virt-operator user" virt-operator
USER 10001
ENTRYPOINT ["/usr/bin/virt-operator"]

View File

@ -0,0 +1,6 @@
---
is_versioned: true
version_template: "{{ version }}"
source_packages:
- kubevirt
...