102 Commits

Author SHA1 Message Date
14d59e886f fix(build.py): add cleaning images during building process to fix workflow's error 'no space left on device'
All checks were successful
Full building alt images / build-process (push) Successful in 1h1m9s
Full building alt images / test-process (push) Successful in 4m30s
Building alt images / build-process (push) Successful in 4m17s
Building alt images / test-process (push) Successful in 1m7s
2025-06-26 15:39:51 +03:00
6302f3c4ef feat(k8s/coredns): simplify coredns templates 2025-06-26 13:49:08 +03:00
7df06eebcb update versions for k8s 2025-06-25 12:54:06 +03:00
e52c1c1420 fix k8s wf 2025-06-25 12:53:40 +03:00
56f573bfa9 delete duplicate excluding from images-info.toml
Some checks failed
Full building alt images / test-process (push) Successful in 2m25s
Full building alt images / build-process (push) Failing after 30s
2025-06-24 21:50:40 +03:00
e03773565e delete special building from wf for alt/etcd
All checks were successful
Full building alt images / build-process (push) Successful in 1m37s
Full building alt images / test-process (push) Has been skipped
2025-06-24 21:39:51 +03:00
c329b429dd skip building 386 arch for zot in new version 2.1.4
All checks were successful
Full building alt images / build-process (push) Successful in 1m36s
Full building alt images / test-process (push) Has been skipped
2025-06-24 21:18:25 +03:00
daf6389f52 fix(.gitea/workflows/testscript): add quiet flag to test commands 2025-06-24 12:59:28 +03:00
6fdb4dec78 fix(org/kubevirt/virt-handler/Dockerfile.template): fix config virt-handler for new version 1.5.0 2025-06-24 12:37:04 +03:00
586fe0210e fix(.gitea/workflows/wf_k8s.yaml): ignore error in c10f2-label-setting step 2025-06-24 12:33:54 +03:00
129859feec add etcd and new version for p11 and c10f2 2025-06-24 12:33:54 +03:00
34540c6250 fix vendor label for c10f2, add version k8s for c10f2 2025-06-24 12:33:54 +03:00
b40b8691ad Add workflow for building all versions kube sound config 2025-06-24 12:33:54 +03:00
6cbde103dd fix(alt/php, alt/ruby): strip whitespace, don't use 'raw' blocks
All checks were successful
Building alt images / build-process (push) Successful in 4m51s
Building alt images / test-process (push) Successful in 1m28s
Full building alt images / build-process (push) Successful in 51m24s
Full building alt images / test-process (push) Has been skipped
2025-06-18 11:20:32 +03:00
14c787b0db delete org/alt/etcd (duplicate org/k8s/etcd)
All checks were successful
Full building alt images / build-process (push) Successful in 26m15s
Full building alt images / test-process (push) Has been skipped
2025-06-18 10:42:19 +03:00
d161930947 fix(.gitea/workflow): change vendor label for c10f2 in single workflow
All checks were successful
Building alt images / build-process (push) Successful in 4m15s
Building alt images / test-process (push) Successful in 1m18s
Full building alt images / build-process (push) Successful in 4m45s
Full building alt images / test-process (push) Has been skipped
2025-06-17 18:15:04 +03:00
0c426721dd k8s/coredns: check key in dict before using it
All checks were successful
Building alt images / build-process (push) Successful in 4m7s
Building alt images / test-process (push) Successful in 1m11s
2025-06-17 17:54:49 +03:00
0d08c6f88f build: pass tasks for distroless images
All checks were successful
Building alt images / build-process (push) Successful in 4m3s
Building alt images / test-process (push) Has been skipped
2025-06-17 14:24:35 +03:00
a56bc4eb06 k8s/coredns: update templates 2025-05-28 21:15:48 +03:00
739b5d8eba better handle templates with variables and control flow in info.yaml 2025-05-28 21:14:29 +03:00
941b8fb599 support python 3.9 2025-05-16 14:52:01 +03:00
aacaf22d79 feat(k8s/etcd): add etcd image for kubernetes 2025-05-12 13:44:30 +03:00
2d5df6ea4c fix command error vendor label for c10f2
All checks were successful
Full building alt images / build-process (push) Successful in 1h5m44s
Full building alt images / test-process (push) Successful in 4m31s
2025-05-07 12:11:51 +03:00
626b6feb4c fix vendor label for c10f2 in dostroless templates
Some checks failed
Full building alt images / build-process (push) Failing after 1m27s
Full building alt images / test-process (push) Has been skipped
2025-05-07 10:24:12 +03:00
69e7c13ea2 fix(.gitea/workflow): change vendor label for c10f2
All checks were successful
Full building alt images / build-process (push) Successful in 38m56s
Full building alt images / test-process (push) Successful in 2m21s
2025-05-06 13:02:15 +03:00
d47bc5a030 fix(alt/nginx): listen on 0.0.0.0 in nginx image 2025-04-17 22:03:44 +03:00
9702a487d7 fix(k8s/flannel-cni-plugin): make excpetion for 1.4.0 2025-04-16 13:50:46 +03:00
c3398350b7 fix(workflow single image): fix image path in test step
All checks were successful
Building alt images / build-process (push) Successful in 4m32s
Building alt images / test-process (push) Successful in 1m19s
2025-04-14 16:16:02 +03:00
c6011932ec add quotes buildkit-image tag info
Some checks failed
Building alt images / build-process (push) Successful in 4m38s
Building alt images / test-process (push) Failing after 1m8s
2025-04-14 15:31:47 +03:00
b1a9067f7d delete 'v' from buildkit-image tag
All checks were successful
Building alt images / build-process (push) Successful in 1m38s
Building alt images / test-process (push) Has been skipped
2025-04-14 15:22:21 +03:00
2755b77312 fix(workflow single image): fix image path in test step 2025-04-14 15:21:12 +03:00
61993c8c67 fix(build): don't print responses
Some checks failed
Building alt images / build-process (push) Successful in 6m3s
Building alt images / test-process (push) Failing after 1m11s
2025-04-12 22:07:48 +03:00
8831b5d4f3 fix(k8s/flannel-cni-plugin): properly set image tag 2025-04-12 22:02:53 +03:00
c9361ef016 add test for buildkit image 2025-04-10 16:50:32 +03:00
bb0eb56454 add buildkit image 2025-04-10 16:32:58 +03:00
059f378d62 Fix wf mistake
All checks were successful
Full building alt images / build-process (push) Successful in 1h0m36s
Full building alt images / test-process (push) Has been skipped
2025-03-21 17:20:30 +03:00
c0534070b3 Fix wf mistake
All checks were successful
Full building alt images / build-process (push) Successful in 1m35s
Full building alt images / test-process (push) Has been skipped
2025-03-21 17:15:21 +03:00
ede851f34f Add version building param for etcd
All checks were successful
Full building alt images / build-process (push) Successful in 1m36s
Full building alt images / test-process (push) Has been skipped
2025-03-21 16:59:51 +03:00
b1867f776f Fix wf mistake
All checks were successful
Full building alt images / build-process (push) Successful in 6m33s
Full building alt images / test-process (push) Has been skipped
2025-03-21 15:37:45 +03:00
686bed6efa Fix wf mistake
Some checks failed
Full building alt images / test-process (push) Blocked by required conditions
Full building alt images / build-process (push) Has been cancelled
2025-03-21 15:23:02 +03:00
124ed4ff29 Fix wf mistake
All checks were successful
Full building alt images / build-process (push) Successful in 7m49s
Full building alt images / test-process (push) Has been skipped
2025-03-21 15:03:33 +03:00
a5d6c2d543 Fix wf steps order
All checks were successful
Full building alt images / build-process (push) Successful in 42m52s
Full building alt images / test-process (push) Successful in 2m41s
2025-03-21 13:31:27 +03:00
ba6faf6d32 Add log-level to workflow, fix singl wf to new repo structure
Some checks failed
Full building alt images / build-process (push) Failing after 29s
Full building alt images / test-process (push) Has been skipped
2025-03-21 13:15:24 +03:00
8bd17b82bc docs: update version_template description in README.md 2025-03-21 13:08:42 +03:00
20c4e922df fix(build): remove usage of branch when it is unavailable 2025-03-21 13:08:42 +03:00
c3778f6436 feat(alt/etcd): update Dockerfile and info.yaml 2025-03-21 13:08:42 +03:00
5a22edb089 feat(build): allow version_template to be a list of strings 2025-03-21 13:08:42 +03:00
4ba29556fe feat(build): log when running external commands 2025-03-21 13:08:42 +03:00
4db1672f06 feat(build): allow querying package versions from tasks 2025-03-21 13:08:42 +03:00
24c24ddd57 feat(build): introduce logging 2025-03-21 13:08:42 +03:00
97478923d3 Add exlusion building for base image with risc arch, delete excess deps 2025-03-21 12:29:59 +03:00
a670e7847c Add exclusion branches 'c10f2', 'c10f1' for image alt/distroless-toybox
All checks were successful
Full building alt images / build-process (push) Successful in 1h1m37s
Full building alt images / test-process (push) Successful in 4m26s
2025-03-03 16:49:39 +03:00
c24ac6f89a Place python3 package first in the list
All checks were successful
Full building alt images / build-process (push) Successful in 29m56s
Full building alt images / test-process (push) Has been skipped
The first package in the list is used to form the image tag based
on the package version.
2025-02-24 17:06:29 +03:00
5c47e2296d Fix typo 2025-02-23 15:14:47 +03:00
34405300aa Add kmod and ipset to kube-proxy image for IPVS mode
All checks were successful
Full building alt images / build-process (push) Successful in 1h17m30s
Full building alt images / test-process (push) Successful in 2m35s
2025-02-10 10:57:34 +03:00
7ee8840061 Add mount package to kubelet image
This is for closer resemblance with upstream kubernetes images.
2025-02-03 12:34:16 +03:00
a36a9d974e Add package nftables to kube-proxy image
This is for closer resemblance with upstream kubernetes images.
2025-02-03 12:34:16 +03:00
8ef16f6ea7 Make symlinks to /usr/local and use them as entrypoints
This is for closer resemblance with upstream kubernetes images.
2025-02-03 12:34:16 +03:00
6668dc4d6a fix building command in workflow
All checks were successful
Full building alt images / build-process (push) Successful in 45m10s
Full building alt images / test-process (push) Has been skipped
2025-01-14 22:51:30 +03:00
ae109e7adf delete exclusion building of distroless-devel from workflow
All checks were successful
Full building alt images / build-process (push) Successful in 1m57s
Full building alt images / test-process (push) Has been skipped
2025-01-14 22:44:10 +03:00
48a422a735 cut out base images for isolated building
All checks were successful
Full building alt images / build-process (push) Successful in 1m52s
Full building alt images / test-process (push) Has been skipped
2025-01-14 13:01:00 +03:00
efaa4b0aab add kubevirt images 2024-12-23 15:29:30 +03:00
6e6d876b83 add/fix description to some images 2024-12-16 15:35:24 +03:00
ff20da92a8 refactor test script 2024-12-16 15:35:10 +03:00
78daf7d9bb add second search of packages version, if package is older than branch 2024-12-16 15:35:10 +03:00
cb5f3ec98f go to new struct in docker templates and build script 2024-12-16 15:35:10 +03:00
3cb1114358 add info for new repo struct to alt org images 2024-12-16 15:35:10 +03:00
faaa41da4d replace CMD with ENTRYPOINT in pause image 2024-12-10 16:40:43 +03:00
ea8aa8f897 Обновить images-info.toml 2024-11-13 12:10:38 +03:00
05cf05c29d add distroless-toybox image 2024-11-13 12:07:24 +03:00
fca809825f Обновить images-info.toml
All checks were successful
Building alt images / build-process (push) Successful in 3m43s
Building alt images / test-process (push) Has been skipped
2024-11-12 10:49:01 +03:00
48c571ed65 add scripts dependence to README.md
All checks were successful
Building alt images / build-process (push) Successful in 4m19s
Building alt images / test-process (push) Successful in 1m13s
Full building alt images / build-process (push) Successful in 46m36s
Full building alt images / test-process (push) Has been skipped
2024-11-11 19:07:17 +03:00
50e125d59d run all wf wf with alt-sisyphus 2024-11-11 19:07:05 +03:00
4da3ba20e1 fix building errors
All checks were successful
Building alt images / build-process (push) Successful in 2m6s
Building alt images / test-process (push) Has been skipped
2024-11-11 18:29:43 +03:00
abc15fee40 add kubelet Dockerfile.template
All checks were successful
Full building alt images / build-process (push) Successful in 41m9s
Full building alt images / test-process (push) Has been skipped
2024-11-11 18:06:20 +03:00
e575a1f23c Обновить .gitea/workflows/wf_single.yaml
All checks were successful
Building alt images / build-process (push) Successful in 2m19s
Building alt images / test-process (push) Has been skipped
2024-11-11 18:04:27 +03:00
a1571acc55 add faile-builded images to skip-list
Some checks failed
Building alt images / build-process (push) Failing after 2m14s
Building alt images / test-process (push) Has been skipped
2024-11-11 17:47:43 +03:00
34bdff6755 fix run new build process
All checks were successful
Full building alt images / build-process (push) Successful in 1m43s
Full building alt images / test-process (push) Has been skipped
2024-11-11 17:32:27 +03:00
a34788f701 fix run new build process
All checks were successful
Full building alt images / build-process (push) Successful in 1m52s
Full building alt images / test-process (push) Has been skipped
2024-11-11 17:12:15 +03:00
10eee3896f add new python modules to workflows
All checks were successful
Full building alt images / build-process (push) Successful in 1m51s
Full building alt images / test-process (push) Has been skipped
2024-11-11 16:37:11 +03:00
c947762e9e fix workflow commands quotes bug
All checks were successful
Full building alt images / build-process (push) Successful in 2m0s
Full building alt images / test-process (push) Has been skipped
2024-11-11 16:28:01 +03:00
f772e861ef add new argument to run building k8s
All checks were successful
Full building alt images / build-process (push) Successful in 1m47s
Full building alt images / test-process (push) Has been skipped
2024-11-11 15:54:36 +03:00
3b99b6eed2 remove unused variables 2024-11-11 13:18:24 +03:00
4ea046dcf8 define ARG only if needed, allow jinja2 control flow in package names 2024-11-11 13:18:24 +03:00
7551928508 make PKG_VERSION into a dictionary of PKG_VERSIONS 2024-11-11 13:18:24 +03:00
dbe4a3c590 add info.yaml files for k8s images 2024-11-11 13:18:24 +03:00
7e8573d319 fix installed package for kubernetes images 2024-11-11 13:18:24 +03:00
78b55a0422 strip whitespace from rendered tag 2024-11-11 13:18:24 +03:00
4e076b90fb add templating for tag and package name in info.yaml 2024-11-11 13:18:24 +03:00
5108c6c04c try automatic package version detection 2024-11-11 13:18:24 +03:00
b046b4ec48 fix arch name according to https://pkg.go.dev/internal/platform
Some checks failed
Full building alt images / build-process (push) Failing after 3h10m40s
Full building alt images / test-process (push) Has been cancelled
Building alt images / build-process (push) Successful in 9m43s
Building alt images / test-process (push) Successful in 1m53s
2024-11-08 15:38:37 +03:00
6cd944822f fix arches for podman building according to https://pkg.go.dev/internal/platform
Some checks failed
Full building alt images / build-process (push) Failing after 51m2s
Full building alt images / test-process (push) Has been cancelled
2024-11-08 14:39:13 +03:00
61dea7bebf update images info
All checks were successful
Building alt images / build-process (push) Successful in 14m47s
Building alt images / test-process (push) Successful in 1m48s
Full building alt images / build-process (push) Successful in 5m53s
Full building alt images / test-process (push) Has been skipped
2024-11-07 11:41:25 +03:00
99a96cc7b6 revert last commit
All checks were successful
Building alt images / build-process (push) Successful in 6m5s
Building alt images / test-process (push) Successful in 1m38s
2024-11-06 11:36:51 +03:00
3772d01634 test right ftp to get loongarch repo
All checks were successful
Full building alt images / build-process (push) Successful in 8m17s
Full building alt images / test-process (push) Has been skipped
2024-11-06 11:24:37 +03:00
1b5a3dd153 fix previos commits 2024-11-05 18:28:47 +03:00
8f862fcfc3 fix add repo setting for loongarch64 to workflows
Some checks failed
Full building alt images / build-process (push) Failing after 34s
Full building alt images / test-process (push) Has been skipped
2024-11-05 18:04:50 +03:00
4b23b69665 add repo setting for loongarch64 to workflows
Some checks failed
Full building alt images / build-process (push) Failing after 35s
Full building alt images / test-process (push) Has been skipped
2024-11-05 17:39:55 +03:00
3c611ed452 add qemu packages for new arches to workflows
All checks were successful
Full building alt images / build-process (push) Successful in 6m30s
Full building alt images / test-process (push) Has been skipped
2024-11-05 16:54:11 +03:00
3dc76a8533 add arches setting to workflows on building step 2024-11-05 16:45:26 +03:00
9a57a5ccff add riscv64 to arches 2024-11-05 16:37:59 +03:00
84f06f5ecb add loongarch64 to arches 2024-11-05 16:19:15 +03:00
156 changed files with 1396 additions and 396 deletions

