8 Commits

132 changed files with 410 additions and 768 deletions

View File

@ -6,46 +6,41 @@
#$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"
if [[ $2 == 'k8s' ]]
then imgpath="$2-$1/$IM:latest"
fi
entrypoint='/bin/sh' entrypoint='/bin/sh'
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=\"$entrypoint\" $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 fi
if [ "$IM" = distroless-gotop ]; then if [[ $IM == 'flannel-cni-plugin' ]]; then
command="podman run --rm $url/$imgpath \"--version\"" command="podman run --rm $3/$imgpath \"/flannel\""
fi fi
if [ "$IM" = flannel-cni-plugin ]; then if [[ $IM == 'pause' ]]; then
command="podman run --rm $url/$imgpath \"/flannel\"" command="podman run --rm $3/$imgpath \"/pause\" \"-v\""
fi
if [ "$IM" == pause ]; then
command="podman run --rm $url/$imgpath \"/pause\" \"-v\""
fi fi
fi fi
echo $command echo $command
@ -54,9 +49,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 +60,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

@ -2,11 +2,11 @@ name: Full building alt images
on: on:
push: push:
tags: tags:
- '*_*' - '*10*_*'
jobs: jobs:
build-process: build-process:
runs-on: alt-sisyphus runs-on: alt-p10
outputs: outputs:
branch: ${{ env.BRANCH }} branch: ${{ env.BRANCH }}
org: ${{ env.ORG }} org: ${{ env.ORG }}
@ -36,10 +36,10 @@ jobs:
uses: actions/init-alt-env@v1 uses: actions/init-alt-env@v1
- name: Install requires - name: Install requires
run: | run: |
echo "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 python3-module-tomli python3-module-jinja2 podman buildah jq curl"
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 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" 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 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
- name: Check out current repo - name: Check out current repo
uses: actions/checkout@v4 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
@ -61,11 +61,10 @@ jobs:
- name: Run building script - name: Run building script
id: build-script id: build-script
run: | run: |
build_args="-b $BR --latest $BR -o $ORG --registry gitea.basealt.ru/alt" 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 --tags tags.toml --overwrite-organization $ORG-$BR --skip-images k8s/kube-apiserver k8s/kube-controller-manager k8s/kube-proxy k8s/kube-scheduler"; 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"
echo "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 }}
@ -95,8 +94,8 @@ 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-p10
steps: steps:
- name: Update apt - name: Update apt
uses: actions/init-alt-env@v1 uses: actions/init-alt-env@v1

View File

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

@ -0,0 +1,126 @@
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: on:
push: push:
tags: tags:
- '*_*/*_*' - '*_*/*'
jobs: jobs:
build-process: build-process:
runs-on: alt-sisyphus runs-on: alt-latest
outputs: outputs:
branch: ${{ env.BRANCH }} branch: ${{ env.BRANCH }}
image: ${{ env.IMAGE }} image: ${{ env.IMAGE }}
@ -37,10 +37,10 @@ jobs:
uses: actions/init-alt-env@v1 uses: actions/init-alt-env@v1
- name: Install requires - name: Install requires
run: | run: |
echo "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 python3-module-tomli python3-module-jinja2 podman buildah jq curl"
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 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" 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 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
- name: Check out current repo - name: Check out current repo
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Login podman gitea - name: Login podman gitea
@ -65,9 +65,6 @@ jobs:
org=$(echo "$localimage" | cut -d '/' -f 1) org=$(echo "$localimage" | cut -d '/' -f 1)
echo "ORG=$org" >> ${GITHUB_ENV} echo "ORG=$org" >> ${GITHUB_ENV}
echo "ORG=$org" 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 - name: Get test for image
run: | run: |
if test -f ${{ gitea.workspace }}/org/$IM/test; then testscript=$(cat ${{ gitea.workspace }}/org/$IM/test); else testscript=""; fi if test -f ${{ gitea.workspace }}/org/$IM/test; then testscript=$(cat ${{ gitea.workspace }}/org/$IM/test); else testscript=""; fi
@ -78,13 +75,11 @@ jobs:
- name: Run building script - name: Run building script
id: build-script id: build-script
run: | run: |
if [[ "$IM" == *"k8s"* ]]; then k8sarg="--overwrite-organization $ORG-$BR --package-versions {\"$IM\":\"$VER\"}"; else k8sarg=""; fi if [[ "$IM" == *"k8s"* ]]; then k8sarg="--tags=tags.toml --overwrite-organization $ORG-$BR"; 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"
echo "build.py -i $IM -b $BR $arches $k8sarg" ${{ gitea.workspace }}/build.py -i $IM -b $BR $k8sarg
${{ gitea.workspace }}/build.py -i $IM -b $BR $arches $k8sarg
env: env:
IM: ${{ env.IMAGE }} IM: ${{ env.IMAGE }}
VER: ${{ env.VER }}
BR: ${{ env.BRANCH }} BR: ${{ env.BRANCH }}
ORG: ${{ env.ORG }} ORG: ${{ env.ORG }}
continue-on-error: true continue-on-error: true
@ -115,7 +110,7 @@ jobs:
test-process: test-process:
needs: build-process needs: build-process
if: ${{ needs.build-process.outputs.buildres == 'success' }} if: ${{ needs.build-process.outputs.buildres == 'success' }}
runs-on: alt-sisyphus runs-on: alt-latest
steps: steps:
- name: Update apt - name: Update apt
uses: https://gitea.basealt.ru/actions/init-alt-env@v1 uses: https://gitea.basealt.ru/actions/init-alt-env@v1

