Compare commits

...

42 Commits

Author SHA1 Message Date
ed01a19d17 aklsjdfasdj
alksdfjlaksj
2025-01-13 15:38:09 +03:00
6e6d876b83 add/fix description to some images 2024-12-16 15:35:24 +03:00
ff20da92a8 refactor test script 2024-12-16 15:35:10 +03:00
78daf7d9bb add second search of packages version, if package is older than branch 2024-12-16 15:35:10 +03:00
cb5f3ec98f go to new struct in docker templates and build script 2024-12-16 15:35:10 +03:00
3cb1114358 add info for new repo struct to alt org images 2024-12-16 15:35:10 +03:00
faaa41da4d replace CMD with ENTRYPOINT in pause image 2024-12-10 16:40:43 +03:00
ea8aa8f897 Обновить images-info.toml 2024-11-13 12:10:38 +03:00
05cf05c29d add distroless-toybox image 2024-11-13 12:07:24 +03:00
fca809825f Обновить images-info.toml 2024-11-12 10:49:01 +03:00
48c571ed65 add scripts dependence to README.md 2024-11-11 19:07:17 +03:00
50e125d59d run all wf wf with alt-sisyphus 2024-11-11 19:07:05 +03:00
4da3ba20e1 fix building errors 2024-11-11 18:29:43 +03:00
abc15fee40 add kubelet Dockerfile.template 2024-11-11 18:06:20 +03:00
e575a1f23c Обновить .gitea/workflows/wf_single.yaml 2024-11-11 18:04:27 +03:00
a1571acc55 add faile-builded images to skip-list 2024-11-11 17:47:43 +03:00
34bdff6755 fix run new build process 2024-11-11 17:32:27 +03:00
a34788f701 fix run new build process 2024-11-11 17:12:15 +03:00
10eee3896f add new python modules to workflows 2024-11-11 16:37:11 +03:00
c947762e9e fix workflow commands quotes bug 2024-11-11 16:28:01 +03:00
f772e861ef add new argument to run building k8s 2024-11-11 15:54:36 +03:00
3b99b6eed2 remove unused variables 2024-11-11 13:18:24 +03:00
4ea046dcf8 define ARG only if needed, allow jinja2 control flow in package names 2024-11-11 13:18:24 +03:00
7551928508 make PKG_VERSION into a dictionary of PKG_VERSIONS 2024-11-11 13:18:24 +03:00
dbe4a3c590 add info.yaml files for k8s images 2024-11-11 13:18:24 +03:00
7e8573d319 fix installed package for kubernetes images 2024-11-11 13:18:24 +03:00
78b55a0422 strip whitespace from rendered tag 2024-11-11 13:18:24 +03:00
4e076b90fb add templating for tag and package name in info.yaml 2024-11-11 13:18:24 +03:00
5108c6c04c try automatic package version detection 2024-11-11 13:18:24 +03:00
b046b4ec48 fix arch name according to https://pkg.go.dev/internal/platform 2024-11-08 15:38:37 +03:00
6cd944822f fix arches for podman building according to https://pkg.go.dev/internal/platform 2024-11-08 14:39:13 +03:00
61dea7bebf update images info 2024-11-07 11:41:25 +03:00
99a96cc7b6 revert last commit 2024-11-06 11:36:51 +03:00
3772d01634 test right ftp to get loongarch repo 2024-11-06 11:24:37 +03:00
1b5a3dd153 fix previos commits 2024-11-05 18:28:47 +03:00
8f862fcfc3 fix add repo setting for loongarch64 to workflows 2024-11-05 18:04:50 +03:00
4b23b69665 add repo setting for loongarch64 to workflows 2024-11-05 17:39:55 +03:00
3c611ed452 add qemu packages for new arches to workflows 2024-11-05 16:54:11 +03:00
3dc76a8533 add arches setting to workflows on building step 2024-11-05 16:45:26 +03:00
9a57a5ccff add riscv64 to arches 2024-11-05 16:37:59 +03:00
84f06f5ecb add loongarch64 to arches 2024-11-05 16:19:15 +03:00
d095e0832e fix: move LABEL commands to the end of Dockerfile.template
Since all the commands except ENTRYPOINT in cert-manager and kubernetes
Dockerfiles are the same, we can utilize the cached layers when building
images in batch, but LABEL commands prevented it from happening, because
labels are different for each image. Thus the cache is invalidated.

By moving LABELs after the common commands we allow cached layers
to be reused for every image, thus speeding up the build process.
2024-10-23 12:42:59 +03:00
114 changed files with 907 additions and 443 deletions

View File

