Compare commits

..

16 Commits

Author SHA1 Message Date
ddb09cdefd wip 2025-06-23 22:29:41 +03:00
3ebd1a8b7e wip 2025-06-23 22:25:49 +03:00
7a07b6f9a5 wip 2025-06-23 22:23:17 +03:00
0bc8fb228d wip
Some checks failed
Building alt images / test-process (push) Has been cancelled
Building alt images / build-process (push) Has been cancelled
2025-06-23 21:52:27 +03:00
6cbde103dd fix(alt/php, alt/ruby): strip whitespace, don't use 'raw' blocks 2025-06-18 11:20:32 +03:00
14c787b0db delete org/alt/etcd (duplicate org/k8s/etcd) 2025-06-18 10:42:19 +03:00
d161930947 fix(.gitea/workflow): change vendor label for c10f2 in single workflow 2025-06-17 18:15:04 +03:00
0c426721dd k8s/coredns: check key in dict before using it 2025-06-17 17:54:49 +03:00
0d08c6f88f build: pass tasks for distroless images 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 2025-05-07 12:11:51 +03:00
626b6feb4c fix vendor label for c10f2 in dostroless templates 2025-05-07 10:24:12 +03:00
69e7c13ea2 fix(.gitea/workflow): change vendor label for c10f2 2025-05-06 13:02:15 +03:00
15 changed files with 388 additions and 165 deletions

View File

@ -43,6 +43,17 @@ jobs:
org=$(echo $EV | jq '.ref' -r | sed 's/refs\/tags\///g' | cut -d '_' -f 2) org=$(echo $EV | jq '.ref' -r | sed 's/refs\/tags\///g' | cut -d '_' -f 2)
echo "ORG=$org" >> ${GITHUB_ENV} echo "ORG=$org" >> ${GITHUB_ENV}
echo "ORG=$org" echo "ORG=$org"
- name: Check out current repo
uses: actions/checkout@v4
- name: Change vendor label for c10f
if: ${{ contains(github.ref_name, 'c10f') }}
run: |
echo "sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/Dockerfile.template ||:"
sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/Dockerfile.template ||:
echo "sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/distroless.toml ||:"
sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/distroless.toml ||:
env:
ORG: ${{ env.ORG }}
- name: Set repo for c10f2 (Temporary) - name: Set repo for c10f2 (Temporary)
if: ${{ contains(github.ref_name, 'c10f2') }} if: ${{ contains(github.ref_name, 'c10f2') }}
run: | run: |
@ -50,8 +61,6 @@ jobs:
echo "10.4.0.3 update.altsp.su" >> /etc/hosts echo "10.4.0.3 update.altsp.su" >> /etc/hosts
echo "cat /etc/hosts" echo "cat /etc/hosts"
cat /etc/hosts cat /etc/hosts
- name: Check out current repo
uses: actions/checkout@v4
- name: Login podman gitea - name: Login podman gitea
run: | run: |
echo "podman login ${{ env.URL }}" echo "podman login ${{ env.URL }}"

View File