View File

@ -88,8 +88,6 @@ source_packages:
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-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

119
build.py
View File

@ -3,11 +3,9 @@
import argparse import argparse
import functools import functools
import json import json
import logging
import re import re
import subprocess import subprocess
import textwrap import textwrap
from datetime import datetime
from dataclasses import dataclass from dataclasses import dataclass
from graphlib import TopologicalSorter from graphlib import TopologicalSorter
from pathlib import Path from pathlib import Path
@ -17,8 +15,6 @@ import tomli
import yaml import yaml
from jinja2 import Template from jinja2 import Template
logger = logging.getLogger(__name__)
ORG_DIR = Path("org") ORG_DIR = Path("org")
PKG_VERSIONS: dict | None = None PKG_VERSIONS: dict | None = None
@ -28,7 +24,7 @@ PKG_VERSIONS: dict | None = None
class Image: class Image:
canonical_name: str canonical_name: str
is_versioned: bool | None is_versioned: bool | None
version_template: str | None verion_template: str | None
source_packages: list[str] | None source_packages: list[str] | None
def __init__(self, canonical_name: str): def __init__(self, canonical_name: str):
@ -95,19 +91,6 @@ def api_get_source_package_version(branch: str, package_name: str) -> str:
response = requests.get(api_url, params) response = requests.get(api_url, params)
if response.status_code != 200: if response.status_code != 200:
print(response) 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( raise RuntimeError(
f"failed to retrieve source package version: source package {package_name!r}, branch {branch!r} " f"failed to retrieve source package version: source package {package_name!r}, branch {branch!r} "
) )
@ -117,25 +100,6 @@ def api_get_source_package_version(branch: str, package_name: str) -> str:
return result["versions"][0]["version"] 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:
print(response)
raise RuntimeError(
f"failed to retrieve source package version from task: source package {package_name!r}, branch {branch!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}, branch {branch!r}, task_id {task_id}"
)
class Tags: class Tags:
def __init__(self, tags_file: str | None, latest: str): def __init__(self, tags_file: str | None, latest: str):
if tags_file is None: if tags_file is None:
@ -144,14 +108,9 @@ class Tags:
self._tags = tomli.loads(Path(tags_file).read_text()) self._tags = tomli.loads(Path(tags_file).read_text())
self._latest = latest self._latest = latest
def tags(self, branch: str, image: Image, tasks: Tasks | None = None): def tags(self, branch: str, image: Image):
if self._tags is None: if self._tags is None:
if image.is_versioned is None: if image.is_versioned and image.source_packages:
tags = [branch]
if branch == self._latest:
tags.append("latest")
elif image.is_versioned and image.source_packages:
package_name = image.source_packages[0] package_name = image.source_packages[0]
if re.search("{%.*%}", package_name): if re.search("{%.*%}", package_name):
@ -177,27 +136,6 @@ class Tags:
package_name = Template(package_name).render( package_name = Template(package_name).render(
version=PKG_VERSIONS[image.canonical_name] version=PKG_VERSIONS[image.canonical_name]
) )
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) version = api_get_source_package_version(branch, package_name)
if image.version_template is not None: if image.version_template is not None:
@ -206,18 +144,12 @@ class Tags:
) )
tags = [version] tags = [version]
tags.append("latest")
else: else:
version = datetime.now().strftime('%Y%m%d') tags = [branch]
if image.version_template is not None:
version = (
Template(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
@ -260,10 +192,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:
@ -310,10 +238,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()
@ -341,7 +268,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
@ -388,7 +315,7 @@ class DockerBuilder:
) -> 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"
@ -462,7 +389,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")
@ -471,7 +398,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)
@ -503,7 +430,7 @@ class DockerBuilder:
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)
@ -695,7 +622,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(
@ -755,7 +682,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:
@ -802,14 +729,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"]
branches = ["p11", "p10", "sisyphus", "c10f1", "c10f2"] branches = ["p11", "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,
) )
@ -920,12 +845,6 @@ def parse_args():
type=json.loads, type=json.loads,
help="json string where key is image name, value is the package version", help="json string where key is image name, value is the package version",
) )
parser.add_argument(
"--log-level",
default="warning",
choices=log_levels,
help="log messages above specified level",
)
args = parser.parse_args() args = parser.parse_args()
args.stages = set(args.stages) - set(args.skip_stages) args.stages = set(args.stages) - set(args.skip_stages)
@ -941,14 +860,6 @@ def main():
args = parse_args() args = parse_args()
PKG_VERSIONS = args.package_versions PKG_VERSIONS = args.package_versions
numeric_level = getattr(logging, args.log_level.upper(), logging.WARNING)
logging.basicConfig(
level=numeric_level, format="%(asctime)s - %(levelname)s\t- %(message)s"
)
logger.info("PKG_VERSIONS=%s", PKG_VERSIONS)
arches = args.arches arches = args.arches
images_info = ImagesInfo() images_info = ImagesInfo()
tags = Tags(args.tags, args.latest) tags = Tags(args.tags, args.latest)