@ -6,41 +6,46 @@
#$4 - ${{ needs.build-process.outputs.repo }}
#$5 - ${{ gitea.workspace }}
branch=${1:-"sisyphus"}
org=${2:-"alt"}
url=${3:-"gitea.basealt.ru"}
repo=${4:-"alt"}
wosp=${5:-"."}
errors=''
haserr=false
for IM in $(ls $5/org/$2/ | xargs)
for IM in $(ls $wosp/org/$org/ | xargs)
do
echo "image=$IM"
if test -f $5/org/$2/$IM/test
if test -f $wosp/org/$org/$IM/test
then
test=$(cat $5/org/$2/$IM/test)
test=$(cat $wosp/org/$org/$IM/test)
else test=''
fi
echo "test script=$test"
imgpath="$2/$IM:$1"
if [[ $2 == 'k8s' ]]
then imgpath="$2-$1/$IM:latest"
fi
imgpath="$repo/$branch/$IM:latest"
entrypoint='/bin/sh'
command="echo empty_command"
if [[ $test != '' ]]; then
command="podman run --rm --entrypoint=\"$entrypoint\" $3/$imgpath -c \"$test\""
if [ -n "$test" ]; then
command="podman run --rm --entrypoint=\"$entrypoint\" $url/$imgpath -c \"$test\""
else
if [[ $IM == 'distroless-true' ]]; then
command="podman run --rm $3/$imgpath \"true\""
if [[ "$IM" == distroless-toybox ]]; then
command="podman run --rm $url/$imgpath toysh -c true"
fi
if [[ $IM == 'distroless-gotop' ]]; then
command="podman run --rm $3/$imgpath \"--version\""
if [ "$IM" = distroless-true ]; then
command="podman run --rm $url/$imgpath \"true\""
fi
if [ "$IM" = distroless-gotop ]; then
command="podman run --rm $url/$imgpath \"--version\""
fi
if [[ $IM == 'flannel-cni-plugin' ]]; then
command="podman run --rm $3/$imgpath \"/flannel\""
if [ "$IM" = flannel-cni-plugin ]; then
command="podman run --rm $url/$imgpath \"/flannel\""
fi
if [[ $IM == 'pause' ]]; then
command="podman run --rm $3/$imgpath \"/pause\" \"-v\""
if [ "$IM" == pause ]; then
command="podman run --rm $url/$imgpath \"/pause\" \"-v\""
fi
fi
echo $command
@ -49,9 +54,9 @@ do
echo "podman rmi --all"
podman rmi --all
if [ "$haserr" = true ]
if [ "$haserr" ]
then
if [[ $(cat $IM.log) != '' ]]
if [[ -n $(cat $IM.log) ]]
then errors="TEST ERROR OF IMAGE $IM: $(cat $IM.log); $errors"
else errors="TEST ERROR OF IMAGE $IM: test returned empty error, but exit status was nozero; $errors"
fi
@ -60,7 +65,7 @@ do
done
echo "$errors"
if [[ $errors != '' ]]
if [ -n "$errors" ]
then haserr=true
fi
echo "ERR=$haserr" > haserr.log

View File

@ -2,11 +2,11 @@ name: Full building alt images
on:
push:
tags:
- '*10*_*'
- '*_*'
jobs:
build-process:
runs-on: alt-p10
runs-on: alt-sisyphus
outputs:
branch: ${{ env.BRANCH }}
org: ${{ env.ORG }}
@ -36,35 +36,36 @@ jobs:
uses: actions/init-alt-env@v1
- name: Install requires
run: |
echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl"
apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl
echo "apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc"
apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc
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
- name: Parse target branch and tag from events context, save to env
env:
EV: ${{ toJson(gitea.event) }}
EV: ${{ toJson(gitea.event) }}
run: |
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}
org=$(echo $EV | jq '.ref' -r | sed 's/refs\/tags\///g' | cut -d '_' -f 2)
echo "ORG=$org" >> ${GITHUB_ENV}
echo "ORG=$org" >> ${GITHUB_ENV}
echo "ORG=$org"
- 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: Run building script
id: build-script
run: |
build_args="-b $BR -o $ORG --skip-images alt/distroless-devel"
if [[ $ORG == 'k8s' ]]; then build_args="$build_args --tags tags.toml --overwrite-organization $ORG-$BR --skip-images k8s/kube-apiserver k8s/kube-controller-manager k8s/kube-proxy k8s/kube-scheduler"; fi
echo "build.py $build_args"
${{ gitea.workspace }}/build.py $build_args
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"
${{ gitea.workspace }}/build.py $build_args $arches
env:
ORG: ${{ env.ORG }}
BR: ${{ env.BRANCH }}
@ -85,7 +86,7 @@ jobs:
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"
echo "tag $tagname is deleted"
env:
T: ${{ secrets.TOKEN }}
BR: ${{ env.BRANCH }}
@ -94,8 +95,8 @@ jobs:
EV: ${{ toJson(gitea.event) }}
test-process:
needs: build-process
if: ${{ needs.build-process.outputs.buildres == 'success' }}
runs-on: alt-p10
if: ${{ needs.build-process.outputs.buildres == 'success' && needs.build-process.outputs.org != 'k8s' }}
runs-on: alt-sisyphus
steps:
- name: Update apt
uses: actions/init-alt-env@v1

View File

@ -1,133 +0,0 @@
name: Full building alt images
on:
push:
tags:
- 'p11_*'
jobs:
build-process:
runs-on: alt-sisyphus
outputs:
branch: ${{ env.BRANCH }}
org: ${{ env.ORG }}
url: ${{ env.URL }}
repo: ${{ env.REPO }}
buildres: ${{ steps.build-script.outcome }}
steps:
- name: Check workspace
run: |
repourl=$(echo $GU | cut -d '/' -f 3)
echo "URL=$repourl" >> ${GITHUB_ENV}
echo $repourl
reponame=$(echo $GR | cut -d '/' -f 1)
echo "REPO=$reponame" >> ${GITHUB_ENV}
echo $reponame
env:
GU: ${{ gitea.server_url }}
GR: ${{ gitea.repository }}
- name: Set repo for p11 (Temporary)
if: ${{ contains(github.ref_name, 'p11') }}
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 podman buildah jq curl"
apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl
echo "apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc"
apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc
- 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) }}
run: |
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}
org=$(echo $EV | jq '.ref' -r | sed 's/refs\/tags\///g' | cut -d '_' -f 2)
echo "ORG=$org" >> ${GITHUB_ENV}
echo "ORG=$org"
- 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: Run building script
id: build-script
run: |
build_args="-b $BR -o $ORG --skip-images alt/distroless-devel"
if [[ $ORG == 'k8s' ]]; then build_args="$build_args --tags tags.toml --overwrite-organization $ORG-$BR --skip-images k8s/kube-apiserver k8s/kube-controller-manager k8s/kube-proxy k8s/kube-scheduler"; fi
echo "build.py $build_args"
${{ gitea.workspace }}/build.py $build_args
env:
ORG: ${{ env.ORG }}
BR: ${{ env.BRANCH }}
continue-on-error: true
- name: Send notification if build crashed
if: ${{ steps.build-script.outcome != 'success' }}
run: |
issueid=1
body="Building images 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 }}
- 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: actions/init-alt-env@v1
- name: Install requires
run: |
echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl"
apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl
- name: Check out current repo
uses: https://gitea.com/actions/checkout@v4
- name: Test
id: test-script
continue-on-error: true
run: |
$WS/.gitea/workflows/testscript $BR $ORG $URL $REPO $WS
cat haserr.log >> ${GITHUB_ENV}
echo "test process finished"
env:
BR: ${{ needs.build-process.outputs.branch }}
ORG: ${{ needs.build-process.outputs.org }}
URL: ${{ needs.build-process.outputs.url }}
REPO: ${{ needs.build-process.outputs.repo }}
WS: ${{ gitea.workspace }}
- name: Send notification if test crashed
if: ${{ env.ERR == 'true' || steps.test-script.outcome == 'failure' }}
run: |
issueid=1
errors=$(cat errors.log)
body="Testing images finish with some errors. $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 }}

