56 Commits

Author SHA1 Message Date
57bcce92b5 remove unused variables 2024-11-06 21:25:14 +03:00
c553e50d53 define ARG only if needed, allow jinja2 control flow in package names 2024-11-06 21:23:24 +03:00
bb085c8498 make PKG_VERSION into a dictionary of PKG_VERSIONS 2024-11-06 20:57:26 +03:00
dd9866702e add info.yaml files for k8s images 2024-11-06 20:57:26 +03:00
6235bdb955 fix installed package for kubernetes images 2024-11-06 20:57:26 +03:00
ad980dbb06 strip whitespace from rendered tag 2024-11-06 19:51:40 +03:00
d4f88412bf add templating for tag and package name in info.yaml 2024-10-23 16:15:16 +03:00
0c09627b12 try automatic package version detection 2024-10-23 13:13:53 +03:00
d095e0832e fix: move LABEL commands to the end of Dockerfile.template
Since all the commands except ENTRYPOINT in cert-manager and kubernetes
Dockerfiles are the same, we can utilize the cached layers when building
images in batch, but LABEL commands prevented it from happening, because
labels are different for each image. Thus the cache is invalidated.

By moving LABELs after the common commands we allow cached layers
to be reused for every image, thus speeding up the build process.
2024-10-23 12:42:59 +03:00
ccea111eff add exlusion for building images
Some checks failed
Full building alt images / build-process (push) Failing after 3h10m15s
Full building alt images / test-process (push) Has been cancelled
2024-10-16 13:58:16 +03:00
7fea91a372 fix command run-test
Some checks failed
Building alt images / build-process (push) Successful in 4m45s
Building alt images / test-process (push) Successful in 1m29s
Full building alt images / test-process (push) Has been cancelled
Full building alt images / build-process (push) Has been cancelled
2024-09-27 16:48:27 +03:00
4f1a12d561 fix: k8s/trivy-node-collector missing package
Some checks failed
Building alt images / build-process (push) Successful in 4m27s
Building alt images / test-process (push) Failing after 1m26s
2024-09-26 17:20:40 +03:00
1e018cfc07 add organization flag to single building
Some checks failed
Building alt images / build-process (push) Successful in 5m45s
Building alt images / test-process (push) Failing after 1m51s
2024-09-26 17:04:25 +03:00
19cc3e9200 add tags flag to single building
Some checks failed
Building alt images / build-process (push) Successful in 5m33s
Building alt images / test-process (push) Failing after 1m52s
2024-09-26 15:22:44 +03:00
0e21a9248a feat: update k8s/trivy-node-collector 2024-09-26 14:12:46 +03:00
8d9a890573 feat: update k8s/trivy-node-collector
All checks were successful
Building alt images / build-process (push) Successful in 4m12s
Building alt images / test-process (push) Has been skipped
2024-09-26 13:09:46 +03:00
b0178e587a add in single wf setting apt repo for c10f2
Some checks failed
Full building alt images / build-process (push) Successful in 2h34m0s
Full building alt images / test-process (push) Successful in 7m24s
Building alt images / build-process (push) Successful in 6m56s
Building alt images / test-process (push) Failing after 1m42s
2024-09-18 12:59:27 +03:00
f7e8ff3059 add skip branch c10 for ansible image
Some checks failed
Building alt images / build-process (push) Successful in 6m4s
Building alt images / test-process (push) Failing after 1m46s
Full building alt images / build-process (push) Failing after 3h10m56s
Full building alt images / test-process (push) Has been cancelled
2024-09-03 15:05:37 +03:00
085e251c81 update tags.toml for cert-manager and flannel
All checks were successful
Full building alt images / build-process (push) Successful in 2h19m33s
Full building alt images / test-process (push) Has been skipped
2024-08-21 14:12:11 +03:00
704f9912e1 add ansible image
All checks were successful
Building alt images / build-process (push) Successful in 3m14s
Building alt images / test-process (push) Has been skipped
2024-08-21 12:57:54 +03:00
30c0e3df57 fix test for loki 2024-08-14 16:23:50 +03:00
430219d6d0 add temporary patchig sourceslist for p11 while it's not published
All checks were successful
Full building alt images / build-process (push) Successful in 2m11s
Full building alt images / test-process (push) Has been skipped
2024-08-14 12:27:01 +03:00
abddecf404 fix entrypoint in test by podman after usrmerge
All checks were successful
Building alt images / build-process (push) Successful in 5m47s
Building alt images / test-process (push) Successful in 1m47s
Full building alt images / build-process (push) Successful in 2m9s
Full building alt images / test-process (push) Has been skipped
2024-08-07 17:10:32 +03:00
78259d754d fix openjdk template
Some checks failed
Building alt images / build-process (push) Successful in 5m57s
Building alt images / test-process (push) Failing after 1m48s
2024-08-07 16:30:44 +03:00
cdb4d9d2f8 add new exclusion for images
Some checks failed
Building alt images / build-process (push) Successful in 6m18s
Building alt images / test-process (push) Failing after 2m8s
2024-08-07 15:59:23 +03:00
8da835e2b6 fix tests
All checks were successful
Building alt images / build-process (push) Successful in 6m31s
Building alt images / test-process (push) Successful in 1m57s
Full building alt images / build-process (push) Successful in 2h20m30s
Full building alt images / test-process (push) Has been skipped
2024-08-07 12:44:30 +03:00
3f4409b2c4 fix entrypoint in test by podman after usrmerge
Some checks failed
Building alt images / test-process (push) Has been cancelled
Building alt images / build-process (push) Has been cancelled
2024-08-07 11:46:59 +03:00
4a434a443b fix testing in single_wf
Some checks failed
Building alt images / build-process (push) Successful in 5m56s
Building alt images / test-process (push) Failing after 1m55s
2024-08-06 18:52:06 +03:00
79f5a1def4 fix build template for distroless-base image
Some checks failed
Building alt images / build-process (push) Successful in 6m22s
Building alt images / test-process (push) Failing after 1m32s
2024-08-06 18:14:07 +03:00
9145f4635d add workflow for single image building
All checks were successful
Building alt images / build-process (push) Successful in 2m55s
Building alt images / test-process (push) Has been skipped
2024-08-06 17:28:09 +03:00
2314b3aba8 add openjdk
All checks were successful
Full building alt images / build-process (push) Successful in 2h25m1s
Full building alt images / test-process (push) Has been skipped
2024-08-06 13:01:40 +03:00
63fc9e2440 add images postgresql rabbitmq 2024-08-06 13:01:40 +03:00
8e68d73e10 add tests to new images in org/alt 2024-08-06 13:01:40 +03:00
eb04d81fa7 docs: update README.md 2024-06-10 16:46:34 +03:00
4b4609ea9b add workflow for p11
Some checks failed
Full building alt images / test-process (push) Has been cancelled
Full building alt images / build-process (push) Has been cancelled
2024-06-10 13:05:48 +03:00
733f065152 fix grafana template 2024-06-10 13:05:26 +03:00
0e8a71d1cf add branch p11 2024-06-10 12:45:32 +03:00
359481a018 add images grafana loki golang php 2024-06-07 17:27:23 +03:00
8466221285 add images prometheus, python2 2024-06-04 18:47:09 +03:00
ab4b19f839 feat: add new cert-manager images
- cert-manager-startupapicheck
- cert-manager-acmesolver
2024-05-29 16:16:57 +03:00
3f432b2a9a feat: upadate cert-manager images 2024-05-29 16:16:36 +03:00
f8496320dd delete arches ppc64le arm from building script
All checks were successful
Full building alt images / build-process (push) Successful in 1h27m19s
Full building alt images / test-process (push) Successful in 5m33s
2024-05-08 18:20:50 +03:00
8cdee0b278 feat: Add trivy 2024-05-08 17:08:59 +03:00
8cc6581c18 fix systemd's label
Some checks failed
Full building alt images / build-process (push) Failing after 1m4s
Full building alt images / test-process (push) Has been skipped
2024-05-08 09:27:55 +03:00
4bef9210e6 docs: fix distroless-builder description 2024-05-03 13:05:11 +03:00
6944bb7158 feat: add labels to the k8s/kube-* images 2024-05-02 12:01:46 +03:00
e60d4a6450 refactor: make help message more readable 2024-05-01 18:50:33 +03:00
d31ae53893 fix: correct help message for -i/--images option 2024-05-01 18:49:45 +03:00
d3a5f23958 feat: add zot Dockerfile.template and test 2024-04-26 16:29:36 +03:00
f55f03f91d refactor: fix typo in install_pakage 2024-04-26 12:34:41 +03:00
fa20517058 add repo to /etc/host for building c10f2
All checks were successful
Full building alt images / build-process (push) Successful in 1h15m43s
Full building alt images / test-process (push) Successful in 5m1s
2024-04-25 11:15:52 +03:00
ad9a468aa6 update tags for k8s
Some checks failed
Full building alt images / build-process (push) Failing after 1m6s
Full building alt images / test-process (push) Has been cancelled
2024-04-23 17:43:14 +03:00
86fba1814f fix getting number of tech.issue for notifications to static number 1 (filter on tag doesn't work)
All checks were successful
Full building alt images / build-process (push) Successful in 1h16m21s
Full building alt images / test-process (push) Successful in 5m51s
2024-04-23 13:35:41 +03:00
28b280556b delete from workflow building images on c10f1/2 for arches arm, ppc
All checks were successful
Full building alt images / build-process (push) Successful in 2m17s
Full building alt images / test-process (push) Has been skipped
2024-04-23 13:09:37 +03:00
deee1706de add workflow for building all images on branches p10, c10f1/2
All checks were successful
Full building alt images / build-process (push) Successful in 5m55s
Full building alt images / test-process (push) Has been skipped
2024-04-22 17:24:17 +03:00
a59901c4bf add branches c10f1,c10f2 to list of options 2024-04-22 17:17:14 +03:00
153 changed files with 1091 additions and 528 deletions

View File

@ -24,20 +24,22 @@ do
then imgpath="$2-$1/$IM:latest"
fi
entrypoint='/bin/sh'
command="echo empty_command"
if [[ $test != '' ]]; then
command="podman run --rm --entrypoint=\"/bin/sh\" $3/$imgpath -c \"$test\""
command="podman run --rm --entrypoint=\"$entrypoint\" $3/$imgpath -c \"$test\""
else
if [[ $IM = 'distroless-true' ]]; then
if [[ $IM == 'distroless-true' ]]; then
command="podman run --rm $3/$imgpath \"true\""
fi
if [[ $IM = 'distroless-gotop' ]]; then
if [[ $IM == 'distroless-gotop' ]]; then
command="podman run --rm $3/$imgpath \"--version\""
fi
if [[ $IM = 'flannel-cni-plugin' ]]; then
if [[ $IM == 'flannel-cni-plugin' ]]; then
command="podman run --rm $3/$imgpath \"/flannel\""
fi
if [[ $IM = 'pause' ]]; then
if [[ $IM == 'pause' ]]; then
command="podman run --rm $3/$imgpath \"/pause\" \"-v\""
fi
fi

View File

@ -25,6 +25,13 @@ 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
@ -55,7 +62,6 @@ jobs:
id: build-script
run: |
build_args="-b $BR -o $ORG --skip-images alt/distroless-devel"
if [[ $BR == 'c10f1' || $BR == 'c10f2' ]]; then build_args="$build_args --skip-arches arm ppc64le"; fi
if [[ $ORG == 'k8s' ]]; then build_args="$build_args --tags tags.toml --overwrite-organization $ORG-$BR --skip-images k8s/kube-apiserver k8s/kube-controller-manager k8s/kube-proxy k8s/kube-scheduler"; fi
echo "build.py $build_args"
${{ gitea.workspace }}/build.py $build_args

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

@ -55,7 +55,6 @@ jobs:
id: build-script
run: |
build_args="-b $BR -o $ORG --skip-images alt/distroless-devel"
if [[ $BR == 'sisyphus' ]]; then build_args="$build_args --skip-arches arm"; fi
if [[ $ORG == 'k8s' ]]; then build_args="$build_args --tags tags.toml --overwrite-organization $ORG-$BR --skip-images k8s/kube-apiserver k8s/kube-controller-manager k8s/kube-proxy k8s/kube-scheduler"; fi
echo "build.py $build_args"
${{ gitea.workspace }}/build.py $build_args

View File

@ -0,0 +1,159 @@
name: Building alt images
on:
push:
tags:
- '*_*/*'
jobs:
build-process:
runs-on: alt-latest
outputs:
branch: ${{ env.BRANCH }}
image: ${{ env.IMAGE }}
url: ${{ env.URL }}
repo: ${{ env.REPO }}
buildres: ${{ steps.build-script.outcome }}
test: ${{ env.TEST }}
steps:
- name: Check workspace
run: |
repourl=$(echo $GU | cut -d '/' -f 3)
echo "URL=$repourl" >> ${GITHUB_ENV}
echo "URL=$repourl"
reponame=$(echo $GR | cut -d '/' -f 1)
echo "REPO=$reponame" >> ${GITHUB_ENV}
echo "REPO=$reponame"
env:
GU: ${{ gitea.server_url }}
GR: ${{ gitea.repository }}
- name: Set repo for c10f2 (Temporary)
if: ${{ contains(github.ref_name, 'c10f2') }}
run: |
echo "event tag=${{ github.ref_name }}"
echo "10.4.0.3 update.altsp.su" >> /etc/hosts
echo "cat /etc/hosts"
cat /etc/hosts
- name: Update apt
uses: actions/init-alt-env@v1
- name: Install requires
run: |
echo "apt-get install -y python3-module-tomli python3-module-jinja2 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: Login podman gitea
run: |
echo "podman login ${{ env.URL }}"
podman login --username $P_USER --password $P_PASS ${{ env.URL }}
env:
P_USER: ${{ secrets.PODMAN_USER }}
P_PASS: ${{ secrets.PODMAN_PASS }}
- name: Check files in the repository
run: |
ls -a ${{ gitea.workspace }}
- name: Parse target branch and tag from events context, save to env
env:
EV: ${{ toJson(gitea.event) }}
run: |
echo $EV | jq '.ref' -r | sed "s/refs\/tags\//BRANCH=/g" | cut -d '_' -f 1
echo $EV | jq '.ref' -r | sed "s/refs\/tags\//BRANCH=/g" | cut -d '_' -f 1 >> ${GITHUB_ENV}
localimage=$(echo $EV | jq '.ref' -r | sed 's/refs\/tags\///g' | cut -d '_' -f 2)
echo "IMAGE=$localimage" >> ${GITHUB_ENV}
echo "IMAGE=$localimage"
org=$(echo "$localimage" | cut -d '/' -f 1)
echo "ORG=$org" >> ${GITHUB_ENV}
echo "ORG=$org"
- name: Get test for image
run: |
if test -f ${{ gitea.workspace }}/org/$IM/test; then testscript=$(cat ${{ gitea.workspace }}/org/$IM/test); else testscript=""; fi
echo "TEST=$testscript" >> ${GITHUB_ENV}
env:
IM: ${{ env.IMAGE }}
BR: ${{ env.BRANCH }}
- name: Run building script
id: build-script
run: |
if [[ "$IM" == *"k8s"* ]]; then k8sarg="--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
env:
IM: ${{ env.IMAGE }}
BR: ${{ env.BRANCH }}
ORG: ${{ env.ORG }}
continue-on-error: true
- name: Send notification if build crashed
if: ${{ steps.build-script.outcome != 'success' }}
run: |
issueid=1
body="Building image $IM finish with some errors."
curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s
echo "notification about test error is sent to issue $issueid"
env:
T: ${{ secrets.TOKEN }}
BR: ${{ env.BRANCH }}
URL: ${{ gitea.server_url }}
REPO: ${{ env.REPO }}
IM: ${{ env.IMAGE }}
- name: Delete event tag
run: |
tagname=$(echo $EV | jq '.ref' -r | sed "s/refs\/tags\///g")
curl -X 'DELETE' "$URL/api/v1/repos/$REPO/image-forge/tags/$tagname?token=$T" -H 'accept: application/json' -s
echo "tag $tagname is deleted"
env:
T: ${{ secrets.TOKEN }}
BR: ${{ env.BRANCH }}
URL: ${{ gitea.server_url }}
REPO: ${{ env.REPO }}
EV: ${{ toJson(gitea.event) }}
test-process:
needs: build-process
if: ${{ needs.build-process.outputs.buildres == 'success' }}
runs-on: alt-latest
steps:
- name: Update apt
uses: https://gitea.basealt.ru/actions/init-alt-env@v1
- name: Install requires
run: |
echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah curl"
apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah curl
- name: Run test
id: test-script
if: ${{ needs.build-process.outputs.test != '' }}
continue-on-error: true
run: |
if [[ "$IM" == *"k8s"* ]]; then echo "skip tests for k8s images"; else podman run --rm --entrypoint="/bin/sh" $URL/$IM:$BR -c "$TEST"; fi
env:
IM: ${{ needs.build-process.outputs.image }}
BR: ${{ needs.build-process.outputs.branch }}
URL: ${{ needs.build-process.outputs.url }}
REPO: ${{ needs.build-process.outputs.repo }}
TEST: ${{ needs.build-process.outputs.test }}
- name: Run special test
id: special-test
if: ${{ needs.build-process.outputs.test == '' }}
continue-on-error: true
run: |
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
env:
IM: ${{ needs.build-process.outputs.image }}
BR: ${{ needs.build-process.outputs.branch }}
URL: ${{ needs.build-process.outputs.url }}
REPO: ${{ needs.build-process.outputs.repo }}
- name: Send notification if test crashed
if: ${{ steps.test-script.outcome == 'failure' || steps.special-test.outcome == 'failure' }}
run: |
issueid=1
errors=$(cat errors.log)
body="Testing image $IM finish with some errors."
curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s
echo "notification about test error is sent to issue $issueid"
env:
T: ${{ secrets.TOKEN }}
BR: ${{ needs.build-process.outputs.branch }}
URL: ${{ gitea.server_url }}
REPO: ${{ needs.build-process.outputs.repo }}
IM: ${{ needs.build-process.outputs.image }}

1
.gitignore vendored
View File

@ -0,0 +1 @@
Dockerfile

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,65 +0,0 @@
version: 1.0
imageSet:
- version: 1.26.9
images:
- kube-apiserver:
tag: 1.26.9
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- kube-controllermanager:
tag: 1.26.9
alias: k8s-${BRANCH}/${IMAGE}:${TAG}
- kube-proxy:
tag: 1.26.9
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- kube-scheduler:
tag: 1.26.9
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- pause:
tag: 3.8
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- coredns:
tag: v1.10.0
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- etcd:
tag: 3.5.9
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- alt/etcd:3.5.9
- version: 1.26.14
images:
- kube-apiserver:
tag: 1.26.14
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- kube-controllermanager:
tag: 1.26.14
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- kube-proxy:
tag: 1.26.14
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- kube-scheduler:
tag: 1.26.14
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- pause:
tag: 3.9
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- coredns:
tag: v1.10.0
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- etcd:
tag: 3.5.10
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- alt/etcd:3.5.10

View File

@ -1,41 +0,0 @@
version: 1.0
imageSet:
listCmd: ...
- version: 1.26.9
images:
- kube-apiserver:
tag: 1.26.9
- kube-controllermanager:
tag: 1.26.9
- kube-proxy:
tag: 1.26.9
- kube-scheduler:
tag: 1.26.9
- pause:
tag: 3.8
- coredns:
tag: v1.10.0
- etcd:
tag: 3.5.9
alias:
- alt/etcd:3.5.9
- version: 1.26.14
images:
- kube-apiserver:
tag: 1.26.14
- kube-controllermanager:
tag: 1.26.14
- kube-proxy:
tag: 1.26.14
- kube-scheduler:
tag: 1.26.14
- pause:
tag: 3.9
- coredns:
tag: v1.10.0
- etcd:
tag: 3.5.10
alias:
- alt/etcd:3.5.10

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

161
build.py
View File

@ -6,25 +6,61 @@ import json
import re
import subprocess
import textwrap
from dataclasses import dataclass
from graphlib import TopologicalSorter
from pathlib import Path
import requests
import tomli
import yaml
from jinja2 import Template
ORG_DIR = Path("org")
PKG_VERSIONS: dict | None = None
@dataclass
class Image:
def __init__(self, canonical_name):
canonical_name: str
is_versioned: bool | None
verion_template: str | None
source_packages: list[str] | None
def __init__(self, canonical_name: str):
self.canonical_name = canonical_name
self.path = ORG_DIR / canonical_name
self.base_name = re.sub("^[^/]+/", "", canonical_name)
def __str__(self):
return (f'Image(canonical_name="{self.canonical_name}", '
f'path="{self.path}", base_name="{self.base_name}")')
info_file = self.path / "info.yaml"
if not info_file.exists():
self.is_versioned = None
self.source_packages = None
return
info: dict = yaml.safe_load(info_file.read_text())
if "is_versioned" not in info:
raise RuntimeError(
f"info.yaml for {self.canonical_name} doesn't contain 'is_versioned' key"
)
if "source_packages" not in info:
raise RuntimeError(
f"info.yaml for {self.canonical_name} doesn't contain 'source_packages' key"
)
self.is_versioned = info["is_versioned"]
self.source_packages = info["source_packages"]
if self.is_versioned and not self.source_packages:
raise RuntimeError(
f"source_packages for {self.canonical_name} doesn't contain any values"
)
self.version_template = None
if "version_template" in info:
self.version_template = info["version_template"]
class Tasks:
@ -49,18 +85,67 @@ class Tasks:
]
def api_get_source_package_version(branch: str, package_name: str) -> str:
api_url = "https://rdb.altlinux.org/api/site/package_versions_from_tasks"
params = {"branch": branch, "name": package_name}
response = requests.get(api_url, params)
if response.status_code != 200:
print(response)
raise RuntimeError(
f"failed to retrieve source package version: source package {package_name!r}, branch {branch!r} "
)
result = response.json()
return result["versions"][0]["version"]
class Tags:
def __init__(self, tags_file, latest):
def __init__(self, tags_file: str | None, latest: str):
if tags_file is None:
self._tags = None
else:
tags_file = Path(tags_file)
self._tags = tomli.loads(tags_file.read_text())
self._tags = tomli.loads(Path(tags_file).read_text())
self._latest = latest
def tags(self, branch, image: Image):
def tags(self, branch: str, image: Image):
if self._tags is None:
tags = [branch]
if image.is_versioned and image.source_packages:
package_name = image.source_packages[0]
if re.search("{%.*%}", package_name):
package_name = Template(package_name).render(branch=branch).strip()
print(f"{package_name=}")
if re.search("{{.*}}", package_name):
if PKG_VERSIONS is None:
raise RuntimeError(
f"--package-versions option is not specified, required for {image.canonical_name!r}"
)
if image.canonical_name not in PKG_VERSIONS:
raise RuntimeError(
f"--package-versions option does not contain version for image {image.canonical_name!r}"
)
if not PKG_VERSIONS[image.canonical_name]:
raise RuntimeError(
f"invalid version for image {image.canonical_name!r}: {PKG_VERSIONS[image.canonical_name]!r}"
)
package_name = Template(package_name).render(
version=PKG_VERSIONS[image.canonical_name]
)
version = api_get_source_package_version(branch, package_name)
if image.version_template is not None:
version = (
Template(image.version_template).render(version=version).strip()
)
tags = [version]
else:
tags = [branch]
else:
tags = self._tags[image.canonical_name][branch].copy()
if branch == self._latest:
@ -225,7 +310,7 @@ class DockerBuilder:
self,
template: str,
organization: str,
install_pakages=None,
install_packages=None,
**kwargs,
) -> str:
if self.registry:
@ -237,7 +322,7 @@ class DockerBuilder:
rendered = Template(template).render(
alt_image=alt_image,
branch=self.branch,
install_pakages=install_pakages,
install_packages=install_packages,
organization=organization,
registry=registry,
**kwargs,
@ -247,7 +332,7 @@ class DockerBuilder:
@forall_images(consume_result=True)
def render_dockerfiles(self, **kwargs):
def install_pakages(*names):
def install_packages(*names):
tasks = self.tasks.get(self.branch, kwargs["image"])
linux32 = '$([ "$(rpm --eval %_host_cpu)" = i586 ] && echo linux32)'
if tasks:
@ -273,7 +358,7 @@ class DockerBuilder:
rendered = self.render_template(
dockerfile_template.read_text(),
self.overwrite_organization,
install_pakages,
install_packages,
)
kwargs["dockerfile"].write_text(rendered + "\n")
@ -580,6 +665,12 @@ class DockerBuilder:
f"--platform={platforms}",
".",
]
if PKG_VERSIONS is not None and image.canonical_name in PKG_VERSIONS:
build_cmd.insert(
-1, f"--build-arg=PKG_VERSION={PKG_VERSIONS[image.canonical_name]}"
)
self.run(build_cmd, cwd=image.path)
for tag in tags[1:]:
@ -638,8 +729,8 @@ class ImagesInfo:
def parse_args():
stages = ["build", "remove_dockerfiles", "render_dockerfiles", "push"]
arches = ["amd64", "386", "arm64", "arm", "ppc64le"]
branches = ["p9", "p10", "sisyphus", "c10f1", "c10f2"]
arches = ["amd64", "386", "arm64"]
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]
@ -654,7 +745,8 @@ def parse_args():
nargs="+",
default=images,
choices=images,
help="list of branches",
metavar="IMAGE_NAME",
help="list of images to build",
)
images_group.add_argument(
"-o",
@ -664,6 +756,14 @@ def parse_args():
choices=organizations,
help="build all images from these organizations",
)
parser.add_argument(
"--skip-images",
nargs="+",
default=[],
choices=images,
metavar="IMAGE_NAME",
help="list of images to skip",
)
parser.add_argument(
"-r",
"--registry",
@ -696,27 +796,20 @@ def parse_args():
parser.add_argument(
"--sign",
)
parser.add_argument(
"--skip-images",
nargs="+",
default=[],
choices=images,
help="list of skipping images",
)
parser.add_argument(
"-a",
"--arches",
nargs="+",
default=arches,
choices=arches,
help="list of arches",
help="build images for these architectures",
)
parser.add_argument(
"--skip-arches",
nargs="+",
default=[],
choices=arches,
help="list of skipping arches",
help="list of architectures to skip",
)
parser.add_argument(
"-b",
@ -724,28 +817,33 @@ def parse_args():
nargs="+",
default=branches,
choices=branches,
help="list of branches",
help="build images for these branches",
)
parser.add_argument(
"--skip-branches",
nargs="+",
default=[],
choices=branches,
help="list of skipping branches",
help="list of branches to skip",
)
parser.add_argument(
"--stages",
nargs="+",
default=stages,
choices=stages,
help="list of stages",
help="list of stages to go through",
)
parser.add_argument(
"--skip-stages",
nargs="+",
default=[],
choices=stages,
help="list of skipping stages",
help="list of stages to skip",
)
parser.add_argument(
"--package-versions",
type=json.loads,
help="json string where key is image name, value is the package version",
)
args = parser.parse_args()
@ -758,7 +856,10 @@ def parse_args():
def main():
global PKG_VERSIONS
args = parse_args()
PKG_VERSIONS = args.package_versions
arches = args.arches
images_info = ImagesInfo()
tags = Tags(args.tags, args.latest)

View File

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

View File

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

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

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

View File

@ -8,7 +8,7 @@ LABEL org.opencontainers.image.source="http://httpd.apache.org"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_pakages("apache2") }}
{{ install_packages("apache2") }}
EXPOSE 80

