16 Commits

Author SHA1 Message Date
770fb7021e Перебалансировано дерево согласно последним договоренностям, сгенерированы реальные images.yml для k8s, flannel, cert-manager 2024-05-22 12:54:45 +05:00
911cd2eca1 Добавлены Dockerfiles 2024-04-24 16:26:15 +05:00
156c4b5831 + 2024-04-24 15:16:47 +05:00
c7397a6194 Доработано дерево 2024-04-24 15:15:03 +05:00
d34a5e2708 Добавлены пустые файлы Dockerfile и image.yml 2024-04-24 14:53:51 +05:00
85334e382c Add tree 2024-04-24 14:48:10 +05:00
abdd641ac2 update tags for k8s 2024-04-24 14:41:37 +05:00
1a1bf5ac64 fix getting number of tech.issue for notifications to static number 1 (filter on tag doesn't work) 2024-04-24 14:41:37 +05:00
a0643aca87 delete from workflow building images on c10f1/2 for arches arm, ppc 2024-04-24 14:41:37 +05:00
57aa82cf8c add workflow for building all images on branches p10, c10f1/2 2024-04-24 14:41:37 +05:00
14da06e02b add branches c10f1,c10f2 to list of options 2024-04-24 14:41:37 +05:00
3b652fc6b0 Обновить branch/README.md 2024-04-23 10:04:32 +03:00
2b923e4c96 Обновить branch/README.md 2024-04-23 10:03:48 +03:00
9175f34e52 Правка документации 2024-04-23 11:45:11 +05:00
f3f74f56dd Обновить branch/README.md 2024-04-23 09:26:37 +03:00
31de830d2e Постоено основное дерево в branch/sisyphus, оформлены основные файлы в группе ranch/sisyphus/k8s 2024-04-23 10:54:20 +05:00
249 changed files with 2143 additions and 2036 deletions

View File

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

View File

@ -0,0 +1,127 @@
name: Full building alt images
on:
push:
tags:
- '*10*_*'
jobs:
build-process:
runs-on: alt-p10
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 [[ $BR == 'c10f1' || $BR == 'c10f2' ]]; then build_args="$build_args --skip-arches arm ppc64le"; fi
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-p10
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,8 +2,7 @@ name: Full building alt images
on: on:
push: push:
tags: tags:
- '*_*' - 'sisyphus_*'
- '!*_k8s'
jobs: jobs:
build-process: build-process:
@ -15,14 +14,6 @@ jobs:
repo: ${{ env.REPO }} repo: ${{ env.REPO }}
buildres: ${{ steps.build-script.outcome }} buildres: ${{ steps.build-script.outcome }}
steps: 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 - name: Check workspace
run: | run: |
repourl=$(echo $GU | cut -d '/' -f 3) repourl=$(echo $GU | cut -d '/' -f 3)
@ -34,53 +25,43 @@ jobs:
env: env:
GU: ${{ gitea.server_url }} GU: ${{ gitea.server_url }}
GR: ${{ gitea.repository }} GR: ${{ gitea.repository }}
- name: Parse target branch and tag from events context, save to env - 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: env:
EV: ${{ toJson(gitea.event) }} EV: ${{ toJson(gitea.event) }}
run: | 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
echo $EV | jq '.ref' -r | sed "s/refs\/tags\//BRANCH=/g" | cut -d '_' -f 1 >> ${GITHUB_ENV} 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) 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" 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 - name: Login podman gitea
run: | run: |
echo "podman login ${{ env.URL }}" 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: env:
P_USER: ${{ secrets.PODMAN_USER }} P_USER: ${{ secrets.PODMAN_USER }}
P_PASS: ${{ secrets.PODMAN_PASS }} P_PASS: ${{ secrets.PODMAN_PASS }}
- name: Run building script - name: Run building script
id: build-script id: build-script
run: | run: |
#build base with riskv64 for sisyphus if it is build_args="-b $BR -o $ORG --skip-images alt/distroless-devel"
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 if [[ $BR == 'sisyphus' ]]; then build_args="$build_args --skip-arches arm"; fi
build_args="-b $BR --log-level debug --latest $BR -o $ORG --registry $BUILD_URL --package-versions {\"alt/etcd\":\"3.5.15\"}" 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
if [[ "$BR" == "sisyphus" ]]; then arches="--arches amd64 386 arm64 loong64 --skip-images base/base"; else arches="--arches amd64 386 arm64"; fi echo "build.py $build_args"
echo "${{ gitea.workspace }}/build.py $build_args $arches" ${{ gitea.workspace }}/build.py $build_args
${{ gitea.workspace }}/build.py $build_args $arches
env: env:
ORG: ${{ env.ORG }} ORG: ${{ env.ORG }}
BR: ${{ env.BRANCH }} BR: ${{ env.BRANCH }}
BUILD_URL: "gitea.basealt.ru/alt"
continue-on-error: true continue-on-error: true
- name: Send notification if build crashed - name: Send notification if build crashed
if: ${{ steps.build-script.outcome != 'success' }} if: ${{ steps.build-script.outcome != 'success' }}
@ -98,7 +79,7 @@ jobs:
run: | run: |
tagname=$(echo $EV | jq '.ref' -r | sed "s/refs\/tags\///g") 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 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: env:
T: ${{ secrets.TOKEN }} T: ${{ secrets.TOKEN }}
BR: ${{ env.BRANCH }} BR: ${{ env.BRANCH }}
@ -107,7 +88,7 @@ jobs:
EV: ${{ toJson(gitea.event) }} EV: ${{ toJson(gitea.event) }}
test-process: test-process:
needs: build-process needs: build-process
if: ${{ needs.build-process.outputs.buildres == 'success' && needs.build-process.outputs.org != 'k8s' }} if: ${{ needs.build-process.outputs.buildres == 'success' }}
runs-on: alt-sisyphus runs-on: alt-sisyphus
steps: steps:
- name: Update apt - name: Update apt

View File

@ -1,155 +0,0 @@
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 "BRANCH=$branch"
rest="$(echo $EV | jq '.ref' -r | sed "s|refs/tags/||g" | cut -d '_' -f 2-)"
IFS='_' read -ra parts <<< "$rest"
images=()
declare -A versions
for part in "${parts[@]}"; do
if [[ "$part" == *@* ]]; then
image="${part%@*}"
version="${part#*@}"
images+=("$image")
versions["$image"]="$version"
else
image="$part"
images+=("$image")
fi
done
image_args="${images[*]}"
package_versions="{"
first=1
for image in "${!versions[@]}"; do
[[ $first -eq 0 ]] && package_versions+=","
package_versions+="\"$image\": \"${versions[$image]}\""
first=0
done
package_versions+="}"
echo "IMAGES=$image_args"
echo "PACKAGE_VERSIONS=$package_versions"
echo "BRANCH=$branch" >> ${GITHUB_ENV}
echo "IMAGES=$image_args" >> $GITHUB_ENV
echo "PACKAGE_VERSIONS=$package_versions" >> $GITHUB_ENV
- 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: Run building script
id: build-script
run: |
echo "${{ 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\""
${{ 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" -H "Authorization: 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) }}

View File

@ -1,175 +0,0 @@
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: |
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"
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: 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: |
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 --latest $BR --log-level debug --registry gitea.basealt.ru/alt $k8sarg
env:
IM: ${{ env.IMAGE }}
VER: ${{ env.VER }}
BR: ${{ env.BRANCH }}
ORG: ${{ env.ORG }}
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 }}

1
.gitignore vendored
View File

@ -1 +0,0 @@
Dockerfile

View File