View File

@ -1,126 +0,0 @@
name: Full building alt images
on:
push:
tags:
- 'sisyphus_*'
jobs:
build-process:
runs-on: alt-sisyphus
outputs:
branch: ${{ env.BRANCH }}
org: ${{ env.ORG }}
url: ${{ env.URL }}
repo: ${{ env.REPO }}
buildres: ${{ steps.build-script.outcome }}
steps:
- name: Check workspace
run: |
repourl=$(echo $GU | cut -d '/' -f 3)
echo "URL=$repourl" >> ${GITHUB_ENV}
echo $repourl
reponame=$(echo $GR | cut -d '/' -f 1)
echo "REPO=$reponame" >> ${GITHUB_ENV}
echo $reponame
env:
GU: ${{ gitea.server_url }}
GR: ${{ gitea.repository }}
- name: Update apt
uses: actions/init-alt-env@v1
- name: Install requires
run: |
echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl"
apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl
echo "apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc"
apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc
- 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) }}
run: |
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}
org=$(echo $EV | jq '.ref' -r | sed 's/refs\/tags\///g' | cut -d '_' -f 2)
echo "ORG=$org" >> ${GITHUB_ENV}
echo "ORG=$org"
- 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: Run building script
id: build-script
run: |
build_args="-b $BR -o $ORG --skip-images alt/distroless-devel"
if [[ $ORG == 'k8s' ]]; then build_args="$build_args --tags tags.toml --overwrite-organization $ORG-$BR --skip-images k8s/kube-apiserver k8s/kube-controller-manager k8s/kube-proxy k8s/kube-scheduler"; fi
echo "build.py $build_args"
${{ gitea.workspace }}/build.py $build_args
env:
ORG: ${{ env.ORG }}
BR: ${{ env.BRANCH }}
continue-on-error: true
- name: Send notification if build crashed
if: ${{ steps.build-script.outcome != 'success' }}
run: |
issueid=1
body="Building images 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 }}
- 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: actions/init-alt-env@v1
- name: Install requires
run: |
echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl"
apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl
- name: Check out current repo
uses: https://gitea.com/actions/checkout@v4
- name: Test
id: test-script
continue-on-error: true
run: |
$WS/.gitea/workflows/testscript $BR $ORG $URL $REPO $WS
cat haserr.log >> ${GITHUB_ENV}
echo "test process finished"
env:
BR: ${{ needs.build-process.outputs.branch }}
ORG: ${{ needs.build-process.outputs.org }}
URL: ${{ needs.build-process.outputs.url }}
REPO: ${{ needs.build-process.outputs.repo }}
WS: ${{ gitea.workspace }}
- name: Send notification if test crashed
if: ${{ env.ERR == 'true' || steps.test-script.outcome == 'failure' }}
run: |
issueid=1
errors=$(cat errors.log)
body="Testing images finish with some errors. $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 }}

View File

@ -2,11 +2,11 @@ name: Building alt images
on:
push:
tags:
- '*_*/*'
- '*_*/*_*'
jobs:
build-process:
runs-on: alt-latest
runs-on: alt-sisyphus
outputs:
branch: ${{ env.BRANCH }}
image: ${{ env.IMAGE }}
@ -37,10 +37,10 @@ jobs:
uses: actions/init-alt-env@v1
- name: Install requires
run: |
echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl"
apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl
echo "apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc"
apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc
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
@ -52,34 +52,39 @@ jobs:
P_PASS: ${{ secrets.PODMAN_PASS }}
- name: Check files in the repository
run: |
ls -a ${{ gitea.workspace }}
ls -a ${{ gitea.workspace }}
- name: Parse target branch and tag from events context, save to env
env:
EV: ${{ toJson(gitea.event) }}
EV: ${{ toJson(gitea.event) }}
run: |
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}
localimage=$(echo $EV | jq '.ref' -r | sed 's/refs\/tags\///g' | cut -d '_' -f 2)
echo "IMAGE=$localimage" >> ${GITHUB_ENV}
echo "IMAGE=$localimage" >> ${GITHUB_ENV}
echo "IMAGE=$localimage"
org=$(echo "$localimage" | cut -d '/' -f 1)
echo "ORG=$org" >> ${GITHUB_ENV}
echo "ORG=$org"
ver=$(echo $EV | jq '.ref' -r | sed 's/refs\/tags\///g' | cut -d '_' -f 3)
echo "VER=$ver" >> ${GITHUB_ENV}
echo "VER=$ver"
- 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:
echo "TEST=$testscript" >> ${GITHUB_ENV}
env:
IM: ${{ env.IMAGE }}
BR: ${{ env.BRANCH }}
- name: Run building script
id: build-script
run: |
if [[ "$IM" == *"k8s"* ]]; then k8sarg="--tags=tags.toml --overwrite-organization $ORG-$BR"; else k8sarg=""; fi
echo "build.py -i $IM -b $BR"
${{ gitea.workspace }}/build.py -i $IM -b $BR $k8sarg
if [[ "$IM" == *"k8s"* ]]; then k8sarg="--overwrite-organization $ORG-$BR --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
env:
IM: ${{ env.IMAGE }}
VER: ${{ env.VER }}
BR: ${{ env.BRANCH }}
ORG: ${{ env.ORG }}
continue-on-error: true
@ -89,7 +94,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 }}
@ -100,7 +105,7 @@ jobs:
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"
echo "tag $tagname is deleted"
env:
T: ${{ secrets.TOKEN }}
BR: ${{ env.BRANCH }}
@ -110,7 +115,7 @@ jobs:
test-process:
needs: build-process
if: ${{ needs.build-process.outputs.buildres == 'success' }}
runs-on: alt-latest
runs-on: alt-sisyphus
steps:
- name: Update apt
uses: https://gitea.basealt.ru/actions/init-alt-env@v1
@ -124,7 +129,7 @@ jobs:
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
env:
env:
IM: ${{ needs.build-process.outputs.image }}
BR: ${{ needs.build-process.outputs.branch }}
URL: ${{ needs.build-process.outputs.url }}