@ -0,0 +1,199 @@
name: Building alt images
on:
push:
tags:
- '*'
jobs:
build-process:
runs-on: alt-sisyphus
outputs:
branch: ${{ env.BRANCH }}
image: ${{ env.IMAGE }}
url: ${{ env.URL }}
repo: ${{ env.REPO }}
buildres: ${{ steps.build-script.outcome }}
test: ${{ env.TEST }}
steps:
- name: Check workspace
run: |
repourl=$(echo $GU | cut -d '/' -f 3)
echo "URL=$repourl" >> ${GITHUB_ENV}
echo "URL=$repourl"
reponame=$(echo $GR | cut -d '/' -f 1)
echo "REPO=$reponame" >> ${GITHUB_ENV}
echo "REPO=$reponame"
env:
GU: ${{ gitea.server_url }}
GR: ${{ gitea.repository }}
- name: Set repo for c10f2 (Temporary)
if: ${{ contains(github.ref_name, 'c10f2') }}
run: |
echo "event tag=${{ github.ref_name }}"
echo "10.4.0.3 update.altsp.su" >> /etc/hosts
echo "cat /etc/hosts"
cat /etc/hosts
- name: Update apt
uses: actions/init-alt-env@v1
- name: Install requires
run: |
echo "apt-get install -y python3-module-tomli python3-module-jinja2 python3-module-yaml python3-module-requests podman buildah jq curl"
apt-get install -y python3-module-tomli python3-module-jinja2 python3-module-yaml python3-module-requests podman buildah jq curl
echo "apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc qemu-user-static-binfmt-riscv qemu-user-static-binfmt-loongarch"
apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc qemu-user-static-binfmt-riscv qemu-user-static-binfmt-loongarch
- name: Check out current repo
uses: actions/checkout@v4
- name: Login podman gitea
run: |
echo "podman login ${{ env.URL }}"
podman login --username $P_USER --password $P_PASS ${{ env.URL }}
env:
P_USER: ${{ secrets.PODMAN_USER }}
P_PASS: ${{ secrets.PODMAN_PASS }}
- name: Check files in the repository
run: |
ls -a ${{ gitea.workspace }}
- name: Parse target branch and tag from events context, save to env
env:
EV: ${{ toJson(gitea.event) }}
run: |
branch="$(echo $EV | jq '.ref' -r | sed "s|refs/tags/||g" | cut -d '_' -f 1)"
echo $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}
rest="$(echo $EV | jq '.ref' -r | sed "s|refs/tags/|BRANCH=|g" | cut -d '_' -f 1-)"
IFS='_' read -ra parts <<< "$rest"
images=()
declare -A versions
for part in "${parts[@]}"; do
image="${part%@*}"
version="${part#*@}"
images+=("$image")
versions["$image"]="$version"
done
image_args="${images[*]}"
# Build JSON for package-versions
package_versions="{"
for i in "${!images[@]}"; do
img="${images[$i]}"
ver="${versions[$img]}"
sep=$([[ $i -lt $((${#images[@]} - 1)) ]] && echo "," || echo "")
package_versions+="\"$img\": \"$ver\"$sep"
done
package_versions+="}"
echo "IMAGES=$image_args" >> $GITEA_OUTPUT
echo "PACKAGE_VERSIONS=$package_versions" >> $GITEA_OUTPUT
- name: Change vendor label for c10f
if: ${{ contains(github.ref_name, 'c10f') }}
run: |
echo "sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/Dockerfile.template ||:"
sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/Dockerfile.template ||:
echo "sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/distroless.toml ||:"
sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/distroless.toml ||:
env:
ORG: ${{ env.ORG }}
- name: Get test for image
run: |
if test -f ${{ gitea.workspace }}/org/$IM/test; then testscript=$(cat ${{ gitea.workspace }}/org/$IM/test); else testscript=""; fi
echo "TEST=$testscript" >> ${GITHUB_ENV}
env:
IM: ${{ env.IMAGE }}
BR: ${{ env.BRANCH }}
- name: Run building script
id: build-script
run: |
${{ gitea.workspace }}/build.py \
--log-level debug \
--skip-stages push \
--branch $BRANCH \
--registry gitea.basealt.ru/alt \
--arches amd64 \
-i $IMAGES \
--package-versions "$PACKAGE_VERSIONS"
env:
BRANCH: ${{ env.BRANCH }}
IMAGES: ${{ env.IMAGES }}
PACKAGE_VERSIONS: ${{ env.PACKAGE_VERSIONS }}
continue-on-error: true
# - name: Send notification if build crashed
# if: ${{ steps.build-script.outcome != 'success' }}
# run: |
# issueid=1
# body="Building image $IM finish with some errors."
# curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s
# echo "notification about test error is sent to issue $issueid"
# env:
# T: ${{ secrets.TOKEN }}
# BR: ${{ env.BRANCH }}
# URL: ${{ gitea.server_url }}
# REPO: ${{ env.REPO }}
# IM: ${{ env.IMAGE }}
- name: Delete event tag
run: |
tagname=$(echo $EV | jq '.ref' -r | sed "s/refs\/tags\///g")
curl -X 'DELETE' "$URL/api/v1/repos/$REPO/image-forge/tags/$tagname?token=$T" -H 'accept: application/json' -s
echo "tag $tagname is deleted"
env:
T: ${{ secrets.TOKEN }}
BR: ${{ env.BRANCH }}
URL: ${{ gitea.server_url }}
REPO: ${{ env.REPO }}
EV: ${{ toJson(gitea.event) }}
test-process:
needs: build-process
if: ${{ needs.build-process.outputs.buildres == 'success' }}
runs-on: alt-sisyphus
steps:
- name: Update apt
uses: https://gitea.basealt.ru/actions/init-alt-env@v1
- name: Install requires
run: |
echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah curl"
apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah curl
- name: Run test
id: test-script
if: ${{ needs.build-process.outputs.test != '' }}
continue-on-error: true
run: |
imname=$(echo "$IM" | cut -d "/" -f2)
if [[ "$IM" == *"k8s"* ]]; then echo "skip tests for k8s images"; else podman run --rm --entrypoint="/bin/sh" $URL/$REPO/$BR/$imname:latest -c "$TEST"; fi
env:
IM: ${{ needs.build-process.outputs.image }}
BR: ${{ needs.build-process.outputs.branch }}
URL: ${{ needs.build-process.outputs.url }}
REPO: ${{ needs.build-process.outputs.repo }}
TEST: ${{ needs.build-process.outputs.test }}
- name: Run special test
id: special-test
if: ${{ needs.build-process.outputs.test == '' }}
continue-on-error: true
run: |
imname=$(echo "$IM" | cut -d "/" -f2)
if [[ $IM = 'alt/distroless-true' ]]; then podman run --rm $URL/$REPO/$BR/$imname:latest true; fi
if [[ $IM = 'alt/distroless-gotop' ]]; then podman run --rm $URL/$REPO/$BR/$imname:latest --version; fi
env:
IM: ${{ needs.build-process.outputs.image }}
BR: ${{ needs.build-process.outputs.branch }}
URL: ${{ needs.build-process.outputs.url }}
REPO: ${{ needs.build-process.outputs.repo }}
- name: Send notification if test crashed
if: ${{ steps.test-script.outcome == 'failure' || steps.special-test.outcome == 'failure' }}
run: |
issueid=1
errors=$(cat errors.log)
body="Testing image $IM finish with some errors."
curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s
echo "notification about test error is sent to issue $issueid"
env:
T: ${{ secrets.TOKEN }}
BR: ${{ needs.build-process.outputs.branch }}
URL: ${{ gitea.server_url }}
REPO: ${{ needs.build-process.outputs.repo }}
IM: ${{ needs.build-process.outputs.image }}

View File

@ -3,43 +3,13 @@ on:
push: push:
tags: tags:
- '*_*/*_*' - '*_*/*_*'
workflow_dispatch:
inputs:
branch:
description: "Repository branch"
required: true
default: sisyphus
type: choice
options:
- sisyphus
- p11
- p10
- c10f2
organization:
description: "Group of images"
required: true
default: alt
type: choice
options:
- alt
- base
- k8s
- kubevirt
image:
description: "Image name"
required: true
type: string
version:
description: "Package version"
required: false
type: string
jobs: jobs:
build-process: build-process:
runs-on: alt-sisyphus runs-on: alt-sisyphus
outputs: outputs:
branch: ${{ inputs.branch }} branch: ${{ env.BRANCH }}
image: ${{ inputs.image }} image: ${{ env.IMAGE }}
url: ${{ env.URL }} url: ${{ env.URL }}
repo: ${{ env.REPO }} repo: ${{ env.REPO }}
buildres: ${{ steps.build-script.outcome }} buildres: ${{ steps.build-script.outcome }}
@ -83,89 +53,123 @@ jobs:
- name: Check files in the repository - name: Check files in the repository
run: | run: |
ls -a ${{ gitea.workspace }} ls -a ${{ gitea.workspace }}
- name: Parse target branch and tag from events context, save to env
env:
EV: ${{ toJson(gitea.event) }}
run: |
echo $EV | jq '.ref' -r | sed "s/refs\/tags\//BRANCH=/g" | cut -d '_' -f 1
echo $EV | jq '.ref' -r | sed "s/refs\/tags\//BRANCH=/g" | cut -d '_' -f 1 >> ${GITHUB_ENV}
localimage=$(echo $EV | jq '.ref' -r | sed 's/refs\/tags\///g' | cut -d '_' -f 2)
echo "IMAGE=$localimage" >> ${GITHUB_ENV}
echo "IMAGE=$localimage"
org=$(echo "$localimage" | cut -d '/' -f 1)
echo "ORG=$org" >> ${GITHUB_ENV}
echo "ORG=$org"
ver=$(echo $EV | jq '.ref' -r | sed 's/refs\/tags\///g' | cut -d '_' -f 3)
echo "VER=$ver" >> ${GITHUB_ENV}
echo "VER=$ver"
- name: Change vendor label for c10f
if: ${{ contains(github.ref_name, 'c10f') }}
run: |
echo "sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/Dockerfile.template ||:"
sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/Dockerfile.template ||:
echo "sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/distroless.toml ||:"
sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/distroless.toml ||:
env:
ORG: ${{ env.ORG }}
- name: Get test for image - name: Get test for image
run: | run: |
if test -f ${{ gitea.workspace }}/org/$IM/test; then testscript=$(cat ${{ gitea.workspace }}/org/$IM/test); else testscript=""; fi if test -f ${{ gitea.workspace }}/org/$IM/test; then testscript=$(cat ${{ gitea.workspace }}/org/$IM/test); else testscript=""; fi
echo "TEST=$testscript" >> ${GITHUB_ENV} echo "TEST=$testscript" >> ${GITHUB_ENV}
env: env:
IM: ${{ inputs.organization }}/${{ inputs.image }} IM: ${{ env.IMAGE }}
BR: ${{ inputs.branch }} BR: ${{ env.BRANCH }}
- name: Run building script - name: Run building script
id: build-script id: build-script
run: | run: |
if [[ "$IM" == *"k8s"* ]]; then k8sarg="--package-versions {\"$IM\":\"$VER\"}"; else k8sarg=""; fi 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 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" echo "build.py -i $IM -b $BR $arches $k8sarg"
${{ gitea.workspace }}/build.py --skip-stages push -i $IM -b $BR $arches --latest $BR --log-level debug --registry gitea.basealt.ru/alt $k8sarg ${{ gitea.workspace }}/build.py -i $IM -b $BR $arches --latest $BR --log-level debug --registry gitea.basealt.ru/alt $k8sarg
env: env:
IM: ${{ inputs.organization }}/${{ inputs.image }} IM: ${{ env.IMAGE }}
VER: ${{ inputs.version }} VER: ${{ env.VER }}
BR: ${{ inputs.branch }} BR: ${{ env.BRANCH }}
ORG: ${{ inputs.organization }} ORG: ${{ env.ORG }}
continue-on-error: true continue-on-error: true
# - name: Send notification if build crashed - name: Send notification if build crashed
# if: ${{ steps.build-script.outcome != 'success' }} if: ${{ steps.build-script.outcome != 'success' }}
# run: | run: |
# issueid=1 issueid=1
# body="Building image $IM finish with some errors." 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 curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s
# echo "notification about test error is sent to issue $issueid" echo "notification about test error is sent to issue $issueid"
# env: env:
# T: ${{ secrets.TOKEN }} T: ${{ secrets.TOKEN }}
# BR: ${{ inputs.branch }} BR: ${{ env.BRANCH }}
# URL: ${{ gitea.server_url }} URL: ${{ gitea.server_url }}
# REPO: ${{ env.REPO }} REPO: ${{ env.REPO }}
# IM: ${{ inputs.organization }}/${{ inputs.image }} IM: ${{ env.IMAGE }}
# EV: ${{ toJson(gitea.event) }} - name: Delete event tag
# test-process: run: |
# needs: build-process tagname=$(echo $EV | jq '.ref' -r | sed "s/refs\/tags\///g")
# if: ${{ needs.build-process.outputs.buildres == 'success' }} curl -X 'DELETE' "$URL/api/v1/repos/$REPO/image-forge/tags/$tagname?token=$T" -H 'accept: application/json' -s
# runs-on: alt-sisyphus echo "tag $tagname is deleted"
# steps: env:
# - name: Update apt T: ${{ secrets.TOKEN }}
# uses: https://gitea.basealt.ru/actions/init-alt-env@v1 BR: ${{ env.BRANCH }}
# - name: Install requires URL: ${{ gitea.server_url }}
# run: | REPO: ${{ env.REPO }}
# echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah curl" EV: ${{ toJson(gitea.event) }}
# apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah curl test-process:
# - name: Run test needs: build-process
# id: test-script if: ${{ needs.build-process.outputs.buildres == 'success' }}
# if: ${{ needs.build-process.outputs.test != '' }} runs-on: alt-sisyphus
# continue-on-error: true steps:
# run: | - name: Update apt
# imname=$(echo "$IM" | cut -d "/" -f2) uses: https://gitea.basealt.ru/actions/init-alt-env@v1
# 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 - name: Install requires
# env: run: |
# IM: ${{ needs.build-process.outputs.image }} echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah curl"
# BR: ${{ needs.build-process.outputs.branch }} apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah curl
# URL: ${{ needs.build-process.outputs.url }} - name: Run test
# REPO: ${{ needs.build-process.outputs.repo }} id: test-script
# TEST: ${{ needs.build-process.outputs.test }} if: ${{ needs.build-process.outputs.test != '' }}
# - name: Run special test continue-on-error: true
# id: special-test run: |
# if: ${{ needs.build-process.outputs.test == '' }} imname=$(echo "$IM" | cut -d "/" -f2)
# continue-on-error: true 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
# run: | env:
# imname=$(echo "$IM" | cut -d "/" -f2) IM: ${{ needs.build-process.outputs.image }}
# if [[ $IM = 'alt/distroless-true' ]]; then podman run --rm $URL/$REPO/$BR/$imname:latest true; fi BR: ${{ needs.build-process.outputs.branch }}
# if [[ $IM = 'alt/distroless-gotop' ]]; then podman run --rm $URL/$REPO/$BR/$imname:latest --version; fi URL: ${{ needs.build-process.outputs.url }}
# env: REPO: ${{ needs.build-process.outputs.repo }}
# IM: ${{ needs.build-process.outputs.image }} TEST: ${{ needs.build-process.outputs.test }}
# BR: ${{ needs.build-process.outputs.branch }} - name: Run special test
# URL: ${{ needs.build-process.outputs.url }} id: special-test
# REPO: ${{ needs.build-process.outputs.repo }} if: ${{ needs.build-process.outputs.test == '' }}
# - name: Send notification if test crashed continue-on-error: true
# if: ${{ steps.test-script.outcome == 'failure' || steps.special-test.outcome == 'failure' }} run: |
# run: | imname=$(echo "$IM" | cut -d "/" -f2)
# issueid=1 if [[ $IM = 'alt/distroless-true' ]]; then podman run --rm $URL/$REPO/$BR/$imname:latest true; fi
# errors=$(cat errors.log) if [[ $IM = 'alt/distroless-gotop' ]]; then podman run --rm $URL/$REPO/$BR/$imname:latest --version; fi
# body="Testing image $IM finish with some errors." env:
# 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 IM: ${{ needs.build-process.outputs.image }}
# echo "notification about test error is sent to issue $issueid" BR: ${{ needs.build-process.outputs.branch }}
# env: URL: ${{ needs.build-process.outputs.url }}
# T: ${{ secrets.TOKEN }} REPO: ${{ needs.build-process.outputs.repo }}
# BR: ${{ needs.build-process.outputs.branch }} - name: Send notification if test crashed
# URL: ${{ gitea.server_url }} if: ${{ steps.test-script.outcome == 'failure' || steps.special-test.outcome == 'failure' }}
# REPO: ${{ needs.build-process.outputs.repo }} run: |
# IM: ${{ needs.build-process.outputs.image }} 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 }}

View File

@ -86,7 +86,7 @@ source_packages:
./build.py -i k8s/pause ./build.py -i k8s/pause
``` ```
#### org/alt/etcd #### org/k8s/etcd
```yaml ```yaml
is_versioned: true is_versioned: true
@ -95,16 +95,11 @@ version_template:
- "{{ version }}" - "{{ version }}"
- "{{ version }}-0" - "{{ version }}-0"
source_packages: source_packages:
- > - etcd-for-kubernetes{{ version }}
{% if branch in ["sisyphus", "p11"] %}
{% raw %}etcd{{ version }}{% endraw %}
{% else %}
etcd
{% endif %}
``` ```
```bash ```bash
./build.py -b sisyphus -i alt/etcd --package-version '{"alt/etcd": "3.5.15"}' ./build.py -b sisyphus -i k8s/etcd --package-version '{"k8s/etcd": "1.32"}'
``` ```
## Dependencies ## Dependencies

View File

@ -11,6 +11,7 @@ from datetime import datetime
from dataclasses import dataclass from dataclasses import dataclass
from graphlib import TopologicalSorter from graphlib import TopologicalSorter
from pathlib import Path from pathlib import Path
from typing import Optional, Union
import requests import requests
import tomli import tomli
@ -21,7 +22,7 @@ logger = logging.getLogger(__name__)
ORG_DIR = Path("org") ORG_DIR = Path("org")
PKG_VERSIONS: dict | None = None PKG_VERSIONS: Optional[dict] = None
# Jinja2 custom fail filter # Jinja2 custom fail filter
def fail(message: str): def fail(message: str):
@ -33,9 +34,9 @@ JINJA_ENV.filters['fail'] = fail
@dataclass @dataclass
class Image: class Image:
canonical_name: str canonical_name: str
is_versioned: bool | None is_versioned: Optional[bool]
version_template: list[str] | str | None version_template: Union[list[str], str, None]
source_packages: list[str] | None source_packages: Optional[list[str]]
def __init__(self, canonical_name: str): def __init__(self, canonical_name: str):
self.canonical_name = canonical_name self.canonical_name = canonical_name
@ -140,14 +141,14 @@ def api_get_source_package_version_from_task(task_id: str, package_name: str):
class Tags: class Tags:
def __init__(self, tags_file: str | None, latest: str): def __init__(self, tags_file: Optional[str], latest: str):
if tags_file is None: if tags_file is None:
self._tags = None self._tags = None
else: else:
self._tags = tomli.loads(Path(tags_file).read_text()) self._tags = tomli.loads(Path(tags_file).read_text())
self._latest = latest self._latest = latest
def tags(self, branch: str, image: Image, tasks: Tasks | None = None): def tags(self, branch: str, image: Image, tasks: Optional[Tasks] = None):
if self._tags is None: if self._tags is None:
if image.is_versioned is None: if image.is_versioned is None:
tags = [branch] tags = [branch]
@ -157,9 +158,7 @@ class Tags:
elif image.is_versioned and image.source_packages: elif image.is_versioned and image.source_packages:
package_name = image.source_packages[0] package_name = image.source_packages[0]
if re.search("{%.*%}", package_name): context_version = ""
package_name = JINJA_ENV.from_string(package_name).render(branch=branch).strip()
if re.search("{{.*}}", package_name): if re.search("{{.*}}", package_name):
if PKG_VERSIONS is None: if PKG_VERSIONS is None:
raise RuntimeError( raise RuntimeError(
@ -176,8 +175,12 @@ class Tags:
f"invalid version for image {image.canonical_name!r}: {PKG_VERSIONS[image.canonical_name]!r}" 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( package_name = JINJA_ENV.from_string(package_name).render(
version=PKG_VERSIONS[image.canonical_name] branch=branch,
version=context_version,
) )
if tasks is not None: if tasks is not None:
@ -414,6 +417,7 @@ class DockerBuilder:
install_packages=install_packages, install_packages=install_packages,
organization=organization, organization=organization,
registry=registry, registry=registry,
pkg_versions=PKG_VERSIONS,
**kwargs, **kwargs,
) )
@ -662,7 +666,7 @@ class DockerBuilder:
build_arches = set(arches) - set( build_arches = set(arches) - set(
self.images_info.skip_arches(image.canonical_name) self.images_info.skip_arches(image.canonical_name)
) )
tags = self.tags.tags(self.branch, image) tags = self.tags.tags(self.branch, image, self.tasks)
manifest = self.render_full_tag(image, tags[0]) manifest = self.render_full_tag(image, tags[0])
msg = "Building image {} for {} arches".format( msg = "Building image {} for {} arches".format(

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 @@
etcd --version

View File

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

View File

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

View File

@ -8,7 +8,16 @@ LABEL org.opencontainers.image.source="https://github.com/coredns/coredns"
LABEL org.opencontainers.image.licenses="Apache-2.0" LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team" LABEL org.opencontainers.image.vendor="ALT Linux Team"
{% if branch in ["sisyphus", "p11", "c10f2"] %} {% if pkg_versions and "k8s/coredns" in pkg_versions %}
{% set version_parts = pkg_versions["k8s/coredns"].split('.') | length %}
{% else %}
{% set version_parts = 0 %}
{% endif %}
{% if branch in ["sisyphus"] and version_parts == 2 %}
ARG PKG_VERSION
{{ install_packages("coredns-for-kubernetes${PKG_VERSION}") }}
{% elif branch in ["sisyphus", "p11", "c10f2"] and version_parts == 3 %}
ARG PKG_VERSION ARG PKG_VERSION
{{ install_packages("coredns${PKG_VERSION}") }} {{ install_packages("coredns${PKG_VERSION}") }}

View File

@ -3,9 +3,13 @@ is_versioned: true
version_template: v{{ version }} version_template: v{{ version }}
source_packages: source_packages:
- > - >
{% if branch in ["sisyphus", "p11", "c10f2"] %} {%- set version_parts = version.split('.') -%}
{% raw %}coredns{{ version }}{% endraw %} {%- set version_major = version_parts[1] | int -%}
{% else %} {%- if branch in ["sisyphus"] and version_parts | length == 2 and version_major >= 33 -%}
coredns-for-kubernetes{{ version }}
{%- elif branch in ["sisyphus", "p11", "c10f2"] -%}
coredns{{ version }}
{%- else -%}
coredns coredns
{% endif %} {%- endif -%}
... ...

View File

@ -8,15 +8,13 @@ LABEL org.opencontainers.image.source="https://github.com/etcd-io/etcd"
LABEL org.opencontainers.image.licenses="Apache-2.0" LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team" LABEL org.opencontainers.image.vendor="ALT Linux Team"
{% if branch in ["sisyphus"] %}
ARG PKG_VERSION ARG PKG_VERSION
{{ install_packages("etcd${PKG_VERSION}") }} {{ install_packages("etcd-for-kubernetes${PKG_VERSION}") }}
{% else %}
{{ install_packages("etcd") }}
{% endif %}
RUN ln -s /usr/sbin/etcd /usr/local/bin/etcd RUN ln -s /usr/sbin/etcd /usr/local/bin/etcd && ln -s /usr/bin/etcdctl /usr/local/bin/etcdctl
EXPOSE 2379 2380
VOLUME /data VOLUME /data

19
org/k8s/etcd/README.md Normal file
View File

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

View File

@ -5,10 +5,5 @@ version_template:
- "{{ version }}" - "{{ version }}"
- "{{ version }}-0" - "{{ version }}-0"
source_packages: source_packages:
- > - etcd-for-kubernetes{{ version }}
{% if branch in ["sisyphus"] %}
{% raw %}etcd{{ version }}{% endraw %}
{% else %}
etcd
{% endif %}
... ...

1
org/k8s/etcd/test Normal file
View File

@ -0,0 +1 @@
etcd --version && etcdctl --version