@ -26,88 +26,9 @@ the organization `<ORGANIZATION>`, run:
``` ```
If you push to the users repository, then organiztion is your username. 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** or **list of strings** (OPTIONAL)
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
#### 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
```
#### 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 ## Dependencies
On x86_64 machine using p10 branch you need: On x86_64 machine using p10 branch you need:
- `python3-module-tomli` - `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-aarch64` to build for arm64 architecture
- `qemu-user-static-binfmt-arm` to build for arm architecture - `qemu-user-static-binfmt-arm` to build for arm architecture
- `qemu-user-static-binfmt-ppc` to build for ppc64le architecture - `qemu-user-static-binfmt-ppc` to build for ppc64le architecture

153
branch/README.md Normal file
View File

@ -0,0 +1,153 @@
# Описание структуры каталогов для автоматизации рабочео процесса создания образов
## Общая структура каталогов
- Вместо каталога `org` предлагается использовать каталог `branch`
- Каталог `branch` содержит подкаталога бранчей (платформ):
* `sisyphus`;
* `p10`;
* `c10f1`;
* `c10f2`;
* ...
Подкаталоги бранчей содержат дерево групп образов.
Корневая группа `base` содержит образы, которые тегируются по дате создания.
Остальные группы тегируются по версии основного ПО, входящего в состав образа.
Каталог группы может содержать yml-файл `images.yml` описания группы.
Пример дерева описания образов:
<pre>
branch/sisyphus/
├── apache
├── base
│   ├── alt
│   ├── buildpack
│   │   ├── buildpack-deps-curl
│   │   └── buildpack-deps-scm
│   ├── devel
│   ├── distroless
│   │   ├── distroless-base
│   │   ├── distroless-builder
│   │   ├── distroless-devel
│   │   ├── distroless-gotop
│   │   ├── distroless-static
│   │   └── distroless-true
│   ├── systemd
│   └── unit
├── cert-manager
│   ├── cert-manager-cainjector
│   ├── cert-manager-controller
│   └── cert-manager-webhook
├── cni
│   └── flannel
│   ├── flannel
│   └── flannel-cni-plugin
├── gitea
├── k8s
│   ├── coredns
│   ├── deckhouse
│   │   ├── coredns
│   │   ├── etcd
│   │   ├── kube-apiserver
│   │   ├── kube-controller-manager
│   │   ├── kube-proxy
│   │   ├── kube-scheduler
│   │   └── pause
│   ├── etcd
│   ├── kube-apiserver
│   ├── kube-controller-manager
│   ├── kube-proxy
│   ├── kube-scheduler
│   └── pause
├── nginx
├── prometheus
├── python
├── registry
├── ruby
└── trivy
└── trivy-node-collector
</pre>
Конечный каталог дерева содержит файлы:
- **`Dockerfile`** - файл для сборки образа;
- **`image.yml`** - файл описания метаданных для образа.
Кроме этого конечный каталог может содержать файлы и каталоги, которые помещаются в образ командами `COPY` и `ADD`.
Все вышележащие до каталога конкретного бранча (`sisyphus`, `p10`, `c10f1`, `c10f2`, ...) описывают группу (возможно пустую), в которую входит образ.
Имя образа формируется как тропа дерева каталогов.
Например:
- `sisyphus/apache`
- `sisyphus/k8s/kube-apiserver`
Имя тега берется либо из файла `image.yml` описания образа, либо из файла описания группы `images.yml`.
## Конечный каталог описания образа
### Dockerfile
Предлагается заменить шаблон `Dockerfile.template` заменить на нативный `Dockerfile`.
Все параметры, подставляемые функцией `render_dockerfiles` скрипта
[/build.py](https://gitea.basealt.ru/alt/image-forge/src/branch/feature-new-layout/build.py#L249)
заменяются на аргументы (`ARG`), инициализируемые непосредственно в `Dockerfile`или передаваемые (с заиещением) при сборко образа параметрами `--build-arg="<ARG>=<VALUE>"`.
За исключением шаблона `{{ install_pakages("<пакет>" ...) }}`
Предлагается во все базовые дистрибутивы включить `shell-скрипт` `alt_install_pakages`, выполняющий функции аналогичные
python-функции [install_pakages](https://gitea.basealt.ru/alt/image-forge/src/branch/feature-new-layout/build.py#L250).
Шаблон `{{ install_pakages("<пакет>" ...) }}` заменяется в `Dockerfile` оператором:
```
RUN alt_install_pakages <пакет> ...
```
Пример файла образа `sisyphus/k8s/kube-apiserver`:
<pre>
ARG BRANCH REGISTRY=gitea.basealt.ru ALT_IMAGE=base/alt:$BRANCH MAINTAINER=alt-cloud ALT_TESTSCRIPT=/bin/true
FROM $REGISTRY/$ALT_IMAGE:$BRANCH
MAINTAINER $MAINTAINER
LABEL org.altlinux.testscript=$ALT_TESTSCRIPT
RUN alt_install_pakages kubernetes-master
ENTRYPOINT ["/usr/bin/kube-apiserver"]
</pre>
### Файл image.yml описания метаданных для образа
В настоящий момент он содержит (жирным шрифтом обязательные элементы):
* **`image.maintainer`** - E-mail майнтейнера для создания и проверки электронной подписи образа;
* `image.alias` - список возможных алиасов образа;
* `image.tag` - тер образа (может при сборке перекрываться тегом, взятым из вышележащего файла `images.yml` описания группы)
* `image.labels` - список дополнительных метов образа, в частности:
- `org.altlinux.testscript` - shell код для тестоиования образа при его запуске в режиме `podman ... -it --- <образ>`
Пример файла образа `sisyphus/k8s/kube-apiserver`:
<pre>
version: 1.0
image:
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
labels:
org.altlinux.testscript: /bin/true
maintainer: stepchenkoas@basealt.ru
</pre>
## Каталог группы
### Файл `images.yml` описания метаданных группы

View File

View File

View File

View File

View File

View File

View File

View File

View File

@ -0,0 +1,403 @@
version: 1.0
imageSet:
- version: v1.26.0
cert-manager-cainjector:
tag: v1.26.0
cert-manager-controller:
tag: v1.26.0
cert-manager-webhook:
tag: v1.26.0
- version: v1.26.1
cert-manager-cainjector:
tag: v1.26.1
cert-manager-controller:
tag: v1.26.1
cert-manager-webhook:
tag: v1.26.1
- version: v1.26.2
cert-manager-cainjector:
tag: v1.26.2
cert-manager-controller:
tag: v1.26.2
cert-manager-webhook:
tag: v1.26.2
- version: v1.26.3
cert-manager-cainjector:
tag: v1.26.3
cert-manager-controller:
tag: v1.26.3
cert-manager-webhook:
tag: v1.26.3
- version: v1.26.4
cert-manager-cainjector:
tag: v1.26.4
cert-manager-controller:
tag: v1.26.4
cert-manager-webhook:
tag: v1.26.4
- version: v1.26.5
cert-manager-cainjector:
tag: v1.26.5
cert-manager-controller:
tag: v1.26.5
cert-manager-webhook:
tag: v1.26.5
- version: v1.26.6
cert-manager-cainjector:
tag: v1.26.6
cert-manager-controller:
tag: v1.26.6
cert-manager-webhook:
tag: v1.26.6
- version: v1.26.7
cert-manager-cainjector:
tag: v1.26.7
cert-manager-controller:
tag: v1.26.7
cert-manager-webhook:
tag: v1.26.7
- version: v1.26.8
cert-manager-cainjector:
tag: v1.26.8
cert-manager-controller:
tag: v1.26.8
cert-manager-webhook:
tag: v1.26.8
- version: v1.26.9
cert-manager-cainjector:
tag: v1.26.9
cert-manager-controller:
tag: v1.26.9
cert-manager-webhook:
tag: v1.26.9
- version: v1.26.10
cert-manager-cainjector:
tag: v1.26.10
cert-manager-controller:
tag: v1.26.10
cert-manager-webhook:
tag: v1.26.10
- version: v1.26.11
cert-manager-cainjector:
tag: v1.26.11
cert-manager-controller:
tag: v1.26.11
cert-manager-webhook:
tag: v1.26.11
- version: v1.26.12
cert-manager-cainjector:
tag: v1.26.12
cert-manager-controller:
tag: v1.26.12
cert-manager-webhook:
tag: v1.26.12
- version: v1.26.13
cert-manager-cainjector:
tag: v1.26.13
cert-manager-controller:
tag: v1.26.13
cert-manager-webhook:
tag: v1.26.13
- version: v1.26.14
cert-manager-cainjector:
tag: v1.26.14
cert-manager-controller:
tag: v1.26.14
cert-manager-webhook:
tag: v1.26.14
- version: v1.26.15
cert-manager-cainjector:
tag: v1.26.15
cert-manager-controller:
tag: v1.26.15
cert-manager-webhook:
tag: v1.26.15
- version: v1.27.0
cert-manager-cainjector:
tag: v1.27.0
cert-manager-controller:
tag: v1.27.0
cert-manager-webhook:
tag: v1.27.0
- version: v1.27.1
cert-manager-cainjector:
tag: v1.27.1
cert-manager-controller:
tag: v1.27.1
cert-manager-webhook:
tag: v1.27.1
- version: v1.27.2
cert-manager-cainjector:
tag: v1.27.2
cert-manager-controller:
tag: v1.27.2
cert-manager-webhook:
tag: v1.27.2
- version: v1.27.3
cert-manager-cainjector:
tag: v1.27.3
cert-manager-controller:
tag: v1.27.3
cert-manager-webhook:
tag: v1.27.3
- version: v1.27.4
cert-manager-cainjector:
tag: v1.27.4
cert-manager-controller:
tag: v1.27.4
cert-manager-webhook:
tag: v1.27.4
- version: v1.27.5
cert-manager-cainjector:
tag: v1.27.5
cert-manager-controller:
tag: v1.27.5
cert-manager-webhook:
tag: v1.27.5
- version: v1.27.6
cert-manager-cainjector:
tag: v1.27.6
cert-manager-controller:
tag: v1.27.6
cert-manager-webhook:
tag: v1.27.6
- version: v1.27.7
cert-manager-cainjector:
tag: v1.27.7
cert-manager-controller:
tag: v1.27.7
cert-manager-webhook:
tag: v1.27.7
- version: v1.27.8
cert-manager-cainjector:
tag: v1.27.8
cert-manager-controller:
tag: v1.27.8
cert-manager-webhook:
tag: v1.27.8
- version: v1.27.9
cert-manager-cainjector:
tag: v1.27.9
cert-manager-controller:
tag: v1.27.9
cert-manager-webhook:
tag: v1.27.9
- version: v1.27.10
cert-manager-cainjector:
tag: v1.27.10
cert-manager-controller:
tag: v1.27.10
cert-manager-webhook:
tag: v1.27.10
- version: v1.27.11
cert-manager-cainjector:
tag: v1.27.11
cert-manager-controller:
tag: v1.27.11
cert-manager-webhook:
tag: v1.27.11
- version: v1.27.12
cert-manager-cainjector:
tag: v1.27.12
cert-manager-controller:
tag: v1.27.12
cert-manager-webhook:
tag: v1.27.12
- version: v1.27.13
cert-manager-cainjector:
tag: v1.27.13
cert-manager-controller:
tag: v1.27.13
cert-manager-webhook:
tag: v1.27.13
- version: v1.27.14
cert-manager-cainjector:
tag: v1.27.14
cert-manager-controller:
tag: v1.27.14
cert-manager-webhook:
tag: v1.27.14
- version: v1.28.0
cert-manager-cainjector:
tag: v1.28.0
cert-manager-controller:
tag: v1.28.0
cert-manager-webhook:
tag: v1.28.0
- version: v1.28.1
cert-manager-cainjector:
tag: v1.28.1
cert-manager-controller:
tag: v1.28.1
cert-manager-webhook:
tag: v1.28.1
- version: v1.28.2
cert-manager-cainjector:
tag: v1.28.2
cert-manager-controller:
tag: v1.28.2
cert-manager-webhook:
tag: v1.28.2
- version: v1.28.3
cert-manager-cainjector:
tag: v1.28.3
cert-manager-controller:
tag: v1.28.3
cert-manager-webhook:
tag: v1.28.3
- version: v1.28.4
cert-manager-cainjector:
tag: v1.28.4
cert-manager-controller:
tag: v1.28.4
cert-manager-webhook:
tag: v1.28.4
- version: v1.28.5
cert-manager-cainjector:
tag: v1.28.5
cert-manager-controller:
tag: v1.28.5
cert-manager-webhook:
tag: v1.28.5
- version: v1.28.6
cert-manager-cainjector:
tag: v1.28.6
cert-manager-controller:
tag: v1.28.6
cert-manager-webhook:
tag: v1.28.6
- version: v1.28.7
cert-manager-cainjector:
tag: v1.28.7
cert-manager-controller:
tag: v1.28.7
cert-manager-webhook:
tag: v1.28.7
- version: v1.28.8
cert-manager-cainjector:
tag: v1.28.8
cert-manager-controller:
tag: v1.28.8
cert-manager-webhook:
tag: v1.28.8
- version: v1.28.9
cert-manager-cainjector:
tag: v1.28.9
cert-manager-controller:
tag: v1.28.9
cert-manager-webhook:
tag: v1.28.9
- version: v1.28.10
cert-manager-cainjector:
tag: v1.28.10
cert-manager-controller:
tag: v1.28.10
cert-manager-webhook:
tag: v1.28.10
- version: v1.29.0
cert-manager-cainjector:
tag: v1.29.0
cert-manager-controller:
tag: v1.29.0
cert-manager-webhook:
tag: v1.29.0
- version: v1.29.1
cert-manager-cainjector:
tag: v1.29.1
cert-manager-controller:
tag: v1.29.1
cert-manager-webhook:
tag: v1.29.1
- version: v1.29.2
cert-manager-cainjector:
tag: v1.29.2
cert-manager-controller:
tag: v1.29.2
cert-manager-webhook:
tag: v1.29.2
- version: v1.29.3
cert-manager-cainjector:
tag: v1.29.3
cert-manager-controller:
tag: v1.29.3
cert-manager-webhook:
tag: v1.29.3
- version: v1.29.4
cert-manager-cainjector:
tag: v1.29.4
cert-manager-controller:
tag: v1.29.4
cert-manager-webhook:
tag: v1.29.4
- version: v1.29.5
cert-manager-cainjector:
tag: v1.29.5
cert-manager-controller:
tag: v1.29.5
cert-manager-webhook:
tag: v1.29.5
- version: v1.30.0
cert-manager-cainjector:
tag: v1.30.0
cert-manager-controller:
tag: v1.30.0
cert-manager-webhook:
tag: v1.30.0
- version: v1.30.1
cert-manager-cainjector:
tag: v1.30.1
cert-manager-controller:
tag: v1.30.1
cert-manager-webhook:
tag: v1.30.1

View File

@ -0,0 +1,13 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
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"
{{ install_pakages("cni-plugin-flannel") }}
RUN cp /usr/libexec/cni/flannel /flannel

View File

@ -0,0 +1,28 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="flannel"
LABEL org.opencontainers.image.description="Network fabric for containers"
LABEL org.opencontainers.image.source="https://github.com/flannel-io/flannel"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_pakages(
"iproute2",
"net-tools",
"ca-certificates",
"iptables",
"iptables-nft",
"strongswan",
"wireguard-tools",
"flannel",
"wget",
) }}
RUN update-ca-trust
RUN mkdir -p /opt/bin/ && cp /usr/sbin/flanneld /opt/bin/flanneld
RUN cp /usr/libexec/flannel/mk-docker-opts.sh /opt/bin/
ENTRYPOINT ["/opt/bin/flanneld"]

View File

@ -0,0 +1,147 @@
version: 1.0
imageSet:
- version: v0.19.0
flannel:
tag: v0.19.0
'flannel-cni-plugin':
tag: v1.1.0
- version: v0.19.1
flannel:
tag: v0.19.1
'flannel-cni-plugin':
tag: v1.1.0
- version: v0.19.2
flannel:
tag: v0.19.2
'flannel-cni-plugin':
tag: v1.1.0
- version: v0.20.0
flannel:
tag: v0.20.0
'flannel-cni-plugin':
tag: v1.1.0
- version: v0.20.1
flannel:
tag: v0.20.1
'flannel-cni-plugin':
tag: v1.1.0
- version: v0.20.2
flannel:
tag: v0.20.2
'flannel-cni-plugin':
tag: v1.1.0
- version: v0.21.0
flannel:
tag: v0.21.0
'flannel-cni-plugin':
tag: v1.1.2
- version: v0.21.1
flannel:
tag: v0.21.1
'flannel-cni-plugin':
tag: v1.1.2
- version: v0.21.2
flannel:
tag: v0.21.2
'flannel-cni-plugin':
tag: v1.1.2
- version: v0.21.3
flannel:
tag: v0.21.3
'flannel-cni-plugin':
tag: v1.1.2
- version: v0.21.4
flannel:
tag: v0.21.4
'flannel-cni-plugin':
tag: v1.1.2
- version: v0.21.5
flannel:
tag: v0.21.5
'flannel-cni-plugin':
tag: v1.1.2
- version: v0.22.0
flannel:
tag: v0.22.0
'flannel-cni-plugin':
tag: v1.1.2
- version: v0.22.1
flannel:
tag: v0.22.1
'flannel-cni-plugin':
tag: v1.2.0
- version: v0.22.2
flannel:
tag: v0.22.2
'flannel-cni-plugin':
tag: v1.2.0
- version: v0.22.3
flannel:
tag: v0.22.3
'flannel-cni-plugin':
tag: v1.2.0
- version: v0.23.0
flannel:
tag: v0.23.0
'flannel-cni-plugin':
tag: v1.2.0
- version: v0.24.0
flannel:
tag: v0.24.0
'flannel-cni-plugin':
tag: v1.2.0
- version: v0.24.1
flannel:
tag: v0.24.1
'flannel-cni-plugin':
tag: v1.2.0
- version: v0.24.2
flannel:
tag: v0.24.2
'flannel-cni-plugin':
tag: v1.4.0-flannel1
- version: v0.24.3
flannel:
tag: v0.24.3
'flannel-cni-plugin':
tag: v1.4.0-flannel1
- version: v0.24.4
flannel:
tag: v0.24.4
'flannel-cni-plugin':
tag: v1.4.0-flannel1
- version: v0.25.0
flannel:
tag: v0.25.0
'flannel-cni-plugin':
tag: v1.4.0-flannel1
- version: v0.25.1
flannel:
tag: v0.25.1
'flannel-cni-plugin':
tag: v1.4.0-flannel1

1
branch/sisyphus/k8s/coredns Symbolic link
View File

@ -0,0 +1 @@
../target/coredns/

1
branch/sisyphus/k8s/etcd Symbolic link
View File

@ -0,0 +1 @@
../target/etcd/

View File

@ -0,0 +1,803 @@
version: 1.0
imageSet:
- version: v1.26.0
kube-apiserver:
tag: v1.26.0
kube-controllermanager:
tag: v1.26.0
kube-proxy:
tag: v1.26.0
kube-scheduler:
tag: v1.26.0
coredns:
tag: v1.9.3
etcd:
tag: 3.5.6-0
pause:
tag: 3.9
- version: v1.26.1
kube-apiserver:
tag: v1.26.1
kube-controllermanager:
tag: v1.26.1
kube-proxy:
tag: v1.26.1
kube-scheduler:
tag: v1.26.1
coredns:
tag: v1.9.3
etcd:
tag: 3.5.6-0
pause:
tag: 3.9
- version: v1.26.2
kube-apiserver:
tag: v1.26.2
kube-controllermanager:
tag: v1.26.2
kube-proxy:
tag: v1.26.2
kube-scheduler:
tag: v1.26.2
coredns:
tag: v1.9.3
etcd:
tag: 3.5.6-0
pause:
tag: 3.9
- version: v1.26.3
kube-apiserver:
tag: v1.26.3
kube-controllermanager:
tag: v1.26.3
kube-proxy:
tag: v1.26.3
kube-scheduler:
tag: v1.26.3
coredns:
tag: v1.9.3
etcd:
tag: 3.5.6-0
pause:
tag: 3.9
- version: v1.26.4
kube-apiserver:
tag: v1.26.4
kube-controllermanager:
tag: v1.26.4
kube-proxy:
tag: v1.26.4
kube-scheduler:
tag: v1.26.4
coredns:
tag: v1.9.3
etcd:
tag: 3.5.6-0
pause:
tag: 3.9
- version: v1.26.5
kube-apiserver:
tag: v1.26.5
kube-controllermanager:
tag: v1.26.5
kube-proxy:
tag: v1.26.5
kube-scheduler:
tag: v1.26.5
coredns:
tag: v1.9.3
etcd:
tag: 3.5.6-0
pause:
tag: 3.9
- version: v1.26.6
kube-apiserver:
tag: v1.26.6
kube-controllermanager:
tag: v1.26.6
kube-proxy:
tag: v1.26.6
kube-scheduler:
tag: v1.26.6
coredns:
tag: v1.9.3
etcd:
tag: 3.5.6-0
pause:
tag: 3.9
- version: v1.26.7
kube-apiserver:
tag: v1.26.7
kube-controllermanager:
tag: v1.26.7
kube-proxy:
tag: v1.26.7
kube-scheduler:
tag: v1.26.7
coredns:
tag: v1.9.3
etcd:
tag: 3.5.6-0
pause:
tag: 3.9
- version: v1.26.8
kube-apiserver:
tag: v1.26.8
kube-controllermanager:
tag: v1.26.8
kube-proxy:
tag: v1.26.8
kube-scheduler:
tag: v1.26.8
coredns:
tag: v1.9.3
etcd:
tag: 3.5.6-0
pause:
tag: 3.9
- version: v1.26.9
kube-apiserver:
tag: v1.26.9
kube-controllermanager:
tag: v1.26.9
kube-proxy:
tag: v1.26.9
kube-scheduler:
tag: v1.26.9
coredns:
tag: v1.9.3
etcd:
tag: 3.5.6-0
pause:
tag: 3.9
- version: v1.26.10
kube-apiserver:
tag: v1.26.10
kube-controllermanager:
tag: v1.26.10
kube-proxy:
tag: v1.26.10
kube-scheduler:
tag: v1.26.10
coredns:
tag: v1.9.3
etcd:
tag: 3.5.9-0
pause:
tag: 3.9
- version: v1.26.11
kube-apiserver:
tag: v1.26.11
kube-controllermanager:
tag: v1.26.11
kube-proxy:
tag: v1.26.11
kube-scheduler:
tag: v1.26.11
coredns:
tag: v1.9.3
etcd:
tag: 3.5.9-0
pause:
tag: 3.9
- version: v1.26.12
kube-apiserver:
tag: v1.26.12
kube-controllermanager:
tag: v1.26.12
kube-proxy:
tag: v1.26.12
kube-scheduler:
tag: v1.26.12
coredns:
tag: v1.9.3
etcd:
tag: 3.5.9-0
pause:
tag: 3.9
- version: v1.26.13
kube-apiserver:
tag: v1.26.13
kube-controllermanager:
tag: v1.26.13
kube-proxy:
tag: v1.26.13
kube-scheduler:
tag: v1.26.13
coredns:
tag: v1.9.3
etcd:
tag: 3.5.10-0
pause:
tag: 3.9
- version: v1.26.14
kube-apiserver:
tag: v1.26.14
kube-controllermanager:
tag: v1.26.14
kube-proxy:
tag: v1.26.14
kube-scheduler:
tag: v1.26.14
coredns:
tag: v1.9.3
etcd:
tag: 3.5.10-0
pause:
tag: 3.9
- version: v1.26.15
kube-apiserver:
tag: v1.26.15
kube-controllermanager:
tag: v1.26.15
kube-proxy:
tag: v1.26.15
kube-scheduler:
tag: v1.26.15
coredns:
tag: v1.9.3
etcd:
tag: 3.5.10-0
pause:
tag: 3.9
- version: v1.27.0
kube-apiserver:
tag: v1.27.0
kube-controllermanager:
tag: v1.27.0
kube-proxy:
tag: v1.27.0
kube-scheduler:
tag: v1.27.0
coredns:
tag: v1.10.1
etcd:
tag: 3.5.7-0
pause:
tag: 3.9
- version: v1.27.1
kube-apiserver:
tag: v1.27.1
kube-controllermanager:
tag: v1.27.1
kube-proxy:
tag: v1.27.1
kube-scheduler:
tag: v1.27.1
coredns:
tag: v1.10.1
etcd:
tag: 3.5.7-0
pause:
tag: 3.9
- version: v1.27.2
kube-apiserver:
tag: v1.27.2
kube-controllermanager:
tag: v1.27.2
kube-proxy:
tag: v1.27.2
kube-scheduler:
tag: v1.27.2
coredns:
tag: v1.10.1
etcd:
tag: 3.5.7-0
pause:
tag: 3.9
- version: v1.27.3
kube-apiserver:
tag: v1.27.3
kube-controllermanager:
tag: v1.27.3
kube-proxy:
tag: v1.27.3
kube-scheduler:
tag: v1.27.3
coredns:
tag: v1.10.1
etcd:
tag: 3.5.7-0
pause:
tag: 3.9
- version: v1.27.4
kube-apiserver:
tag: v1.27.4
kube-controllermanager:
tag: v1.27.4
kube-proxy:
tag: v1.27.4
kube-scheduler:
tag: v1.27.4
coredns:
tag: v1.10.1
etcd:
tag: 3.5.7-0
pause:
tag: 3.9
- version: v1.27.5
kube-apiserver:
tag: v1.27.5
kube-controllermanager:
tag: v1.27.5
kube-proxy:
tag: v1.27.5
kube-scheduler:
tag: v1.27.5
coredns:
tag: v1.10.1
etcd:
tag: 3.5.7-0
pause:
tag: 3.9
- version: v1.27.6
kube-apiserver:
tag: v1.27.6
kube-controllermanager:
tag: v1.27.6
kube-proxy:
tag: v1.27.6
kube-scheduler:
tag: v1.27.6
coredns:
tag: v1.10.1
etcd:
tag: 3.5.7-0
pause:
tag: 3.9
- version: v1.27.7
kube-apiserver:
tag: v1.27.7
kube-controllermanager:
tag: v1.27.7
kube-proxy:
tag: v1.27.7
kube-scheduler:
tag: v1.27.7
coredns:
tag: v1.10.1
etcd:
tag: 3.5.9-0
pause:
tag: 3.9
- version: v1.27.8
kube-apiserver:
tag: v1.27.8
kube-controllermanager:
tag: v1.27.8
kube-proxy:
tag: v1.27.8
kube-scheduler:
tag: v1.27.8
coredns:
tag: v1.10.1
etcd:
tag: 3.5.9-0
pause:
tag: 3.9
- version: v1.27.9
kube-apiserver:
tag: v1.27.9
kube-controllermanager:
tag: v1.27.9
kube-proxy:
tag: v1.27.9
kube-scheduler:
tag: v1.27.9
coredns:
tag: v1.10.1
etcd:
tag: 3.5.9-0
pause:
tag: 3.9
- version: v1.27.10
kube-apiserver:
tag: v1.27.10
kube-controllermanager:
tag: v1.27.10
kube-proxy:
tag: v1.27.10
kube-scheduler:
tag: v1.27.10
coredns:
tag: v1.10.1
etcd:
tag: 3.5.10-0
pause:
tag: 3.9
- version: v1.27.11
kube-apiserver:
tag: v1.27.11
kube-controllermanager:
tag: v1.27.11
kube-proxy:
tag: v1.27.11
kube-scheduler:
tag: v1.27.11
coredns:
tag: v1.10.1
etcd:
tag: 3.5.10-0
pause:
tag: 3.9
- version: v1.27.12
kube-apiserver:
tag: v1.27.12
kube-controllermanager:
tag: v1.27.12
kube-proxy:
tag: v1.27.12
kube-scheduler:
tag: v1.27.12
coredns:
tag: v1.10.1
etcd:
tag: 3.5.12-0
pause:
tag: 3.9
- version: v1.27.13
kube-apiserver:
tag: v1.27.13
kube-controllermanager:
tag: v1.27.13
kube-proxy:
tag: v1.27.13
kube-scheduler:
tag: v1.27.13
coredns:
tag: v1.10.1
etcd:
tag: 3.5.12-0
pause:
tag: 3.9
- version: v1.27.14
kube-apiserver:
tag: v1.27.14
kube-controllermanager:
tag: v1.27.14
kube-proxy:
tag: v1.27.14
kube-scheduler:
tag: v1.27.14
coredns:
tag: v1.10.1
etcd:
tag: 3.5.12-0
pause:
tag: 3.9
- version: v1.28.0
kube-apiserver:
tag: v1.28.0
kube-controllermanager:
tag: v1.28.0
kube-proxy:
tag: v1.28.0
kube-scheduler:
tag: v1.28.0
coredns:
tag: v1.10.1
etcd:
tag: 3.5.9-0
pause:
tag: 3.9
- version: v1.28.1
kube-apiserver:
tag: v1.28.1
kube-controllermanager:
tag: v1.28.1
kube-proxy:
tag: v1.28.1
kube-scheduler:
tag: v1.28.1
coredns:
tag: v1.10.1
etcd:
tag: 3.5.9-0
pause:
tag: 3.9
- version: v1.28.2
kube-apiserver:
tag: v1.28.2
kube-controllermanager:
tag: v1.28.2
kube-proxy:
tag: v1.28.2
kube-scheduler:
tag: v1.28.2
coredns:
tag: v1.10.1
etcd:
tag: 3.5.9-0
pause:
tag: 3.9
- version: v1.28.3
kube-apiserver:
tag: v1.28.3
kube-controllermanager:
tag: v1.28.3
kube-proxy:
tag: v1.28.3
kube-scheduler:
tag: v1.28.3
coredns:
tag: v1.10.1
etcd:
tag: 3.5.9-0
pause:
tag: 3.9
- version: v1.28.4
kube-apiserver:
tag: v1.28.4
kube-controllermanager:
tag: v1.28.4
kube-proxy:
tag: v1.28.4
kube-scheduler:
tag: v1.28.4
coredns:
tag: v1.10.1
etcd:
tag: 3.5.9-0
pause:
tag: 3.9
- version: v1.28.5
kube-apiserver:
tag: v1.28.5
kube-controllermanager:
tag: v1.28.5
kube-proxy:
tag: v1.28.5
kube-scheduler:
tag: v1.28.5
coredns:
tag: v1.10.1
etcd:
tag: 3.5.9-0
pause:
tag: 3.9
- version: v1.28.6
kube-apiserver:
tag: v1.28.6
kube-controllermanager:
tag: v1.28.6
kube-proxy:
tag: v1.28.6
kube-scheduler:
tag: v1.28.6
coredns:
tag: v1.10.1
etcd:
tag: 3.5.10-0
pause:
tag: 3.9
- version: v1.28.7
kube-apiserver:
tag: v1.28.7
kube-controllermanager:
tag: v1.28.7
kube-proxy:
tag: v1.28.7
kube-scheduler:
tag: v1.28.7
coredns:
tag: v1.10.1
etcd:
tag: 3.5.10-0
pause:
tag: 3.9
- version: v1.28.8
kube-apiserver:
tag: v1.28.8
kube-controllermanager:
tag: v1.28.8
kube-proxy:
tag: v1.28.8
kube-scheduler:
tag: v1.28.8
coredns:
tag: v1.10.1
etcd:
tag: 3.5.12-0
pause:
tag: 3.9
- version: v1.28.9
kube-apiserver:
tag: v1.28.9
kube-controllermanager:
tag: v1.28.9
kube-proxy:
tag: v1.28.9
kube-scheduler:
tag: v1.28.9
coredns:
tag: v1.10.1
etcd:
tag: 3.5.12-0
pause:
tag: 3.9
- version: v1.28.10
kube-apiserver:
tag: v1.28.10
kube-controllermanager:
tag: v1.28.10
kube-proxy:
tag: v1.28.10
kube-scheduler:
tag: v1.28.10
coredns:
tag: v1.10.1
etcd:
tag: 3.5.12-0
pause:
tag: 3.9
- version: v1.29.0
kube-apiserver:
tag: v1.29.0
kube-controllermanager:
tag: v1.29.0
kube-proxy:
tag: v1.29.0
kube-scheduler:
tag: v1.29.0
coredns:
tag: v1.11.1
etcd:
tag: 3.5.10-0
pause:
tag: 3.9
- version: v1.29.1
kube-apiserver:
tag: v1.29.1
kube-controllermanager:
tag: v1.29.1
kube-proxy:
tag: v1.29.1
kube-scheduler:
tag: v1.29.1
coredns:
tag: v1.11.1
etcd:
tag: 3.5.10-0
pause:
tag: 3.9
- version: v1.29.2
kube-apiserver:
tag: v1.29.2
kube-controllermanager:
tag: v1.29.2
kube-proxy:
tag: v1.29.2
kube-scheduler:
tag: v1.29.2
coredns:
tag: v1.11.1
etcd:
tag: 3.5.10-0
pause:
tag: 3.9
- version: v1.29.3
kube-apiserver:
tag: v1.29.3
kube-controllermanager:
tag: v1.29.3
kube-proxy:
tag: v1.29.3
kube-scheduler:
tag: v1.29.3
coredns:
tag: v1.11.1
etcd:
tag: 3.5.12-0
pause:
tag: 3.9
- version: v1.29.4
kube-apiserver:
tag: v1.29.4
kube-controllermanager:
tag: v1.29.4
kube-proxy:
tag: v1.29.4
kube-scheduler:
tag: v1.29.4
coredns:
tag: v1.11.1
etcd:
tag: 3.5.12-0
pause:
tag: 3.9
- version: v1.29.5
kube-apiserver:
tag: v1.29.5
kube-controllermanager:
tag: v1.29.5
kube-proxy:
tag: v1.29.5
kube-scheduler:
tag: v1.29.5
coredns:
tag: v1.11.1
etcd:
tag: 3.5.12-0
pause:
tag: 3.9
- version: v1.30.0
kube-apiserver:
tag: v1.30.0
kube-controllermanager:
tag: v1.30.0
kube-proxy:
tag: v1.30.0
kube-scheduler:
tag: v1.30.0
coredns:
tag: v1.11.1
etcd:
tag: 3.5.12-0
pause:
tag: 3.9
- version: v1.30.1
kube-apiserver:
tag: v1.30.1
kube-controllermanager:
tag: v1.30.1
kube-proxy:
tag: v1.30.1
kube-scheduler:
tag: v1.30.1
coredns:
tag: v1.11.1
etcd:
tag: 3.5.12-0
pause:
tag: 3.9

View File

@ -0,0 +1,11 @@
ARG BRANCH REGISTRY=gitea.basealt.ru ALT_IMAGE=base/alt:$BRANCH MAINTAINER=alt-cloud ALT_TESTSCRIPT=/bin/true
FROM $REGISTRY/$ALT_IMAGE:$BRANCH
MAINTAINER $MAINTAINER
LABEL org.altlinux.testscript=$ALT_TESTSCRIPT
RUN alt_install_pakages kubernetes-master
ENTRYPOINT ["/usr/bin/kube-apiserver"]

View File

@ -0,0 +1,7 @@
version: 1.0
image:
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
labels:
org.altlinux.testscript: /bin/true
maintainer: stepchenkoas@basealt.ru

View File

@ -0,0 +1,9 @@
ARG BRANCH REGISTRY=gitea.basealt.ru ALT_IMAGE=base/alt:$BRANCH MAINTAINER=alt-cloud ALT_TESTSCRIPT=/bin/true
FROM $REGISTRY/$ALT_IMAGE:$BRANCH
MAINTAINER $MAINTAINER
RUN alt_install_pakages kubernetes-master
ENTRYPOINT ["/usr/bin/kube-controller-manager"]

View File

@ -0,0 +1,7 @@
version: 1.0
image:
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
labels:
org.altlinux.testscript: /bin/true
maintainer: stepchenkoas@basealt.ru

View File

@ -0,0 +1,11 @@
ARG BRANCH REGISTRY=gitea.basealt.ru ALT_IMAGE=base/alt:$BRANCH MAINTAINER=alt-cloud ALT_TESTSCRIPT=/bin/true
FROM $REGISTRY/$ALT_IMAGE:$BRANCH
MAINTAINER $MAINTAINER
RUN alt_install_pakages kubernetes-node
RUN ln -s /usr/bin/kube-proxy /usr/local/bin/kube-proxy
ENTRYPOINT ["/usr/bin/kube-proxy"]

View File

@ -0,0 +1,7 @@
version: 1.0
image:
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
labels:
org.altlinux.testscript: /bin/true
maintainer: stepchenkoas@basealt.ru

View File

@ -0,0 +1,9 @@
ARG BRANCH REGISTRY=gitea.basealt.ru ALT_IMAGE=base/alt:$BRANCH MAINTAINER=alt-cloud ALT_TESTSCRIPT=/bin/true
FROM $REGISTRY/$ALT_IMAGE:$BRANCH
MAINTAINER $MAINTAINER
RUN alt_install_pakages kubernetes-master
ENTRYPOINT ["/usr/bin/kube-scheduler"]

View File

@ -0,0 +1,7 @@
version: 1.0
image:
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
labels:
org.altlinux.testscript: /bin/true
maintainer: stepchenkoas@basealt.ru

View File

@ -0,0 +1,13 @@
ARG BRANCH REGISTRY=gitea.basealt.ru ALT_IMAGE=base/alt:$BRANCH MAINTAINER=alt-cloud ALT_TESTSCRIPT=/bin/true
FROM $REGISTRY/$ALT_IMAGE:$BRANCH as installer
RUN alt_install_pakages kubernetes-pause
FROM scratch
MAINTAINER $MAINTAINER
COPY --from=installer /usr/bin/kubernetes-pause /pause
CMD ["/pause"]

View File

@ -0,0 +1,7 @@
version: 1.0
image:
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
labels:
org.altlinux.testscript: /bin/true
maintainer: stepchenkoas@basealt.ru

View File

@ -0,0 +1,17 @@
ARG BRANCH REGISTRY=gitea.basealt.ru ALT_IMAGE=base/alt:$BRANCH MAINTAINER=alt-cloud ALT_TESTSCRIPT=/bin/true
FROM $REGISTRY/$ALT_IMAGE:$BRANCH
MAINTAINER $MAINTAINER
LABEL org.opencontainers.image.title="apache2"
LABEL org.opencontainers.image.description="The most widely used Web server on the Internet"
LABEL org.opencontainers.image.source="http://httpd.apache.org"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
RUN alt_install_pakages apache2
EXPOSE 80
CMD ["/usr/sbin/httpd2", "-D", "NO_DETACH", "-k", "start"]

View File

@ -0,0 +1,16 @@
ARG BRANCH REGISTRY=gitea.basealt.ru ALT_IMAGE=base/alt:$BRANCH MAINTAINER=alt-cloud ALT_TESTSCRIPT=/bin/true
FROM $REGISTRY/$ALT_IMAGE:$BRANCH
MAINTAINER $MAINTAINER
LABEL org.opencontainers.image.title="coredns"
LABEL org.opencontainers.image.description="CoreDNS is a DNS server that chains plugins"
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"
LABEL org.altlinux.testscript=$ALT_TESTSCRIPT
RUN alt_install_pakages coredns
ENTRYPOINT ["/usr/bin/coredns"]

View File

@ -0,0 +1,7 @@
version: 1.0
image:
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
labels:
org.altlinux.testscript: /bin/true
maintainer: stepchenkoas@basealt.ru

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

@ -0,0 +1,17 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="trivy-node-collector"
LABEL org.opencontainers.image.description="Open source collector who collect Node information (fs and process data) and output in a table/json format"
LABEL org.opencontainers.image.source="https://github.com/aquasecurity/k8s-node-collector"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_pakages(
"k8s-trivy-node-collector"
) }}
RUN ln -s /usr/bin/k8s-trivy-node-collector /usr/bin/node-collector
ENTRYPOINT ["node-collector"]

View File

View File

351
build.py
View File

@ -3,77 +3,28 @@
import argparse import argparse
import functools import functools
import json import json
import logging
import os
import re import re
import subprocess import subprocess
import textwrap import textwrap
from datetime import datetime
from dataclasses import dataclass
from graphlib import TopologicalSorter from graphlib import TopologicalSorter
from http import HTTPStatus
from pathlib import Path from pathlib import Path
from typing import Optional, Union
import requests
import tomli import tomli
import yaml from jinja2 import Template
from jinja2 import Environment, BaseLoader
logger = logging.getLogger(__name__)
ORG_DIR = Path("org") ORG_DIR = Path("org")
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: class Image:
canonical_name: str def __init__(self, canonical_name):
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 self.canonical_name = canonical_name
self.path = ORG_DIR / canonical_name self.path = ORG_DIR / canonical_name
self.base_name = re.sub("^[^/]+/", "", canonical_name) self.base_name = re.sub("^[^/]+/", "", canonical_name)
info_file = self.path / "info.yaml" def __str__(self):
if not info_file.exists(): return (f'Image(canonical_name="{self.canonical_name}", '
self.is_versioned = None f'path="{self.path}", base_name="{self.base_name}")')
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: class Tasks:
@ -98,147 +49,22 @@ 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:
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:
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"]
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: class Tags:
def __init__(self, tags_file: Optional[str], latest: str): def __init__(self, tags_file, latest):
if tags_file is None: if tags_file is None:
self._tags = None self._tags = None
else: else:
self._tags = tomli.loads(Path(tags_file).read_text()) tags_file = Path(tags_file)
self._tags = tomli.loads(tags_file.read_text())
self._latest = latest self._latest = latest
def tags(self, branch: str, image: Image, tasks: Optional[Tasks] = None): def tags(self, branch, image: Image):
if self._tags is None: if self._tags is None:
if image.is_versioned is None: tags = [branch]
tags = [branch]
if branch == self._latest:
tags.append("latest")
elif image.is_versioned and image.source_packages:
package_name = image.source_packages[0]
context_version = ""
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}"
)
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:
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.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 = (
JINJA_ENV.from_string(image.version_template).render(version=version).strip()
)
tags = [version]
tags.append("latest")
else: else:
tags = self._tags[image.canonical_name][branch].copy() tags = self._tags[image.canonical_name][branch].copy()
if branch == self._latest:
tags.append("latest")
return tags return tags
@ -281,10 +107,6 @@ class Distroless:
elif value := dd.get("workingdir"): elif value := dd.get("workingdir"):
self.config_options.append(f"--workingdir={value}") 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 render_arch_branch(self, arch, branch):
def if_arches(arches, value, default=""): def if_arches(arches, value, default=""):
if arch in arches or not arches: if arch in arches or not arches:
@ -331,10 +153,9 @@ class DockerBuilder:
def make_image_re(self): def make_image_re(self):
registry = r"(?P<registry>[\w.:]+)" registry = r"(?P<registry>[\w.:]+)"
organization = r"(?P<organization>\w+)" organization = r"(?P<organization>\w+)"
branch = r"(?P<branch>\w+)"
name = r"(?P<name>[-.\w]+)" name = r"(?P<name>[-.\w]+)"
tag = r"(?P<tag>[\w.]+)" tag = r"(?P<tag>[\w.]+)"
return rf"(:?{registry}/)?(:?{organization}/)?(:?{branch}/)?{name}(:?:{tag})?" return rf"(:?{registry}/)?(:?{organization}/)?{name}(:?:{tag})?"
def make_dockerfile_from_re(self): def make_dockerfile_from_re(self):
image_re = self.make_image_re() image_re = self.make_image_re()
@ -362,7 +183,7 @@ class DockerBuilder:
if overwrite_organization: if overwrite_organization:
self.overwrite_organization = overwrite_organization self.overwrite_organization = overwrite_organization
else: else:
self.overwrite_organization = branch self.overwrite_organization = organization
self.latest = latest self.latest = latest
self.dry_run = dry_run self.dry_run = dry_run
self.images_info = images_info self.images_info = images_info
@ -404,22 +225,21 @@ class DockerBuilder:
self, self,
template: str, template: str,
organization: str, organization: str,
install_packages=None, install_pakages=None,
**kwargs, **kwargs,
) -> str: ) -> str:
if self.registry: if self.registry:
registry = self.registry.rstrip("/") + "/" registry = self.registry.rstrip("/") + "/"
alt_image = "alt" alt_image = "alt/alt"
else: else:
registry = "" registry = ""
alt_image = "alt" alt_image = "alt"
rendered = JINJA_ENV.from_string(template).render( rendered = Template(template).render(
alt_image=alt_image, alt_image=alt_image,
branch=self.branch, branch=self.branch,
install_packages=install_packages, install_pakages=install_pakages,
organization=organization, organization=organization,
registry=registry, registry=registry,
pkg_versions=PKG_VERSIONS,
**kwargs, **kwargs,
) )
@ -427,7 +247,7 @@ class DockerBuilder:
@forall_images(consume_result=True) @forall_images(consume_result=True)
def render_dockerfiles(self, **kwargs): def render_dockerfiles(self, **kwargs):
def install_packages(*names): def install_pakages(*names):
tasks = self.tasks.get(self.branch, kwargs["image"]) tasks = self.tasks.get(self.branch, kwargs["image"])
linux32 = '$([ "$(rpm --eval %_host_cpu)" = i586 ] && echo linux32)' linux32 = '$([ "$(rpm --eval %_host_cpu)" = i586 ] && echo linux32)'
if tasks: if tasks:
@ -453,7 +273,7 @@ class DockerBuilder:
rendered = self.render_template( rendered = self.render_template(
dockerfile_template.read_text(), dockerfile_template.read_text(),
self.overwrite_organization, self.overwrite_organization,
install_packages, install_pakages,
) )
kwargs["dockerfile"].write_text(rendered + "\n") kwargs["dockerfile"].write_text(rendered + "\n")
@ -484,7 +304,7 @@ class DockerBuilder:
from_image = match.groupdict() from_image = match.groupdict()
if from_image["name"] != "scratch": if from_image["name"] != "scratch":
requires.add( requires.add(
f"{self.organization}/{from_image['name']}" f"{from_image['organization']}/{from_image['name']}"
) )
elif distrolessfile.exists(): elif distrolessfile.exists():
requires.add("alt/distroless-builder") requires.add("alt/distroless-builder")
@ -493,7 +313,7 @@ class DockerBuilder:
if match := re.match(self.image_re, from_): if match := re.match(self.image_re, from_):
from_image = match.groupdict() from_image = match.groupdict()
if from_image["name"] != "scratch": if from_image["name"] != "scratch":
requires.add(f"{self.organization}/{from_image['name']}") requires.add(f"{from_image['organization']}/{from_image['name']}")
return (canonical_name, requires) return (canonical_name, requires)
@ -520,14 +340,12 @@ class DockerBuilder:
pre_cmd = ["echo"] pre_cmd = ["echo"]
else: else:
pre_cmd = [] pre_cmd = []
logger.debug("run: %s", pre_cmd + cmd)
subprocess.run(pre_cmd + cmd, *args, **kwargs) subprocess.run(pre_cmd + cmd, *args, **kwargs)
def distroless_build(self, image: Image, arches): def distroless_build(self, image: Image, arches):
def distroless_build_arch(arch, manifest): def distroless_build_arch(arch, manifest):
distroless_builder = self.render_full_tag( distroless_builder = self.render_full_tag(
Image("alt/distroless-builder"), "latest" Image("alt/distroless-builder"), self.branch
) )
distroless = self.distrolesses[image.canonical_name] distroless = self.distrolesses[image.canonical_name]
distroless.render_arch_branch(arch, self.branch) distroless.render_arch_branch(arch, self.branch)
@ -668,7 +486,7 @@ class DockerBuilder:
build_arches = set(arches) - set( build_arches = set(arches) - set(
self.images_info.skip_arches(image.canonical_name) self.images_info.skip_arches(image.canonical_name)
) )
tags = self.tags.tags(self.branch, image, self.tasks) tags = self.tags.tags(self.branch, image)
manifest = self.render_full_tag(image, tags[0]) manifest = self.render_full_tag(image, tags[0])
msg = "Building image {} for {} arches".format( msg = "Building image {} for {} arches".format(
@ -719,7 +537,7 @@ class DockerBuilder:
self.images_info.skip_arches(image.canonical_name) self.images_info.skip_arches(image.canonical_name)
) )
platforms = ",".join([f"linux/{a}" for a in build_arches]) platforms = ",".join([f"linux/{a}" for a in build_arches])
tags = self.tags.tags(self.branch, image, self.tasks) tags = self.tags.tags(self.branch, image)
manifest = self.render_full_tag(image, tags[0]) manifest = self.render_full_tag(image, tags[0])
msg = "Building image {} for {} arches".format( msg = "Building image {} for {} arches".format(
@ -762,12 +580,6 @@ class DockerBuilder:
f"--platform={platforms}", 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) self.run(build_cmd, cwd=image.path)
for tag in tags[1:]: for tag in tags[1:]:
@ -779,7 +591,7 @@ class DockerBuilder:
if self.images_info.skip_branch(image.canonical_name, self.branch): if self.images_info.skip_branch(image.canonical_name, self.branch):
return return
tags = self.tags.tags(self.branch, image, self.tasks) tags = self.tags.tags(self.branch, image)
manifests = [self.render_full_tag(image, t) for t in tags] manifests = [self.render_full_tag(image, t) for t in tags]
for manifest in manifests: for manifest in manifests:
@ -826,14 +638,12 @@ class ImagesInfo:
def parse_args(): def parse_args():
stages = ["build", "remove_dockerfiles", "render_dockerfiles", "push"] stages = ["build", "remove_dockerfiles", "render_dockerfiles", "push"]
arches = ["amd64", "386", "arm64", "loong64", "riscv64"] arches = ["amd64", "386", "arm64", "arm", "ppc64le"]
branches = ["p11", "p10", "sisyphus", "c10f1", "c10f2"] branches = ["p9", "p10", "sisyphus", "c10f1", "c10f2"]
organizations = list(ORG_DIR.iterdir()) organizations = list(ORG_DIR.iterdir())
images = [f"{o.name}/{i.name}" for o in organizations for i in o.iterdir()] images = [f"{o.name}/{i.name}" for o in organizations for i in o.iterdir()]
organizations = [o.name for o in organizations] organizations = [o.name for o in organizations]
log_levels = ["debug", "info", "warning", "error", "critical"]
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
formatter_class=argparse.ArgumentDefaultsHelpFormatter, formatter_class=argparse.ArgumentDefaultsHelpFormatter,
) )
@ -844,8 +654,7 @@ def parse_args():
nargs="+", nargs="+",
default=images, default=images,
choices=images, choices=images,
metavar="IMAGE_NAME", help="list of branches",
help="list of images to build",
) )
images_group.add_argument( images_group.add_argument(
"-o", "-o",
@ -855,14 +664,6 @@ def parse_args():
choices=organizations, choices=organizations,
help="build all images from these organizations", help="build all images from these organizations",
) )
parser.add_argument(
"--skip-images",
nargs="+",
default=[],
choices=images,
metavar="IMAGE_NAME",
help="list of images to skip",
)
parser.add_argument( parser.add_argument(
"-r", "-r",
"--registry", "--registry",
@ -895,20 +696,27 @@ def parse_args():
parser.add_argument( parser.add_argument(
"--sign", "--sign",
) )
parser.add_argument(
"--skip-images",
nargs="+",
default=[],
choices=images,
help="list of skipping images",
)
parser.add_argument( parser.add_argument(
"-a", "-a",
"--arches", "--arches",
nargs="+", nargs="+",
default=arches, default=arches,
choices=arches, choices=arches,
help="build images for these architectures", help="list of arches",
) )
parser.add_argument( parser.add_argument(
"--skip-arches", "--skip-arches",
nargs="+", nargs="+",
default=[], default=[],
choices=arches, choices=arches,
help="list of architectures to skip", help="list of skipping arches",
) )
parser.add_argument( parser.add_argument(
"-b", "-b",
@ -916,57 +724,29 @@ def parse_args():
nargs="+", nargs="+",
default=branches, default=branches,
choices=branches, choices=branches,
help="build images for these branches", help="list of branches",
) )
parser.add_argument( parser.add_argument(
"--skip-branches", "--skip-branches",
nargs="+", nargs="+",
default=[], default=[],
choices=branches, choices=branches,
help="list of branches to skip", help="list of skipping branches",
) )
parser.add_argument( parser.add_argument(
"--stages", "--stages",
nargs="+", nargs="+",
default=stages, default=stages,
choices=stages, choices=stages,
help="list of stages to go through", help="list of stages",
) )
parser.add_argument( parser.add_argument(
"--skip-stages", "--skip-stages",
nargs="+", nargs="+",
default=[], default=[],
choices=stages, choices=stages,
help="list of stages to skip", help="list of skipping stages",
) )
parser.add_argument(
"--package-versions",
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",
)
parser.add_argument(
"--run-workflow",
action="store_true",
help="run gitea workflow to build oci images",
)
parser.add_argument(
"--workflow-repo",
default="stepchenkoas/image-forge",
help="path to gitea repository where to activate workflow",
)
parser.add_argument(
"--workflow-branch",
default="master",
help="branch in gitea repository where to activate workflow",
)
args = parser.parse_args() args = parser.parse_args()
args.stages = set(args.stages) - set(args.skip_stages) args.stages = set(args.stages) - set(args.skip_stages)
@ -978,54 +758,7 @@ def parse_args():
def main(): def main():
global PKG_VERSIONS
args = parse_args() 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)
if args.run_workflow:
gitea_token = os.environ.get("GITEA_TOKEN")
if gitea_token is None:
raise RuntimeError("Gitea authorization token is not provided through the environment variable GITEA_TOKEN")
api_url = f"https://gitea.basealt.ru/api/v1/repos/{args.workflow_repo}/tags"
headers = {
"Accept": "application/json",
"Content-Type": "application/json",
"Authorization": f"token {gitea_token}",
}
tag_name = list(args.branches)[0]
for image in args.images:
tag_name += "_" + image
if PKG_VERSIONS is not None:
if (version := PKG_VERSIONS.get(image)) is not None:
tag_name += "@" + version
logger.debug("tag_name=\"%s\"", tag_name)
json = {
"message": "workflow trigger",
"target": args.workflow_branch,
"tag_name": tag_name,
}
response = requests.post(api_url, json=json, headers=headers)
if response.status_code != HTTPStatus.CREATED:
print(f"{response.status_code=}")
raise RuntimeError(
f"failed to run workflow: {response.text!r}"
)
return
arches = args.arches arches = args.arches
images_info = ImagesInfo() images_info = ImagesInfo()
tags = Tags(args.tags, args.latest) tags = Tags(args.tags, args.latest)

View File

@ -1,14 +1,65 @@
["alt/distroless-toybox"] ["alt/buildpack-deps"]
skip-branches = [ "p10", "c10f2", "c10f1" ] skip-branches = [ "p9" ]
["base/distroless-toybox"] ["alt/distroless-base"]
skip-branches = [ "p10", "c10f2", "c10f1" ] skip-branches = [ "p9" ]
["alt/openjdk21"] ["alt/distroless-builder"]
skip-arches = [ "386" ] skip-branches = [ "p9" ]
["alt/ansible"] ["alt/distroless-devel"]
skip-branches = [ "c10f2", "c10f1", "p10" ] skip-branches = [ "p9" ]
["alt/buildkit"] ["alt/distroless-gotop"]
skip-branches = [ "c10f1", "p10" ] skip-branches = [ "p9" ]
["alt/distroless-static"]
skip-branches = [ "p9" ]
["alt/distroless-true"]
skip-branches = [ "p9" ]
["alt/gitea"]
skip-branches = [ "p9" ]
["alt/node"]
skip-branches = [ "p9" ]
["alt/unit"]
skip-branches = [ "p9" ]
["alt/prometheus"]
skip-branches = [ "p9" ]
["alt/registry"]
skip-branches = [ "p9" ]
["k8s/cert-manager-cainjector"]
skip-branches = [ "p9" ]
["k8s/cert-manager-controller"]
skip-branches = [ "p9" ]
["k8s/cert-manager-webhook"]
skip-branches = [ "p9" ]
["k8s/coredns"]
skip-branches = [ "p9" ]
["k8s/etcd"]
skip-branches = [ "p9" ]
["k8s/kube-apiserver"]
skip-branches = [ "p9" ]
["k8s/kube-controller-manager"]
skip-branches = [ "p9" ]
["k8s/kube-proxy"]
skip-branches = [ "p9" ]
["k8s/kube-scheduler"]
skip-branches = [ "p9" ]
["k8s/pause"]
skip-branches = [ "p9" ]

View File

@ -1,17 +0,0 @@
FROM {{ registry }}{{ branch }}/node:latest
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="ansible"
LABEL org.opencontainers.image.description="A radically simple IT automation system"
LABEL org.opencontainers.image.source="http://www.ansible.com"
LABEL org.opencontainers.image.licenses="GPL-3.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages(
"ansible-vim",
"ansible-core",
"ansible-lint"
) }}
WORKDIR /etc/ansible/playbooks

View File

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

View File

@ -1 +0,0 @@
ansible --version

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest FROM {{ registry }}{{ alt_image }}:{{ branch }}
MAINTAINER alt-cloud MAINTAINER alt-cloud
@ -8,7 +8,7 @@ LABEL org.opencontainers.image.source="http://httpd.apache.org"
LABEL org.opencontainers.image.licenses="Apache-2.0" LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team" LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("apache2") }} {{ install_pakages("apache2") }}
EXPOSE 80 EXPOSE 80

View File

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

View File

@ -0,0 +1,7 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
MAINTAINER alt-cloud
{{ install_pakages("glibc-gconv-modules", "glibc-locales", "tzdata") }}
CMD ["bash"]

View File

@ -1,16 +0,0 @@
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

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

View File

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

View File

@ -1,13 +1,12 @@
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest FROM {{ registry }}{{ alt_image }}:{{ branch }}
MAINTAINER alt-cloud MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="buildpack-deps-curl" 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.licenses="GPLv2"
LABEL org.opencontainers.image.vendor="ALT Linux Team" LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages( {{ install_pakages(
"ca-certificates", "ca-certificates",
"curl", "curl",
"gnupg", "gnupg",

View File

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

View File

@ -1,13 +1,12 @@
FROM {{ registry }}{{ branch }}/buildpack-deps-scm:latest FROM {{ registry }}{{ organization }}/buildpack-deps-scm:{{ branch }}
MAINTAINER alt-cloud MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="buildpack-deps" 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.licenses="GPLv2"
LABEL org.opencontainers.image.vendor="ALT Linux Team" LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages( {{ install_pakages(
"ImageMagick", "ImageMagick",
"autoconf", "autoconf",
"automake", "automake",

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ branch }}/base:latest FROM {{ registry }}{{ organization }}/base:{{ branch }}
MAINTAINER alt-cloud MAINTAINER alt-cloud
@ -8,27 +8,27 @@ LABEL org.opencontainers.image.licenses="GPLv2"
LABEL org.opencontainers.image.vendor="ALT Linux Team" LABEL org.opencontainers.image.vendor="ALT Linux Team"
# install editor # install editor
{{ install_packages("vim-console") }} {{ install_pakages("vim-console") }}
# install debugging tools # install debugging tools
{{ install_packages("strace", "gdb") }} {{ install_pakages("strace", "gdb") }}
# install document viewers # install document viewers
{{ install_packages("man") }} {{ install_pakages("man") }}
# install version control system # install version control system
{{ install_packages("git-core", "perl-Git") }} {{ install_pakages("git-core", "perl-Git") }}
# install network utils # install network utils
{{ install_packages("iproute2", "iputils", "wget", "curl") }} {{ install_pakages("iproute2", "iputils", "wget", "curl") }}
# install file utils # install file utils
{{ install_packages("lsof", "ripgrep") }} {{ install_pakages("lsof", "ripgrep") }}
# install shell and completions # install shell and completions
{{ install_packages("zsh", "zsh-completions") }} {{ install_pakages("zsh", "zsh-completions") }}
# install compilation utils # install compilation utils
{{ install_packages("make", "gcc", "gcc-c++") }} {{ install_pakages("make", "gcc", "gcc-c++") }}
CMD ["zsh"] CMD ["zsh"]

View File

@ -0,0 +1,21 @@
from = "{{ registry }}{{ organization }}/distroless-static:{{ branch }}"
builder-install-packages = [
"glibc-core",
'{{if_branches(["p10"], "glibc-nss")}}',
"glibc-timezones",
"libselinux",
'{{if_branches(["p9", "p10"], "libssl1.1")}}',
'{{if_branches(["sisyphus"], "libssl1.1")}}',
'{{if_branches(["sisyphus"], "libssl3")}}',
"tzdata",
"zlib",
]
packages = [
"glibc-core",
'{{if_branches(["p10"], "glibc-nss")}}',
"glibc-pthread",
"glibc-timezones",
"tzdata",
"zlib",
]
timezone = "Europe/Moscow"

View File

@ -1,15 +1,15 @@
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest FROM {{ registry }}{{ alt_image }}:{{ branch }}
MAINTAINER alt-cloud MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="distroless-builder" LABEL org.opencontainers.image.title="distroless-builder"
LABEL org.opencontainers.image.description="This image is used to build tarballs for distroless images" LABEL org.opencontainers.image.description="This images is using to build tarball for distroless images"
LABEL org.opencontainers.image.licenses="GPLv2" LABEL org.opencontainers.image.licenses="GPLv2"
LABEL org.opencontainers.image.vendor="ALT Linux Team" LABEL org.opencontainers.image.vendor="ALT Linux Team"
RUN echo %_excludedocs 1 >> /etc/rpm/macros RUN echo %_excludedocs 1 >> /etc/rpm/macros
RUN rpm -qalds | awk '/^normal/{print $2}' | xargs rm -rf RUN rpm -qalds | awk '/^normal/{print $2}' | xargs rm -rf
{{ install_packages("python3", "glibc-utils", "apt-repo") }} {{ install_pakages("python3", "glibc-utils", "apt-repo") }}
WORKDIR /usr/src/distroless WORKDIR /usr/src/distroless
RUN mkdir file-lists RUN mkdir file-lists
RUN useradd -m nonroot RUN useradd -m nonroot

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