View File

@ -0,0 +1,74 @@
#!/usr/bin/env python3
import argparse
import json
import subprocess
vers_path = ".gitea/workflows/k8s_vers.json"
def run(args):
result = subprocess.run(
args,
capture_output = True,
text = True
)
if result.stderr is not None:
print(result.stderr)
return False
print(result.stdout)
return True
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
)
parser.add_argument(
"--branch",
help="used to pick the appropriate VM template to clone",
choices=["sisyphus", "c10f2", "p10", "p11"],
)
parser.add_argument(
"--other-build-args",
help="other build arg as a string",
)
parser.add_argument(
"--workspace",
help="workspace, path to builing script",
)
return parser.parse_args()
def main() -> None:
args = parse_args()
if args.branch is None or args.branch == "":
raise RuntimeError("Empty branch setting. Check your choise --branch.")
data = {}
with open(f"{args.workspace}/{vers_path}", "r") as f:
data = json.load(f)
i = 0
for br in data.get("branches"):
if br.get("name") == args.branch:
break
i += 1
vers_branch = data.get("branches")[i].get("versions")
if vers_branch == None :
raise RuntimeError(f"Unknown branch: {args.branch!r}. In {vers_path} no k8s-versions list.")
images_to_rebuild="k8s/kube-apiserver k8s/kube-scheduler k8s/kube-controller-manager k8s/kube-proxy k8s/kubelet k8s/coredns k8s/etcd"
for ver in vers_branch:
kube_ver = ver.get("kube-version")
dns_ver = ver.get("coredns")
if kube_ver != None and dns_ver != None:
packs_string=f"-b {args.branch} " + "--package-versions '{\"k8s/kube-apiserver\":" + f"\"{kube_ver}\",\"k8s/kube-scheduler\":\"{kube_ver}\",\"k8s/kube-controller-manager\":\"{kube_ver}\",\"k8s/kube-proxy\":\"{kube_ver}\",\"k8s/kubelet\":\"{kube_ver}\",\"k8s/coredns\":\"{dns_ver}\",\"k8s/etcd\":\"{kube_ver}\"" + "}'"
if ver.get("latest") != None and ver.get("latest"):
packs_string=f"-o k8s --latest {args.branch} "+packs_string
else:
packs_string=f"-i {images_to_rebuild} "+packs_string
subprocess.run(f"{args.workspace}/build.py {args.other_build_args} {packs_string}", shell=True)
subprocess.run("podman rmi -f --all", shell=True)
if __name__ == "__main__":
main()