View File

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

View File

@ -6,7 +6,7 @@ LABEL org.opencontainers.image.title="buildpack-deps-curl"
LABEL org.opencontainers.image.licenses="GPLv2"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_pakages(
{{ install_packages(
"ca-certificates",
"curl",
"gnupg",

View File

@ -6,7 +6,7 @@ LABEL org.opencontainers.image.title="buildpack-deps-scm"
LABEL org.opencontainers.image.licenses="GPLv2"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_pakages(
{{ install_packages(
"git",
"mercurial",
"openssh-clients",

View File

@ -6,7 +6,7 @@ LABEL org.opencontainers.image.title="buildpack-deps"
LABEL org.opencontainers.image.licenses="GPLv2"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_pakages(
{{ install_packages(
"ImageMagick",
"autoconf",
"automake",

View File

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

View File

@ -4,8 +4,8 @@ builder-install-packages = [
'{{if_branches(["p10"], "glibc-nss")}}',
"glibc-timezones",
"libselinux",
'{{if_branches(["p9", "p10"], "libssl1.1")}}',
'{{if_branches(["sisyphus"], "libssl1.1")}}',
'{{if_branches(["p10"], "libssl1.1")}}',
'{{if_branches(["p11"], "libssl3")}}',
'{{if_branches(["sisyphus"], "libssl3")}}',
"tzdata",
"zlib",

View File

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

View File

@ -1,3 +1,3 @@
ALT dockerfile for distroless-builder image.
This images is using to build tarball for distroless images.
This image is used to build tarballs for distroless images.

View File

@ -8,7 +8,7 @@ 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_pakages("etcd") }}
{{ install_packages("etcd") }}
VOLUME /data

View File

@ -8,7 +8,7 @@ LABEL org.opencontainers.image.source="https://github.com/go-gitea/gitea"
LABEL org.opencontainers.image.licenses="MIT"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_pakages("gitea", "openssh-server", "gosu") }}
{{ install_packages("gitea", "openssh-server", "gosu") }}
ENV USER gitea
ENV HOME /var/lib/gitea

View File

@ -0,0 +1,11 @@
FROM {{ registry }}{{ organization }}/base:{{ branch }}
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="golang"
LABEL org.opencontainers.image.description="The Golang environment for development"
LABEL org.opencontainers.image.source="https://github.com/golang/go"
LABEL org.opencontainers.image.licenses="BSD"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("golang") }}

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

@ -0,0 +1 @@
go version

View File

@ -0,0 +1,22 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="grafana"
LABEL org.opencontainers.image.description="Metrics dashboard and graph editor"
LABEL org.opencontainers.image.source="https://github.com/grafana/grafana"
LABEL org.opencontainers.image.licenses="AGPL-3.0-only AND Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("grafana") }}
USER grafana
EXPOSE 3000
VOLUME ["/var/lib/grafana"]
ENV GF_PATHS_PROVISIONING=/etc/grafana/provisioning
ENV GF_AUTH_ANONYMOUS_ENABLED=true
ENV GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
ENTRYPOINT [ "/usr/bin/grafana" ]
CMD [ "server", "--config=/etc/grafana/grafana.ini", "--homepath=/usr/share/grafana", "--packaging=docker", "-configOverrides='cfg:default.paths.provisioning=/etc/grafana/provisioning cfg:default.paths.data=/var/lib/grafana cfg:default.paths.logs=/var/log/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins'" ]

View File

@ -0,0 +1,6 @@
# Prometheus image
Command for run:
```
docker run -d --name="grafana" -p 3000:3000 -v grafana-data:/var/lib/grafana IMAGENAME
```

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

@ -0,0 +1 @@
grafana --version

View File

@ -0,0 +1,19 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="loki"
LABEL org.opencontainers.image.description="Like Prometheus, but for logs"
LABEL org.opencontainers.image.source="https://github.com/grafana/loki"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("loki") }}
USER _loki:_loki
VOLUME ["/var/lib/loki", "/etc/loki/loki.yml"]
EXPOSE 3100
ENTRYPOINT ["/usr/bin/loki"]
CMD ["-config.file=/etc/loki/loki.yaml"]

6
org/alt/loki/README.md Normal file
View File

@ -0,0 +1,6 @@
# Prometheus image
Command for run:
```
docker run -d --name="loki" -p 3100:3100 -v loki-data:/var/lib/loki -v loki-config:/etc/loki/loki.yaml IMAGENAME
```

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

@ -0,0 +1 @@
loki -version -config.file=/etc/loki/loki.yaml

View File

@ -8,7 +8,7 @@ LABEL org.opencontainers.image.source="https://nginx.org/"
LABEL org.opencontainers.image.licenses="BSD"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_pakages("nginx", "apache2-html", "tzdata") }}
{{ install_packages("nginx", "apache2-html", "tzdata") }}
RUN cd /etc/nginx/sites-enabled.d && ln -s ../sites-available.d/default.conf .

View File

@ -11,7 +11,7 @@ LABEL org.opencontainers.image.vendor="ALT Linux Team"
RUN groupadd --gid 1000 node \
&& useradd --uid 1000 --gid node --shell /bin/bash --create-home node
{{ install_pakages(
{{ install_packages(
"node",
"npm",
"yarn"

View File

@ -0,0 +1,14 @@
FROM {{ registry }}{{ organization }}/base:{{ branch }}
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="openjdk21"
LABEL org.opencontainers.image.description="OpenJDK 21 Runtime Environment"
LABEL org.opencontainers.image.source="https://openjdk-sources.osci.io"
LABEL org.opencontainers.image.licenses="Apache-1.1 and Apache-2.0 and BSD and BSD with advertising and GPL-2.0 and GPL-2.0 with exceptions and IJG and LGPL-2.0+ and MIT and MPL-2.0 and ALT-Public-Domain and W3C and Zlib and ISC and FTL and RSA-MD"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages(
"java-21-openjdk",
"java-21-openjdk-devel"
) }}

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

@ -0,0 +1 @@
javac --version && java --version

View File

@ -0,0 +1,14 @@
FROM {{ registry }}{{ organization }}/base:{{ branch }}
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="php"
LABEL org.opencontainers.image.description="The PHP language environment for development"
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"
{{ install_packages(
"php8.2",
"php8.2-xdebug",
) }}

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

@ -0,0 +1 @@
php --version

View File

@ -0,0 +1,20 @@
FROM {{ registry }}{{ organization }}/base:{{ branch }}
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="postgresql16"
LABEL org.opencontainers.image.description="PostgreSQL rograms and libraries"
LABEL org.opencontainers.image.source="https://github.com/postgres/postgres"
LABEL org.opencontainers.image.licenses="PostgreSQL"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("postgresql16","postgresql16-server") }}
RUN usermod -a -G postgres postgres
RUN chown -R postgres:postgres /var/lib/pgsql
USER postgres
WORKDIR /var/lib/pgsql
EXPOSE 5432
VOLUME [ "/var/lib/pgsql/data" ]

View File

@ -0,0 +1,16 @@
dockerfiles-alt-postgresql
==========================
ALT dockerfile for postgresql.
Copy Dockerfile somewhere and build the image:
`$ docker build --rm -t <username>/postgresql .`
And launch the rabbitmq-server container:
`docker run -d -p 5432:5432 --name="postgresql" -v pgsql-data:/var/lib/pgsql/data IMAGENAME`
First steps to start service and create db:
`/usr/bin/initdb /var/lib/pgsql/data`
`/usr/bin/pg_ctl -D /var/lib/pgsql/data -l logfile start`
`/usr/bin/createdb mydb`
`psql mydb`

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

@ -0,0 +1 @@
pg_ctl --version

View File

@ -0,0 +1,20 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="alertmanager"
LABEL org.opencontainers.image.description="The Alertmanager handles alerts sent by client applications"
LABEL org.opencontainers.image.source="https://github.com/prometheus/alertmanager"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_packages("prometheus-alertmanager") }}
WORKDIR /var/lib/prometheus/alertmanager
RUN useradd -r -u 10001 alertmanager
RUN usermod -a -G prometheus alertmanager
USER alertmanager
EXPOSE 9093
VOLUME [ "/var/lib/prometheus/alertmanager" ]
ENTRYPOINT [ "/usr/bin/prometheus/alertmanager" ]
CMD [ "--config.file=/etc/prometheus/alertmanager.yml" ]

View File

@ -0,0 +1,11 @@
# Prometheus alertmanager image
Command for run:
```
docker run -d --name="alertmanager" -p 9093:9093 -v promdata-am:/var/lib/prometheus/alertmanager IMAGENAME
```
*If you want to be able to view services on localhost, instead of -p, specify the flag:
```
--network="host"
```

View File

@ -0,0 +1 @@
alertmanager --version

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