View File

@ -26,10 +26,70 @@ the organization `<ORGANIZATION>`, run:
```
If you push to the users repository, then organiztion is your username.
## info.yaml format
- `is_versioned`: **bool** (REQUIRED)
Whether to use package version as a tag for this image
- `source_packages`: **list of strings** (REQUIRED)
List of source packages (src.rpm) this image depends on.
If contains jinja2 template syntax, `--package-version`
CLI option must be specified.
- `version_template`: **string** (OPTIONAL)
template to apply when construction the tag,
`version` string variable is available in the template
### examples
#### org/k8s/flannel-cni-plugin
```yaml
is_versioned: true
version_template: v{{ version.rsplit('.', 1) | first }}-flannel{{ version.rsplit('.', 1) | last }}
source_packages:
- cni-plugin-flannel
```
```bash
./build.py -i k8s/flannel-cni-plugin
```
#### org/k8s/kube-apiserver
```yaml
is_versioned: true
version_template: v{{ version }}
source_packages:
- kubernetes{{ version }}
```
```bash
./build.py -b sisyphus -i k8s/kube-apiserver --package-version '{"k8s/kube-apiserver": "1.31"}'
```
#### org/k8s/pause
```yaml
is_versioned: true
source_packages:
- kubernetes-pause
```
```bash
./build.py -i k8s/pause
```
## Dependencies
On x86_64 machine using p10 branch you need:
- `python3-module-tomli`
- `python3-module-jinja2`
- `python3-module-yaml`
- `python3-module-requests`
- `qemu-user-static-binfmt-aarch64` to build for arm64 architecture
- `qemu-user-static-binfmt-arm` to build for arm architecture
- `qemu-user-static-binfmt-ppc` to build for ppc64le architecture

167
build.py
View File

@ -6,25 +6,62 @@ import json
import re
import subprocess
import textwrap
from datetime import datetime
from dataclasses import dataclass
from graphlib import TopologicalSorter
from pathlib import Path
import requests
import tomli
import yaml
from jinja2 import Template
ORG_DIR = Path("org")
PKG_VERSIONS: dict | None = None
@dataclass
class Image:
def __init__(self, canonical_name):
canonical_name: str
is_versioned: bool | None
verion_template: str | None
source_packages: list[str] | None
def __init__(self, canonical_name: str):
self.canonical_name = canonical_name
self.path = ORG_DIR / canonical_name
self.base_name = re.sub("^[^/]+/", "", canonical_name)
def __str__(self):
return (f'Image(canonical_name="{self.canonical_name}", '
f'path="{self.path}", base_name="{self.base_name}")')
info_file = self.path / "info.yaml"
if not info_file.exists():
self.is_versioned = None
self.source_packages = None
return
info: dict = yaml.safe_load(info_file.read_text())
if "is_versioned" not in info:
raise RuntimeError(
f"info.yaml for {self.canonical_name} doesn't contain 'is_versioned' key"
)
if "source_packages" not in info:
raise RuntimeError(
f"info.yaml for {self.canonical_name} doesn't contain 'source_packages' key"
)
self.is_versioned = info["is_versioned"]
self.source_packages = info["source_packages"]
if self.is_versioned and not self.source_packages:
raise RuntimeError(
f"source_packages for {self.canonical_name} doesn't contain any values"
)
self.version_template = None
if "version_template" in info:
self.version_template = info["version_template"]
class Tasks:
@ -49,22 +86,95 @@ class Tasks:
]
def api_get_source_package_version(branch: str, package_name: str) -> str:
api_url = "https://rdb.altlinux.org/api/site/package_versions_from_tasks"
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} "
)
result = response.json()
for v in result["versions"]:
if v["branch"] == branch:
return v["version"]
raise RuntimeError(
f"failed to retrieve source package version: source package {package_name!r}, branch {branch!r} "
)
result = response.json()
return result["versions"][0]["version"]
class Tags:
def __init__(self, tags_file, latest):
def __init__(self, tags_file: str | None, latest: str):
if tags_file is None:
self._tags = None
else:
tags_file = Path(tags_file)
self._tags = tomli.loads(tags_file.read_text())
self._tags = tomli.loads(Path(tags_file).read_text())
self._latest = latest
def tags(self, branch, image: Image):
def tags(self, branch: str, image: Image):
if self._tags is None:
tags = [branch]
if image.is_versioned is None:
tags = [branch]
if branch == self._latest:
tags.append("latest")
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=}")
if re.search("{{.*}}", package_name):
if PKG_VERSIONS is None:
raise RuntimeError(
f"--package-versions option is not specified, required for {image.canonical_name!r}"
)
if image.canonical_name not in PKG_VERSIONS:
raise RuntimeError(
f"--package-versions option does not contain version for image {image.canonical_name!r}"
)
if not PKG_VERSIONS[image.canonical_name]:
raise RuntimeError(
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)
if image.version_template is not None:
version = (
Template(image.version_template).render(version=version).strip()
)
tags = [version]
tags.append("latest")
else:
version = datetime.now().strftime('%Y%m%d')
if image.version_template is not None:
version = (
Template(image.version_template).render(version=version).strip()
)
tags = [version]
tags.append("latest")
else:
tags = self._tags[image.canonical_name][branch].copy()
if branch == self._latest:
tags.append("latest")
return tags
@ -107,6 +217,10 @@ class Distroless:
elif value := dd.get("workingdir"):
self.config_options.append(f"--workingdir={value}")
if labels := dd.get("label"):
for k, v in labels.items():
self.config_options.append(f"--label={k}={v}")
def render_arch_branch(self, arch, branch):
def if_arches(arches, value, default=""):
if arch in arches or not arches:
@ -153,9 +267,10 @@ class DockerBuilder:
def make_image_re(self):
registry = r"(?P<registry>[\w.:]+)"
organization = r"(?P<organization>\w+)"
branch = r"(?P<branch>\w+)"
name = r"(?P<name>[-.\w]+)"
tag = r"(?P<tag>[\w.]+)"
return rf"(:?{registry}/)?(:?{organization}/)?{name}(:?:{tag})?"
return rf"(:?{registry}/)?(:?{organization}/)?(:?{branch}/)?{name}(:?:{tag})?"
def make_dockerfile_from_re(self):
image_re = self.make_image_re()
@ -183,7 +298,7 @@ class DockerBuilder:
if overwrite_organization:
self.overwrite_organization = overwrite_organization
else:
self.overwrite_organization = organization
self.overwrite_organization = branch
self.latest = latest
self.dry_run = dry_run
self.images_info = images_info
@ -230,7 +345,7 @@ class DockerBuilder:
) -> str:
if self.registry:
registry = self.registry.rstrip("/") + "/"
alt_image = "alt/alt"
alt_image = "alt"
else:
registry = ""
alt_image = "alt"
@ -304,7 +419,7 @@ class DockerBuilder:
from_image = match.groupdict()
if from_image["name"] != "scratch":
requires.add(
f"{from_image['organization']}/{from_image['name']}"
f"{self.organization}/{from_image['name']}"
)
elif distrolessfile.exists():
requires.add("alt/distroless-builder")
@ -313,7 +428,7 @@ class DockerBuilder:
if match := re.match(self.image_re, from_):
from_image = match.groupdict()
if from_image["name"] != "scratch":
requires.add(f"{from_image['organization']}/{from_image['name']}")
requires.add(f"{self.organization}/{from_image['name']}")
return (canonical_name, requires)
@ -345,7 +460,7 @@ class DockerBuilder:
def distroless_build(self, image: Image, arches):
def distroless_build_arch(arch, manifest):
distroless_builder = self.render_full_tag(
Image("alt/distroless-builder"), self.branch
Image("alt/distroless-builder"), "latest"
)
distroless = self.distrolesses[image.canonical_name]
distroless.render_arch_branch(arch, self.branch)
@ -580,6 +695,12 @@ class DockerBuilder:
f"--platform={platforms}",
".",
]
if PKG_VERSIONS is not None and image.canonical_name in PKG_VERSIONS:
build_cmd.insert(
-1, f"--build-arg=PKG_VERSION={PKG_VERSIONS[image.canonical_name]}"
)
self.run(build_cmd, cwd=image.path)
for tag in tags[1:]:
@ -638,7 +759,7 @@ class ImagesInfo:
def parse_args():
stages = ["build", "remove_dockerfiles", "render_dockerfiles", "push"]
arches = ["amd64", "386", "arm64"]
arches = ["amd64", "386", "arm64", "loong64", "riscv64"]
branches = ["p11", "p10", "sisyphus", "c10f1", "c10f2"]
organizations = list(ORG_DIR.iterdir())
images = [f"{o.name}/{i.name}" for o in organizations for i in o.iterdir()]
@ -749,6 +870,11 @@ def parse_args():
choices=stages,
help="list of stages to skip",
)
parser.add_argument(
"--package-versions",
type=json.loads,
help="json string where key is image name, value is the package version",
)
args = parser.parse_args()
args.stages = set(args.stages) - set(args.skip_stages)
@ -760,7 +886,10 @@ def parse_args():
def main():
global PKG_VERSIONS
args = parse_args()
PKG_VERSIONS = args.package_versions
arches = args.arches
images_info = ImagesInfo()
tags = Tags(args.tags, args.latest)

View File

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

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ organization }}/node:{{ branch }}
FROM {{ registry }}{{ branch }}/node:latest
MAINTAINER alt-cloud

View File

@ -0,0 +1,8 @@
---
is_versioned: true
version_template: "{{ version }}"
source_packages:
- ansible-core
- ansible-vim
- ansible-lint
...

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud

View File

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

View File

@ -1,7 +1,12 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="base"
LABEL org.opencontainers.image.description="Base image with localization and timezone packages"
LABEL org.opencontainers.image.licenses="GPLv2"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("glibc-gconv-modules", "glibc-locales", "tzdata") }}
CMD ["bash"]

7
org/alt/base/info.yaml Normal file
View File

@ -0,0 +1,7 @@
---
is_versioned: false
version_template: "{{ version }}"
source_packages:
- glibc
- tzdata
...

View File

@ -1,8 +1,9 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="buildpack-deps-curl"
LABEL org.opencontainers.image.description = "Transfer data environment"
LABEL org.opencontainers.image.licenses="GPLv2"
LABEL org.opencontainers.image.vendor="ALT Linux Team"

View File

@ -0,0 +1,9 @@
---
is_versioned: false
version_template: "{{ version }}"
source_packages:
- ca-certificates
- curl
- gnupg
- wget
...

View File

@ -1,9 +1,10 @@
FROM {{ registry }}{{ organization }}/buildpack-deps-curl:{{ branch }}
FROM {{ registry }}{{ branch }}/buildpack-deps-curl:latest
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="buildpack-deps-scm"
LABEL org.opencontainers.image.licenses="GPLv2"
LABEL org.opencontainers.image.description = "Software configuration management environment"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages(

View File

@ -0,0 +1,10 @@
---
is_versioned: false
version_template: "{{ version }}"
source_packages:
- git
- mercurial
- openssh
- procps
- subversion
...

View File

@ -1,8 +1,9 @@
FROM {{ registry }}{{ organization }}/buildpack-deps-scm:{{ branch }}
FROM {{ registry }}{{ branch }}/buildpack-deps-scm:latest
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="buildpack-deps"
LABEL org.opencontainers.image.description = "Projects building environment"
LABEL org.opencontainers.image.licenses="GPLv2"
LABEL org.opencontainers.image.vendor="ALT Linux Team"

View File

@ -0,0 +1,6 @@
---
is_versioned: false
version_template: "{{ version }}"
source_packages:
- gcc-defaults
...

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ organization }}/base:{{ branch }}
FROM {{ registry }}{{ branch }}/base:latest
MAINTAINER alt-cloud

17
org/alt/devel/info.yaml Normal file
View File

@ -0,0 +1,17 @@
---
is_versioned: false
version_template: "{{ version }}"
source_packages:
- gcc-defaults
- vim
- gdb
- git
- iproute2
- iputils
- wget
- curl
- lsof
- ripgrep
- zsh
- make
...

View File

@ -1,4 +1,4 @@
from = "{{ registry }}{{ organization }}/distroless-static:{{ branch }}"
from = "{{ registry }}{{ branch }}/distroless-static:latest"
builder-install-packages = [
"glibc-core",
'{{if_branches(["p10"], "glibc-nss")}}',
@ -19,3 +19,4 @@ packages = [
"zlib",
]
timezone = "Europe/Moscow"
label = {"org.opencontainers.image.title" = "distroless-base", "org.opencontainers.image.description" = "Base image for running dynamically linked programs", "org.opencontainers.image.licenses" = "GPLv2", "org.opencontainers.image.vendor" = "ALT Linux Team"}

View File

@ -0,0 +1,9 @@
---
is_versioned: false
version_template: "{{ version }}"
source_packages:
- glibc
- tzdata
- zlib
- libselinux
...

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud

View File

@ -0,0 +1,7 @@
---
is_versioned: false
version_template: "{{ version }}"
source_packages:
- glibc
- apt-repo
...

View File

@ -1,4 +1,4 @@
from = "{{ registry }}{{ organization }}/distroless-base:{{ branch }}"
from = "{{ registry }}{{ branch }}/distroless-base:latest"
builder-install-packages = [
"coreutils",
"findutils",
@ -37,3 +37,4 @@ packages = [
"vim-console",
]
cmd = ["/bin/bash"]
label = {"org.opencontainers.image.title" = "distroless-devel", "org.opencontainers.image.description" = "Base image for creating and debugging distroless images", "org.opencontainers.image.licenses" = "GPLv2", "org.opencontainers.image.vendor" = "ALT Linux Team"}

View File

@ -0,0 +1,10 @@
---
is_versioned: false
version_template: "{{ version }}"
source_packages:
- coreutils
- findutils
- glibc
- iproute2
- vim
...

View File

@ -1,3 +1,4 @@
from = "{{ registry }}{{ organization }}/distroless-base:{{ branch }}"
from = "{{ registry }}{{ branch }}/distroless-base:latest"
full-files = ["/usr/bin/gotop"]
entrypoint = ["/usr/bin/gotop"]
label = {"org.opencontainers.image.title" = "distroless-gotop", "org.opencontainers.image.description" = "Gotop image", "org.opencontainers.image.licenses" = "GPLv2", "org.opencontainers.image.vendor" = "ALT Linux Team"}

View File

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

View File

@ -2,3 +2,4 @@ from = "scratch"
file-lists = ["static.list"]
user = "nonroot"
workdir = "/home/nonroot"
label = {"org.opencontainers.image.title" = "distroless-static", "org.opencontainers.image.description" = "Base image for running statically linked programs", "org.opencontainers.image.licenses" = "GPLv2", "org.opencontainers.image.vendor" = "ALT Linux Team"}

View File

@ -0,0 +1,6 @@
---
is_versioned: false
version_template: "{{ version }}"
source_packages:
- distroless-static
...

View File

@ -0,0 +1,11 @@
ALT distroless-toybox image
===========================
This is distroless image with toybox binary. It can be used for debugging
containers as toybox provides a lot of utils.
To launch a shell in the container:
`docker run --rm -it registry.altlinux.org/alt/distroless-toybox`
To get system inforamtion:
`docker run --rm -it registry.altlinux.org/alt/distroless-toybox uname -a`

View File

@ -0,0 +1,7 @@
from = "{{ registry }}{{ branch }}/distroless-static:latest"
builder-install-packages = ["toybox"]
files = ["/bin/toybox"]
entrypoint = ["/bin/toybox"]
cmd = ["sh"]
label = {"org.opencontainers.image.title" = "distroless-toybox", "org.opencontainers.image.description" = "Base image with toybox environment", "org.opencontainers.image.licenses" = "GPLv2", "org.opencontainers.image.vendor" = "ALT Linux Team"}

View File

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

View File

@ -1,3 +1,4 @@
from = "{{ registry }}{{ organization }}/distroless-static:{{ branch }}"
from = "{{ registry }}{{ branch }}/distroless-static:latest"
files = ["/bin/true"]
cmd = ["/bin/true"]
label = {"org.opencontainers.image.title" = "distroless-true", "org.opencontainers.image.description" = "True-command image for zero status returning", "org.opencontainers.image.licenses" = "GPLv2", "org.opencontainers.image.vendor" = "ALT Linux Team"}

View File

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

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud

6
org/alt/etcd/info.yaml Normal file
View File

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

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud

6
org/alt/gitea/info.yaml Normal file
View File

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

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ organization }}/base:{{ branch }}
FROM {{ registry }}{{ branch }}/base:latest
MAINTAINER alt-cloud

6
org/alt/golang/info.yaml Normal file
View File

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

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud

View File

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

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud

6
org/alt/loki/info.yaml Normal file
View File

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

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud

8
org/alt/nginx/info.yaml Normal file
View File

@ -0,0 +1,8 @@
---
is_versioned: true
version_template: "{{ version }}"
source_packages:
- nginx
- apache2
- tzdata
...

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ organization }}/buildpack-deps:{{ branch }}
FROM {{ registry }}{{ branch }}/buildpack-deps:latest
MAINTAINER alt-cloud

7
org/alt/node/info.yaml Normal file
View File

@ -0,0 +1,7 @@
---
is_versioned: true
version_template: "{{ version }}"
source_packages:
- node
- yarn
...

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ organization }}/base:{{ branch }}
FROM {{ registry }}{{ branch }}/base:latest
MAINTAINER alt-cloud

View File

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

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ organization }}/base:{{ branch }}
FROM {{ registry }}{{ branch }}/base:latest
MAINTAINER alt-cloud
@ -8,7 +8,14 @@ LABEL org.opencontainers.image.source="https://github.com/php/php-src"
LABEL org.opencontainers.image.licenses="PHP-3.01"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{% if branch == 'p10' %}
{{ install_packages(
"php8.2",
"php8.2-xdebug",
"php8.2",
"php8.2-xdebug",
) }}
{% else %}
{{ install_packages(
"php8.3",
"php8.3-xdebug",
) }}
{% endif %}

11
org/alt/php/info.yaml Normal file
View File

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

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ organization }}/base:{{ branch }}
FROM {{ registry }}{{ branch }}/base:latest
MAINTAINER alt-cloud

View File

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

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud

View File

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

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud

View File

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

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud

View File

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

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ organization }}/base:{{ branch }}
FROM {{ registry }}{{ branch }}/base:latest
MAINTAINER alt-cloud

9
org/alt/python/info.yaml Normal file
View File

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

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ organization }}/base:{{ branch }}
FROM {{ registry }}{{ branch }}/base:latest
MAINTAINER alt-cloud

View File

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

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ organization }}/base:{{ branch }}
FROM {{ registry }}{{ branch }}/base:latest
MAINTAINER alt-cloud

View File

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

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud

View File

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

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud

11
org/alt/ruby/info.yaml Normal file
View File

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

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ organization }}/base:{{ branch }}
FROM {{ registry }}{{ branch }}/base:latest
MAINTAINER alt-cloud

View File

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

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud
@ -10,4 +10,4 @@ LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("trivy") }}
ENTRYPOINT [ "trivy" ]
ENTRYPOINT [ "trivy" ]

6
org/alt/trivy/info.yaml Normal file
View File

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

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud

8
org/alt/unit/info.yaml Normal file
View File

@ -0,0 +1,8 @@
---
is_versioned: true
version_template: "{{ version }}"
source_packages:
- unit
- curl
- tzdata
...

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud

6
org/alt/zot/info.yaml Normal file
View File

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

View File

@ -1,13 +1,7 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="cert-manager-acmesolver"
LABEL org.opencontainers.image.description="HTTP server used to solve ACME challenges."
LABEL org.opencontainers.image.source="https://github.com/cert-manager/cert-manager"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("cert-manager") }}
RUN groupadd -r -g 1000 cert-manger && useradd --no-log-init -r -u 1000 -g cert-manger cert-manger
@ -15,3 +9,9 @@ RUN groupadd -r -g 1000 cert-manger && useradd --no-log-init -r -u 1000 -g cert-
USER 1000
ENTRYPOINT ["/usr/bin/acmesolver"]
LABEL org.opencontainers.image.title="cert-manager-acmesolver"
LABEL org.opencontainers.image.description="HTTP server used to solve ACME challenges."
LABEL org.opencontainers.image.source="https://github.com/cert-manager/cert-manager"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"

View File

@ -0,0 +1,6 @@
---
is_versioned: true
version_template: v{{ version }}
source_packages:
- cert-manager
...

View File

@ -1,13 +1,7 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="cert-manager-cainjector"
LABEL org.opencontainers.image.description="cert-manager CA injector is a Kubernetes addon to automate the injection of CA data into webhooks and APIServices from cert-manager certificates."
LABEL org.opencontainers.image.source="https://github.com/cert-manager/cert-manager"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("cert-manager") }}
RUN groupadd -r -g 1000 cert-manger && useradd --no-log-init -r -u 1000 -g cert-manger cert-manger
@ -15,3 +9,9 @@ RUN groupadd -r -g 1000 cert-manger && useradd --no-log-init -r -u 1000 -g cert-
USER 1000
ENTRYPOINT ["/usr/bin/cainjector"]
LABEL org.opencontainers.image.title="cert-manager-cainjector"
LABEL org.opencontainers.image.description="cert-manager CA injector is a Kubernetes addon to automate the injection of CA data into webhooks and APIServices from cert-manager certificates."
LABEL org.opencontainers.image.source="https://github.com/cert-manager/cert-manager"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"

View File

@ -0,0 +1,6 @@
---
is_versioned: true
version_template: v{{ version }}
source_packages:
- cert-manager
...

View File

@ -1,13 +1,7 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="cert-manager-controller"
LABEL org.opencontainers.image.description="Automatically provision and manage TLS certificates in Kubernetes."
LABEL org.opencontainers.image.source="https://github.com/cert-manager/cert-manager"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("cert-manager") }}
RUN groupadd -r -g 1000 cert-manger && useradd --no-log-init -r -u 1000 -g cert-manger cert-manger
@ -15,3 +9,9 @@ RUN groupadd -r -g 1000 cert-manger && useradd --no-log-init -r -u 1000 -g cert-
USER 1000
ENTRYPOINT ["/usr/bin/controller"]
LABEL org.opencontainers.image.title="cert-manager-controller"
LABEL org.opencontainers.image.description="Automatically provision and manage TLS certificates in Kubernetes."
LABEL org.opencontainers.image.source="https://github.com/cert-manager/cert-manager"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"

View File

@ -0,0 +1,6 @@
---
is_versioned: true
version_template: v{{ version }}
source_packages:
- cert-manager
...

View File

@ -1,13 +1,7 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="cert-manager-startupapicheck"
LABEL org.opencontainers.image.description="Check that cert-manager started successfully."
LABEL org.opencontainers.image.source="https://github.com/cert-manager/cert-manager"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("cert-manager") }}
RUN groupadd -r -g 1000 cert-manger && useradd --no-log-init -r -u 1000 -g cert-manger cert-manger
@ -15,3 +9,9 @@ RUN groupadd -r -g 1000 cert-manger && useradd --no-log-init -r -u 1000 -g cert-
USER 1000
ENTRYPOINT ["/usr/bin/startupapicheck"]
LABEL org.opencontainers.image.title="cert-manager-startupapicheck"
LABEL org.opencontainers.image.description="Check that cert-manager started successfully."
LABEL org.opencontainers.image.source="https://github.com/cert-manager/cert-manager"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"

View File

@ -0,0 +1,6 @@
---
is_versioned: true
version_template: v{{ version }}
source_packages:
- cert-manager
...

View File

@ -1,13 +1,7 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="cert-manager-webhook"
LABEL org.opencontainers.image.description="The webhook component provides API validation, mutation and conversion functionality for cert-manager."
LABEL org.opencontainers.image.source="https://github.com/cert-manager/cert-manager"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("cert-manager") }}
RUN groupadd -r -g 1000 cert-manger && useradd --no-log-init -r -u 1000 -g cert-manger cert-manger
@ -15,3 +9,9 @@ RUN groupadd -r -g 1000 cert-manger && useradd --no-log-init -r -u 1000 -g cert-
USER 1000
ENTRYPOINT ["/usr/bin/webhook"]
LABEL org.opencontainers.image.title="cert-manager-webhook"
LABEL org.opencontainers.image.description="The webhook component provides API validation, mutation and conversion functionality for cert-manager."
LABEL org.opencontainers.image.source="https://github.com/cert-manager/cert-manager"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"

View File

@ -0,0 +1,6 @@
---
is_versioned: true
version_template: v{{ version }}
source_packages:
- cert-manager
...

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud
@ -8,6 +8,13 @@ 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"] %}
ARG PKG_VERSION
{{ install_packages("coredns${PKG_VERSION}") }}
{% else %}
{{ install_packages("coredns") }}
{% endif %}
ENTRYPOINT ["/usr/bin/coredns"]

11
org/k8s/coredns/info.yaml Normal file
View File

@ -0,0 +1,11 @@
---
is_versioned: true
version_template: v{{ version }}
source_packages:
- >
{% if branch in ["sisyphus", "p11", "c10f2"] %}
{% raw %}coredns{{ version }}{% endraw %}
{% else %}
coredns
{% endif %}
...

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud

12
org/k8s/etcd/info.yaml Normal file
View File

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

View File

@ -1,12 +1,12 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="flannel-cni-plugin"
LABEL org.opencontainers.image.description="CNI network plugin that is powered by flannel"
LABEL org.opencontainers.image.source="https://github.com/flannel-io/cni-plugin"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
LABEL org.opencontainers.image.title="flannel-cni-plugin" \
org.opencontainers.image.description="CNI network plugin that is powered by flannel" \
org.opencontainers.image.source="https://github.com/flannel-io/cni-plugin" \
org.opencontainers.image.licenses="Apache-2.0" \
org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("cni-plugin-flannel") }}

View File

@ -0,0 +1,6 @@
---
is_versioned: true
version_template: v{{ version.rsplit('.', 1) | first }}-flannel{{ version.rsplit('.', 1) | last }}
source_packages:
- cni-plugin-flannel
...

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud

View File

@ -0,0 +1,4 @@
is_versioned: true
version_template: v{{ version }}
source_packages:
- flannel

View File

@ -1,13 +1,15 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
MAINTAINER alt-cloud
ARG PKG_VERSION
{{ install_packages("kubernetes${PKG_VERSION}-master") }}
ENTRYPOINT ["/usr/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."
LABEL org.opencontainers.image.source="https://github.com/kubernetes/kubernetes"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("kubernetes-master") }}
ENTRYPOINT ["/usr/bin/kube-apiserver"]

Some files were not shown because too many files have changed in this diff Show More