View File

@ -0,0 +1,72 @@
{
"branches": [
{
"name": "p10",
"versions": [
{
"kube-version": "1.27",
"coredns": "1.10.1"
},
{
"kube-version": "1.28",
"coredns": "1.10.1",
"latest": true
}
]
},
{
"name": "p11",
"versions": [
{
"kube-version": "1.31",
"coredns": "1.11.3"
},
{
"kube-version": "1.32",
"coredns": "1.11.3"
},
{
"kube-version": "1.33",
"coredns": "1.33",
"latest": true
}
]
},
{
"name": "c10f2",
"versions": [
{
"kube-version": "1.31",
"coredns": "1.11.3"
},
{
"kube-version": "1.32",
"coredns": "1.11.3"
},
{
"kube-version": "1.33",
"coredns": "1.33",
"latest": true
}
]
},
{
"name": "sisyphus",
"versions": [
{
"kube-version": "1.31",
"coredns": "1.11.3"
},
{
"kube-version": "1.32",
"coredns": "1.11.3"
},
{
"kube-version": "1.33",
"coredns": "1.33",
"latest": true
}
]
}
]
}

View File

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

View File

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

View File

@ -1,133 +0,0 @@
name: Full building alt images
on:
push:
tags:
- 'p11_*'
jobs:
build-process:
runs-on: alt-sisyphus
outputs:
branch: ${{ env.BRANCH }}
org: ${{ env.ORG }}
url: ${{ env.URL }}
repo: ${{ env.REPO }}
buildres: ${{ steps.build-script.outcome }}
steps:
- name: Check workspace
run: |
repourl=$(echo $GU | cut -d '/' -f 3)
echo "URL=$repourl" >> ${GITHUB_ENV}
echo $repourl
reponame=$(echo $GR | cut -d '/' -f 1)
echo "REPO=$reponame" >> ${GITHUB_ENV}
echo $reponame
env:
GU: ${{ gitea.server_url }}
GR: ${{ gitea.repository }}
- name: Set repo for p11 (Temporary)
if: ${{ contains(github.ref_name, 'p11') }}
run: |
echo "event tag=${{ github.ref_name }}"
echo "10.4.0.3 update.altsp.su" >> /etc/hosts
echo "cat /etc/hosts"
cat /etc/hosts
- name: Update apt
uses: actions/init-alt-env@v1
- name: Install requires
run: |
echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl"
apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl
echo "apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc"
apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc
- name: Check out current repo
uses: actions/checkout@v4
- name: Parse target branch and tag from events context, save to env
env:
EV: ${{ toJson(gitea.event) }}
run: |
echo $EV | jq '.ref' -r | sed "s/refs\/tags\//BRANCH=/g" | cut -d '_' -f 1
echo $EV | jq '.ref' -r | sed "s/refs\/tags\//BRANCH=/g" | cut -d '_' -f 1 >> ${GITHUB_ENV}
org=$(echo $EV | jq '.ref' -r | sed 's/refs\/tags\///g' | cut -d '_' -f 2)
echo "ORG=$org" >> ${GITHUB_ENV}
echo "ORG=$org"
- name: Login podman gitea
run: |
echo "podman login ${{ env.URL }}"
podman login --username $P_USER --password $P_PASS ${{ env.URL }}
env:
P_USER: ${{ secrets.PODMAN_USER }}
P_PASS: ${{ secrets.PODMAN_PASS }}
- name: Run building script
id: build-script
run: |
build_args="-b $BR -o $ORG --skip-images alt/distroless-devel"
if [[ $ORG == 'k8s' ]]; then build_args="$build_args --tags tags.toml --overwrite-organization $ORG-$BR --skip-images k8s/kube-apiserver k8s/kube-controller-manager k8s/kube-proxy k8s/kube-scheduler"; fi
echo "build.py $build_args"
${{ gitea.workspace }}/build.py $build_args
env:
ORG: ${{ env.ORG }}
BR: ${{ env.BRANCH }}
continue-on-error: true
- name: Send notification if build crashed
if: ${{ steps.build-script.outcome != 'success' }}
run: |
issueid=1
body="Building images finish with some errors."
curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s
echo "notification about test error is sent to issue $issueid"
env:
T: ${{ secrets.TOKEN }}
BR: ${{ env.BRANCH }}
URL: ${{ gitea.server_url }}
REPO: ${{ env.REPO }}
- name: Delete event tag
run: |
tagname=$(echo $EV | jq '.ref' -r | sed "s/refs\/tags\///g")
curl -X 'DELETE' "$URL/api/v1/repos/$REPO/image-forge/tags/$tagname?token=$T" -H 'accept: application/json' -s
echo "tag $tagname is deleted"
env:
T: ${{ secrets.TOKEN }}
BR: ${{ env.BRANCH }}
URL: ${{ gitea.server_url }}
REPO: ${{ env.REPO }}
EV: ${{ toJson(gitea.event) }}
test-process:
needs: build-process
if: ${{ needs.build-process.outputs.buildres == 'success' }}
runs-on: alt-sisyphus
steps:
- name: Update apt
uses: actions/init-alt-env@v1
- name: Install requires
run: |
echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl"
apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl
- name: Check out current repo
uses: https://gitea.com/actions/checkout@v4
- name: Test
id: test-script
continue-on-error: true
run: |
$WS/.gitea/workflows/testscript $BR $ORG $URL $REPO $WS
cat haserr.log >> ${GITHUB_ENV}
echo "test process finished"
env:
BR: ${{ needs.build-process.outputs.branch }}
ORG: ${{ needs.build-process.outputs.org }}
URL: ${{ needs.build-process.outputs.url }}
REPO: ${{ needs.build-process.outputs.repo }}
WS: ${{ gitea.workspace }}
- name: Send notification if test crashed
if: ${{ env.ERR == 'true' || steps.test-script.outcome == 'failure' }}
run: |
issueid=1
errors=$(cat errors.log)
body="Testing images finish with some errors. $errors"
curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s
echo "notification about test error is sent to issue $issueid"
env:
T: ${{ secrets.TOKEN }}
BR: ${{ needs.build-process.outputs.branch }}
URL: ${{ gitea.server_url }}
REPO: ${{ needs.build-process.outputs.repo }}