View File

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

View File

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

View File

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

View File

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

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_packages("glibc-gconv-modules", "glibc-locales", "tzdata") }}
CMD ["bash"]

View File

@ -1,9 +1,8 @@
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"

View File

@ -1,10 +1,9 @@
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_packages(

View File

@ -1,9 +1,8 @@
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"

View File

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

View File

@ -1,4 +1,4 @@
from = "{{ registry }}{{ branch }}/distroless-static:latest" from = "{{ registry }}{{ organization }}/distroless-static:{{ branch }}"
builder-install-packages = [ builder-install-packages = [
"glibc-core", "glibc-core",
'{{if_branches(["p10"], "glibc-nss")}}', '{{if_branches(["p10"], "glibc-nss")}}',
@ -19,4 +19,3 @@ packages = [
"zlib", "zlib",
] ]
timezone = "Europe/Moscow" 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

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

View File

@ -1,4 +1,4 @@
from = "{{ registry }}{{ branch }}/distroless-base:latest" from = "{{ registry }}{{ organization }}/distroless-base:{{ branch }}"
builder-install-packages = [ builder-install-packages = [
"coreutils", "coreutils",
"findutils", "findutils",
@ -37,4 +37,3 @@ packages = [
"vim-console", "vim-console",
] ]
cmd = ["/bin/bash"] 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,3 @@
from = "{{ registry }}{{ organization }}/distroless-base:{{ branch }}"
full-files = ["/usr/bin/gotop"]
entrypoint = ["/usr/bin/gotop"]

View File

@ -0,0 +1,4 @@
from = "scratch"
file-lists = ["static.list"]
user = "nonroot"
workdir = "/home/nonroot"

View File

@ -0,0 +1,3 @@
from = "{{ registry }}{{ organization }}/distroless-static:{{ branch }}"
files = ["/bin/true"]
cmd = ["/bin/true"]

View File

@ -1,4 +1,4 @@
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest FROM {{ registry }}{{ alt_image }}:{{ branch }}
MAINTAINER alt-cloud MAINTAINER alt-cloud
@ -10,8 +10,6 @@ LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("etcd") }} {{ install_packages("etcd") }}
RUN ln -s /usr/sbin/etcd /usr/local/bin/etcd
VOLUME /data VOLUME /data
ENTRYPOINT ["/usr/sbin/etcd", "--data-dir", "/data"] ENTRYPOINT ["/usr/sbin/etcd", "--data-dir", "/data"]

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,11 +0,0 @@
---
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 }}{{ branch }}/base:latest FROM {{ registry }}{{ organization }}/base:{{ branch }}
MAINTAINER alt-cloud MAINTAINER alt-cloud

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,11 +0,0 @@
---
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 }}{{ branch }}/base:latest FROM {{ registry }}{{ organization }}/base:{{ branch }}
MAINTAINER alt-cloud MAINTAINER alt-cloud

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,12 +0,0 @@
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"]

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

View File

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

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

View File

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

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

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

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