View File

@ -2,7 +2,7 @@ name: Full building alt images
on:
push:
tags:
- 'sisyphus_*'
- "*_k8s"
jobs:
build-process:
@ -25,16 +25,21 @@ jobs:
env:
GU: ${{ gitea.server_url }}
GR: ${{ gitea.repository }}
- name: Set repo for c10f2 (Temporary)
if: ${{ contains(github.ref_name, 'c10f2') }}
run: |
echo "event tag=${{ github.ref_name }}"
echo "10.4.0.3 update.altsp.su" >> /etc/hosts
echo "cat /etc/hosts"
cat /etc/hosts
- name: Update apt
uses: actions/init-alt-env@v1
- name: Install requires
run: |
echo "apt-get install -y python3-module-tomli python3-module-jinja2 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
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: Parse target branch and tag from events context, save to env
env:
EV: ${{ toJson(gitea.event) }}
@ -44,6 +49,17 @@ jobs:
org=$(echo $EV | jq '.ref' -r | sed 's/refs\/tags\///g' | cut -d '_' -f 2)
echo "ORG=$org" >> ${GITHUB_ENV}
echo "ORG=$org"
- name: Check out current repo
uses: actions/checkout@v4
- name: Change vendor label for c10f
if: ${{ contains(github.ref_name, 'c10f') }}
run: |
echo "sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/Dockerfile.template ||:"
sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/Dockerfile.template ||:
echo "sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/distroless.toml ||:"
sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/distroless.toml ||:
env:
ORG: ${{ env.ORG }}
- name: Login podman gitea
run: |
echo "podman login ${{ env.URL }}"
@ -54,13 +70,14 @@ jobs:
- 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
if [[ "$BR" == "sisyphus" ]]; then arches="--arches amd64 386 arm64 loong64"; else arches="--arches amd64 386 arm64"; fi
build_args="--registry $BUILD_URL $arches"
#run build script
${{ gitea.workspace }}/.gitea/workflows/k8s_buildscript.py --branch "$BR" --other-build-args "$build_args" --workspace "${{ gitea.workspace }}"
env:
ORG: ${{ env.ORG }}
BR: ${{ env.BRANCH }}
BUILD_URL: "gitea.basealt.ru/alt"
continue-on-error: true
- name: Send notification if build crashed
if: ${{ steps.build-script.outcome != 'success' }}
@ -85,42 +102,3 @@ jobs:
URL: ${{ gitea.server_url }}
REPO: ${{ env.REPO }}
EV: ${{ toJson(gitea.event) }}
test-process:
needs: build-process
if: ${{ needs.build-process.outputs.buildres == 'success' }}
runs-on: alt-sisyphus
steps:
- name: Update apt
uses: actions/init-alt-env@v1
- name: Install requires
run: |
echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl"
apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl
- name: Check out current repo
uses: https://gitea.com/actions/checkout@v4
- name: Test
id: test-script
continue-on-error: true
run: |
$WS/.gitea/workflows/testscript $BR $ORG $URL $REPO $WS
cat haserr.log >> ${GITHUB_ENV}
echo "test process finished"
env:
BR: ${{ needs.build-process.outputs.branch }}
ORG: ${{ needs.build-process.outputs.org }}
URL: ${{ needs.build-process.outputs.url }}
REPO: ${{ needs.build-process.outputs.repo }}
WS: ${{ gitea.workspace }}
- name: Send notification if test crashed
if: ${{ env.ERR == 'true' || steps.test-script.outcome == 'failure' }}
run: |
issueid=1
errors=$(cat errors.log)
body="Testing images finish with some errors. $errors"
curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s
echo "notification about test error is sent to issue $issueid"
env:
T: ${{ secrets.TOKEN }}
BR: ${{ needs.build-process.outputs.branch }}
URL: ${{ gitea.server_url }}
REPO: ${{ needs.build-process.outputs.repo }}

View File

@ -2,11 +2,11 @@ name: Building alt images
on:
push:
tags:
- '*_*/*'
- '*_*/*_*'
jobs:
build-process:
runs-on: alt-latest
runs-on: alt-sisyphus
outputs:
branch: ${{ env.BRANCH }}
image: ${{ env.IMAGE }}
@ -37,10 +37,10 @@ jobs:
uses: actions/init-alt-env@v1
- name: Install requires
run: |
echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl"
apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl
echo "apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc"
apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc
echo "apt-get install -y python3-module-tomli python3-module-jinja2 python3-module-yaml python3-module-requests podman buildah jq curl"
apt-get install -y python3-module-tomli python3-module-jinja2 python3-module-yaml python3-module-requests podman buildah jq curl
echo "apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc qemu-user-static-binfmt-riscv qemu-user-static-binfmt-loongarch"
apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc qemu-user-static-binfmt-riscv qemu-user-static-binfmt-loongarch
- name: Check out current repo
uses: actions/checkout@v4
- name: Login podman gitea
@ -65,6 +65,18 @@ jobs:
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
@ -75,11 +87,13 @@ jobs:
- name: Run building script
id: build-script
run: |
if [[ "$IM" == *"k8s"* ]]; then k8sarg="--tags=tags.toml --overwrite-organization $ORG-$BR"; else k8sarg=""; fi
echo "build.py -i $IM -b $BR"
${{ gitea.workspace }}/build.py -i $IM -b $BR $k8sarg
if [[ "$IM" == *"k8s"* ]]; then k8sarg="--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
@ -110,7 +124,7 @@ jobs:
test-process:
needs: build-process
if: ${{ needs.build-process.outputs.buildres == 'success' }}
runs-on: alt-latest
runs-on: alt-sisyphus
steps:
- name: Update apt
uses: https://gitea.basealt.ru/actions/init-alt-env@v1
@ -123,7 +137,8 @@ jobs:
if: ${{ needs.build-process.outputs.test != '' }}
continue-on-error: true
run: |
if [[ "$IM" == *"k8s"* ]]; then echo "skip tests for k8s images"; else podman run --rm --entrypoint="/bin/sh" $URL/$IM:$BR -c "$TEST"; fi
imname=$(echo "$IM" | cut -d "/" -f2)
if [[ "$IM" == *"k8s"* ]]; then echo "skip tests for k8s images"; else podman run --rm --entrypoint="/bin/sh" $URL/$REPO/$BR/$imname:latest -c "$TEST"; fi
env:
IM: ${{ needs.build-process.outputs.image }}
BR: ${{ needs.build-process.outputs.branch }}
@ -135,8 +150,9 @@ jobs:
if: ${{ needs.build-process.outputs.test == '' }}
continue-on-error: true
run: |
if [[ $IM = 'alt/distroless-true' ]]; then podman run --rm $URL/$IM:$BR true; fi
if [[ $IM = 'alt/distroless-gotop' ]]; then podman run --rm $URL/$IM:$BR --version; fi
imname=$(echo "$IM" | cut -d "/" -f2)
if [[ $IM = 'alt/distroless-true' ]]; then podman run --rm $URL/$REPO/$BR/$imname:latest true; fi
if [[ $IM = 'alt/distroless-gotop' ]]; then podman run --rm $URL/$REPO/$BR/$imname:latest --version; fi
env:
IM: ${{ needs.build-process.outputs.image }}
BR: ${{ needs.build-process.outputs.branch }}

View File

@ -26,10 +26,88 @@ the organization `<ORGANIZATION>`, run:
```
If you push to the users repository, then organiztion is your username.
## info.yaml format
- `is_versioned`: **bool** (REQUIRED)
Whether to use package version as a tag for this image
- `source_packages`: **list of strings** (REQUIRED)
List of source packages (src.rpm) this image depends on.
If contains jinja2 template syntax, `--package-version`
CLI option must be specified.
- `version_template`: **string** 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
On x86_64 machine using p10 branch you need:
- `python3-module-tomli`
- `python3-module-jinja2`
- `python3-module-yaml`
- `python3-module-requests`
- `qemu-user-static-binfmt-aarch64` to build for arm64 architecture
- `qemu-user-static-binfmt-arm` to build for arm architecture
- `qemu-user-static-binfmt-ppc` to build for ppc64le architecture

276
build.py
View File

@ -3,28 +3,77 @@
import argparse
import functools
import json
import logging
import re
import subprocess
import textwrap
from datetime import datetime
from dataclasses import dataclass
from graphlib import TopologicalSorter
from pathlib import Path
from typing import Optional, Union
import requests
import tomli
from jinja2 import Template
import yaml
from jinja2 import Environment, BaseLoader
logger = logging.getLogger(__name__)
clean_images_counter = 0
clean_images_limit_count = 5
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:
def __init__(self, canonical_name):
canonical_name: str
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.path = ORG_DIR / canonical_name
self.base_name = re.sub("^[^/]+/", "", canonical_name)
def __str__(self):
return (f'Image(canonical_name="{self.canonical_name}", '
f'path="{self.path}", base_name="{self.base_name}")')
info_file = self.path / "info.yaml"
if not info_file.exists():
self.is_versioned = None
self.source_packages = None
return
info: dict = yaml.safe_load(info_file.read_text())
if "is_versioned" not in info:
raise RuntimeError(
f"info.yaml for {self.canonical_name} doesn't contain 'is_versioned' key"
)
if "source_packages" not in info:
raise RuntimeError(
f"info.yaml for {self.canonical_name} doesn't contain 'source_packages' key"
)
self.is_versioned = info["is_versioned"]
self.source_packages = info["source_packages"]
if self.is_versioned and not self.source_packages:
raise RuntimeError(
f"source_packages for {self.canonical_name} doesn't contain any values"
)
self.version_template = None
if "version_template" in info:
self.version_template = info["version_template"]
class Tasks:
@ -49,22 +98,147 @@ 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:
def __init__(self, tags_file, latest):
def __init__(self, tags_file: Optional[str], latest: str):
if tags_file is None:
self._tags = None
else:
tags_file = Path(tags_file)
self._tags = tomli.loads(tags_file.read_text())
self._tags = tomli.loads(Path(tags_file).read_text())
self._latest = latest
def tags(self, branch, image: Image):
def tags(self, branch: str, image: Image, tasks: Optional[Tasks] = None):
if self._tags is None:
tags = [branch]
if image.is_versioned is None:
tags = [branch]
if branch == self._latest:
tags.append("latest")
elif image.is_versioned and image.source_packages:
package_name = image.source_packages[0]
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:
tags = self._tags[image.canonical_name][branch].copy()
if branch == self._latest:
tags.append("latest")
return tags
@ -107,6 +281,10 @@ class Distroless:
elif value := dd.get("workingdir"):
self.config_options.append(f"--workingdir={value}")
if labels := dd.get("label"):
for k, v in labels.items():
self.config_options.append(f"--label={k}={v}")
def render_arch_branch(self, arch, branch):
def if_arches(arches, value, default=""):
if arch in arches or not arches:
@ -153,9 +331,10 @@ class DockerBuilder:
def make_image_re(self):
registry = r"(?P<registry>[\w.:]+)"
organization = r"(?P<organization>\w+)"
branch = r"(?P<branch>\w+)"
name = r"(?P<name>[-.\w]+)"
tag = r"(?P<tag>[\w.]+)"
return rf"(:?{registry}/)?(:?{organization}/)?{name}(:?:{tag})?"
return rf"(:?{registry}/)?(:?{organization}/)?(:?{branch}/)?{name}(:?:{tag})?"
def make_dockerfile_from_re(self):
image_re = self.make_image_re()
@ -183,7 +362,7 @@ class DockerBuilder:
if overwrite_organization:
self.overwrite_organization = overwrite_organization
else:
self.overwrite_organization = organization
self.overwrite_organization = branch
self.latest = latest
self.dry_run = dry_run
self.images_info = images_info
@ -230,16 +409,17 @@ class DockerBuilder:
) -> str:
if self.registry:
registry = self.registry.rstrip("/") + "/"
alt_image = "alt/alt"
alt_image = "alt"
else:
registry = ""
alt_image = "alt"
rendered = Template(template).render(
rendered = JINJA_ENV.from_string(template).render(
alt_image=alt_image,
branch=self.branch,
install_packages=install_packages,
organization=organization,
registry=registry,
pkg_versions=PKG_VERSIONS,
**kwargs,
)
@ -304,7 +484,7 @@ class DockerBuilder:
from_image = match.groupdict()
if from_image["name"] != "scratch":
requires.add(
f"{from_image['organization']}/{from_image['name']}"
f"{self.organization}/{from_image['name']}"
)
elif distrolessfile.exists():
requires.add("alt/distroless-builder")
@ -313,7 +493,7 @@ class DockerBuilder:
if match := re.match(self.image_re, from_):
from_image = match.groupdict()
if from_image["name"] != "scratch":
requires.add(f"{from_image['organization']}/{from_image['name']}")
requires.add(f"{self.organization}/{from_image['name']}")
return (canonical_name, requires)
@ -340,12 +520,14 @@ class DockerBuilder:
pre_cmd = ["echo"]
else:
pre_cmd = []
logger.debug("run: %s", pre_cmd + cmd)
subprocess.run(pre_cmd + cmd, *args, **kwargs)
def distroless_build(self, image: Image, arches):
def distroless_build_arch(arch, manifest):
distroless_builder = self.render_full_tag(
Image("alt/distroless-builder"), self.branch
Image("alt/distroless-builder"), "latest"
)
distroless = self.distrolesses[image.canonical_name]
distroless.render_arch_branch(arch, self.branch)
@ -486,7 +668,7 @@ class DockerBuilder:
build_arches = set(arches) - set(
self.images_info.skip_arches(image.canonical_name)
)
tags = self.tags.tags(self.branch, image)
tags = self.tags.tags(self.branch, image, self.tasks)
manifest = self.render_full_tag(image, tags[0])
msg = "Building image {} for {} arches".format(
@ -537,7 +719,7 @@ class DockerBuilder:
self.images_info.skip_arches(image.canonical_name)
)
platforms = ",".join([f"linux/{a}" for a in build_arches])
tags = self.tags.tags(self.branch, image)
tags = self.tags.tags(self.branch, image, self.tasks)
manifest = self.render_full_tag(image, tags[0])
msg = "Building image {} for {} arches".format(
@ -580,6 +762,12 @@ class DockerBuilder:
f"--platform={platforms}",
".",
]
if PKG_VERSIONS is not None and image.canonical_name in PKG_VERSIONS:
build_cmd.insert(
-1, f"--build-arg=PKG_VERSION={PKG_VERSIONS[image.canonical_name]}"
)
self.run(build_cmd, cwd=image.path)
for tag in tags[1:]:
@ -591,7 +779,7 @@ class DockerBuilder:
if self.images_info.skip_branch(image.canonical_name, self.branch):
return
tags = self.tags.tags(self.branch, image)
tags = self.tags.tags(self.branch, image, self.tasks)
manifests = [self.render_full_tag(image, t) for t in tags]
for manifest in manifests:
@ -609,6 +797,24 @@ class DockerBuilder:
self.run(cmd)
global clean_images_counter
if clean_images_limit_count <= clean_images_counter:
cmd = [
"podman",
"rmi",
"--all",
"-f",
]
self.run(cmd,
check=False,
stderr=subprocess.DEVNULL,
stdout=subprocess.DEVNULL,
)
clean_images_counter = 0
else:
clean_images_counter += 1
class ImagesInfo:
def __init__(self):
@ -638,12 +844,14 @@ class ImagesInfo:
def parse_args():
stages = ["build", "remove_dockerfiles", "render_dockerfiles", "push"]
arches = ["amd64", "386", "arm64"]
arches = ["amd64", "386", "arm64", "loong64", "riscv64"]
branches = ["p11", "p10", "sisyphus", "c10f1", "c10f2"]
organizations = list(ORG_DIR.iterdir())
images = [f"{o.name}/{i.name}" for o in organizations for i in o.iterdir()]
organizations = [o.name for o in organizations]
log_levels = ["debug", "info", "warning", "error", "critical"]
parser = argparse.ArgumentParser(
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
)
@ -749,6 +957,17 @@ def parse_args():
choices=stages,
help="list of stages to skip",
)
parser.add_argument(
"--package-versions",
type=json.loads,
help="json string where key is image name, value is the package version",
)
parser.add_argument(
"--log-level",
default="warning",
choices=log_levels,
help="log messages above specified level",
)
args = parser.parse_args()
args.stages = set(args.stages) - set(args.skip_stages)
@ -760,7 +979,18 @@ def parse_args():
def main():
global PKG_VERSIONS
args = parse_args()
PKG_VERSIONS = args.package_versions
numeric_level = getattr(logging, args.log_level.upper(), logging.WARNING)
logging.basicConfig(
level=numeric_level, format="%(asctime)s - %(levelname)s\t- %(message)s"
)
logger.info("PKG_VERSIONS=%s", PKG_VERSIONS)
arches = args.arches
images_info = ImagesInfo()
tags = Tags(args.tags, args.latest)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

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

View File

@ -1,3 +0,0 @@
from = "{{ registry }}{{ organization }}/distroless-base:{{ branch }}"
full-files = ["/usr/bin/gotop"]
entrypoint = ["/usr/bin/gotop"]

View File

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

View File

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

View File

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

View File

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

View File

@ -1 +0,0 @@
etcdctl version

View File

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

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

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

View File

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

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

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

View File

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

View File

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

View File

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

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

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

View File

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

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

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

View File

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

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

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

View File

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

View File

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

View File

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

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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

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

View File

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

View File

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

View File

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

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

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

View File

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

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

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

View File

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

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

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

View File

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

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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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