Compare commits
	
		
			116 Commits
		
	
	
		
			add-flux2-
			...
			workflow
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| cb91ecc9f6 | |||
| 761fda61c1 | |||
| 6cbde103dd | |||
| 
						 | 
					14c787b0db | ||
| 
						 | 
					d161930947 | ||
| 0c426721dd | |||
| 0d08c6f88f | |||
| a56bc4eb06 | |||
| 739b5d8eba | |||
| 941b8fb599 | |||
| aacaf22d79 | |||
| 
						 | 
					2d5df6ea4c | ||
| 
						 | 
					626b6feb4c | ||
| 
						 | 
					69e7c13ea2 | ||
| d47bc5a030 | |||
| 9702a487d7 | |||
| 
						 | 
					c3398350b7 | ||
| 
						 | 
					c6011932ec | ||
| 
						 | 
					b1a9067f7d | ||
| 
						 | 
					2755b77312 | ||
| 61993c8c67 | |||
| 8831b5d4f3 | |||
| c9361ef016 | |||
| bb0eb56454 | |||
| 
						 | 
					059f378d62 | ||
| 
						 | 
					c0534070b3 | ||
| 
						 | 
					ede851f34f | ||
| 
						 | 
					b1867f776f | ||
| 
						 | 
					686bed6efa | ||
| 
						 | 
					124ed4ff29 | ||
| 
						 | 
					a5d6c2d543 | ||
| 
						 | 
					ba6faf6d32 | ||
| 8bd17b82bc | |||
| 20c4e922df | |||
| c3778f6436 | |||
| 5a22edb089 | |||
| 4ba29556fe | |||
| 4db1672f06 | |||
| 24c24ddd57 | |||
| 
						 | 
					97478923d3 | ||
| 
						 | 
					a670e7847c | ||
| c24ac6f89a | |||
| 5c47e2296d | |||
| 34405300aa | |||
| 7ee8840061 | |||
| a36a9d974e | |||
| 8ef16f6ea7 | |||
| 
						 | 
					6668dc4d6a | ||
| 
						 | 
					ae109e7adf | ||
| 
						 | 
					48a422a735 | ||
| 
						 | 
					efaa4b0aab | ||
| 
						 | 
					6e6d876b83 | ||
| 
						 | 
					ff20da92a8 | ||
| 
						 | 
					78daf7d9bb | ||
| 
						 | 
					cb5f3ec98f | ||
| 
						 | 
					3cb1114358 | ||
| faaa41da4d | |||
| ea8aa8f897 | |||
| 
						 | 
					05cf05c29d | ||
| fca809825f | |||
| 
						 | 
					48c571ed65 | ||
| 
						 | 
					50e125d59d | ||
| 
						 | 
					4da3ba20e1 | ||
| abc15fee40 | |||
| e575a1f23c | |||
| 
						 | 
					a1571acc55 | ||
| 
						 | 
					34bdff6755 | ||
| 
						 | 
					a34788f701 | ||
| 
						 | 
					10eee3896f | ||
| 
						 | 
					c947762e9e | ||
| 
						 | 
					f772e861ef | ||
| 3b99b6eed2 | |||
| 4ea046dcf8 | |||
| 7551928508 | |||
| dbe4a3c590 | |||
| 7e8573d319 | |||
| 78b55a0422 | |||
| 4e076b90fb | |||
| 5108c6c04c | |||
| b046b4ec48 | |||
| 
						 | 
					6cd944822f | ||
| 
						 | 
					61dea7bebf | ||
| 
						 | 
					99a96cc7b6 | ||
| 
						 | 
					3772d01634 | ||
| 
						 | 
					1b5a3dd153 | ||
| 
						 | 
					8f862fcfc3 | ||
| 
						 | 
					4b23b69665 | ||
| 
						 | 
					3c611ed452 | ||
| 
						 | 
					3dc76a8533 | ||
| 
						 | 
					9a57a5ccff | ||
| 
						 | 
					84f06f5ecb | ||
| d095e0832e | |||
| 
						 | 
					ccea111eff | ||
| 
						 | 
					7fea91a372 | ||
| 
						 | 
					4f1a12d561 | ||
| 
						 | 
					1e018cfc07 | ||
| 
						 | 
					19cc3e9200 | ||
| 
						 | 
					0e21a9248a | ||
| 
						 | 
					8d9a890573 | ||
| 
						 | 
					b0178e587a | ||
| 
						 | 
					f7e8ff3059 | ||
| 085e251c81 | |||
| 
						 | 
					704f9912e1 | ||
| 
						 | 
					30c0e3df57 | ||
| 
						 | 
					430219d6d0 | ||
| 
						 | 
					abddecf404 | ||
| 
						 | 
					78259d754d | ||
| 
						 | 
					cdb4d9d2f8 | ||
| 
						 | 
					8da835e2b6 | ||
| 
						 | 
					3f4409b2c4 | ||
| 
						 | 
					4a434a443b | ||
| 
						 | 
					79f5a1def4 | ||
| 
						 | 
					9145f4635d | ||
| 
						 | 
					2314b3aba8 | ||
| 
						 | 
					63fc9e2440 | ||
| 
						 | 
					8e68d73e10 | 
@@ -6,39 +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"
 | 
			
		||||
  imgpath="$repo/$branch/$IM:latest"
 | 
			
		||||
 | 
			
		||||
  if [[ $2 == 'k8s' ]]
 | 
			
		||||
    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\""
 | 
			
		||||
  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 --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 --rm $url/$imgpath \"true\""
 | 
			
		||||
    fi
 | 
			
		||||
    if [ "$IM" = distroless-gotop ]; then 
 | 
			
		||||
      command="podman run --rm $url/$imgpath \"--version\""
 | 
			
		||||
    fi 
 | 
			
		||||
    if [[ $IM = 'flannel-cni-plugin' ]]; then
 | 
			
		||||
      command="podman run --rm $3/$imgpath \"/flannel\""
 | 
			
		||||
    if [ "$IM" = flannel-cni-plugin ]; then
 | 
			
		||||
      command="podman run --rm $url/$imgpath \"/flannel\""
 | 
			
		||||
    fi
 | 
			
		||||
    if [[ $IM = 'pause' ]]; then 
 | 
			
		||||
      command="podman run --rm $3/$imgpath \"/pause\" \"-v\""
 | 
			
		||||
    if [ "$IM" == pause ]; then 
 | 
			
		||||
      command="podman run --rm $url/$imgpath \"/pause\" \"-v\""
 | 
			
		||||
    fi 
 | 
			
		||||
  fi
 | 
			
		||||
  echo $command
 | 
			
		||||
@@ -47,9 +54,9 @@ 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"
 | 
			
		||||
    fi 
 | 
			
		||||
@@ -58,7 +65,7 @@ do
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
echo "$errors"
 | 
			
		||||
if [[ $errors != '' ]]
 | 
			
		||||
if [ -n "$errors" ]
 | 
			
		||||
  then haserr=true 
 | 
			
		||||
fi
 | 
			
		||||
echo "ERR=$haserr" > haserr.log
 | 
			
		||||
 
 | 
			
		||||
@@ -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,6 +34,26 @@ jobs:
 | 
			
		||||
        env:
 | 
			
		||||
          GU: ${{ gitea.server_url }}
 | 
			
		||||
          GR: ${{ gitea.repository }}
 | 
			
		||||
      - 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: 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: |
 | 
			
		||||
@@ -32,42 +61,26 @@ jobs:
 | 
			
		||||
          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 }}          
 | 
			
		||||
          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
 | 
			
		||||
          #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 --package-versions {\"alt/etcd\":\"3.5.15\"}"
 | 
			
		||||
          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' }}
 | 
			
		||||
@@ -85,7 +98,7 @@ jobs:
 | 
			
		||||
        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"                    
 | 
			
		||||
          echo "tag $tagname is deleted"
 | 
			
		||||
        env:
 | 
			
		||||
          T: ${{ secrets.TOKEN }}
 | 
			
		||||
          BR: ${{ env.BRANCH }}
 | 
			
		||||
@@ -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
 | 
			
		||||
@@ -1,126 +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: 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 }}
 | 
			
		||||
@@ -1,126 +0,0 @@
 | 
			
		||||
name: Full building alt images
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    tags:
 | 
			
		||||
      - 'sisyphus_*'
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  build-process:
 | 
			
		||||
    runs-on: alt-sisyphus
 | 
			
		||||
    outputs:
 | 
			
		||||
      branch: ${{ env.BRANCH }}
 | 
			
		||||
      org: ${{ env.ORG }}
 | 
			
		||||
      url: ${{ env.URL }}
 | 
			
		||||
      repo: ${{ env.REPO }}
 | 
			
		||||
      buildres: ${{ steps.build-script.outcome }}
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Check workspace
 | 
			
		||||
        run: |
 | 
			
		||||
          repourl=$(echo $GU | cut -d '/' -f 3)
 | 
			
		||||
          echo "URL=$repourl" >> ${GITHUB_ENV}
 | 
			
		||||
          echo $repourl
 | 
			
		||||
          reponame=$(echo $GR | cut -d '/' -f 1)
 | 
			
		||||
          echo "REPO=$reponame" >> ${GITHUB_ENV}
 | 
			
		||||
          echo $reponame
 | 
			
		||||
        env:
 | 
			
		||||
          GU: ${{ gitea.server_url }}
 | 
			
		||||
          GR: ${{ gitea.repository }}
 | 
			
		||||
      - name: Update apt
 | 
			
		||||
        uses: actions/init-alt-env@v1
 | 
			
		||||
      - name: Install requires
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl"
 | 
			
		||||
          apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl
 | 
			
		||||
          echo "apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc"
 | 
			
		||||
          apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc          
 | 
			
		||||
      - name: Check out current repo
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
      - name: Parse target branch and tag from events context, save to env                                
 | 
			
		||||
        env:
 | 
			
		||||
          EV: ${{ toJson(gitea.event) }}                                         
 | 
			
		||||
        run: |
 | 
			
		||||
          echo $EV | jq '.ref' -r | sed "s/refs\/tags\//BRANCH=/g" | cut -d '_' -f 1
 | 
			
		||||
          echo $EV | jq '.ref' -r | sed "s/refs\/tags\//BRANCH=/g" | cut -d '_' -f 1 >> ${GITHUB_ENV}
 | 
			
		||||
          org=$(echo $EV | jq '.ref' -r | sed 's/refs\/tags\///g' | cut -d '_' -f 2)
 | 
			
		||||
          echo "ORG=$org" >> ${GITHUB_ENV}                              
 | 
			
		||||
          echo "ORG=$org"
 | 
			
		||||
      - name: Login podman gitea
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "podman login ${{ env.URL }}"
 | 
			
		||||
          podman login --username $P_USER --password $P_PASS ${{ env.URL }}          
 | 
			
		||||
        env:
 | 
			
		||||
          P_USER: ${{ secrets.PODMAN_USER }}
 | 
			
		||||
          P_PASS: ${{ secrets.PODMAN_PASS }}
 | 
			
		||||
      - name: Run building script
 | 
			
		||||
        id: build-script
 | 
			
		||||
        run: |
 | 
			
		||||
          build_args="-b $BR -o $ORG --skip-images alt/distroless-devel"          
 | 
			
		||||
          if [[ $ORG == 'k8s' ]]; then build_args="$build_args --tags tags.toml --overwrite-organization $ORG-$BR --skip-images k8s/kube-apiserver k8s/kube-controller-manager k8s/kube-proxy k8s/kube-scheduler"; fi
 | 
			
		||||
          echo "build.py $build_args"
 | 
			
		||||
          ${{ gitea.workspace }}/build.py $build_args
 | 
			
		||||
        env:
 | 
			
		||||
          ORG: ${{ env.ORG }}
 | 
			
		||||
          BR: ${{ env.BRANCH }}
 | 
			
		||||
        continue-on-error: true
 | 
			
		||||
      - name: Send notification if build crashed
 | 
			
		||||
        if: ${{ steps.build-script.outcome != 'success' }}
 | 
			
		||||
        run: |
 | 
			
		||||
          issueid=1
 | 
			
		||||
          body="Building images finish with some errors."
 | 
			
		||||
          curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s
 | 
			
		||||
          echo "notification about test error is sent to issue $issueid"
 | 
			
		||||
        env:
 | 
			
		||||
          T: ${{ secrets.TOKEN }}
 | 
			
		||||
          BR: ${{ env.BRANCH }}
 | 
			
		||||
          URL: ${{ gitea.server_url }}
 | 
			
		||||
          REPO: ${{ env.REPO }}
 | 
			
		||||
      - name: Delete event tag
 | 
			
		||||
        run: |
 | 
			
		||||
          tagname=$(echo $EV | jq '.ref' -r | sed "s/refs\/tags\///g")
 | 
			
		||||
          curl -X 'DELETE' "$URL/api/v1/repos/$REPO/image-forge/tags/$tagname?token=$T" -H 'accept: application/json' -s
 | 
			
		||||
          echo "tag $tagname is deleted"                    
 | 
			
		||||
        env:
 | 
			
		||||
          T: ${{ secrets.TOKEN }}
 | 
			
		||||
          BR: ${{ env.BRANCH }}
 | 
			
		||||
          URL: ${{ gitea.server_url }}
 | 
			
		||||
          REPO: ${{ env.REPO }}
 | 
			
		||||
          EV: ${{ toJson(gitea.event) }}
 | 
			
		||||
  test-process:
 | 
			
		||||
    needs: build-process
 | 
			
		||||
    if: ${{ needs.build-process.outputs.buildres == 'success' }}
 | 
			
		||||
    runs-on: alt-sisyphus
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Update apt
 | 
			
		||||
        uses: actions/init-alt-env@v1
 | 
			
		||||
      - name: Install requires
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl"
 | 
			
		||||
          apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl
 | 
			
		||||
      - name: Check out current repo
 | 
			
		||||
        uses: https://gitea.com/actions/checkout@v4
 | 
			
		||||
      - name: Test
 | 
			
		||||
        id: test-script
 | 
			
		||||
        continue-on-error: true
 | 
			
		||||
        run: |
 | 
			
		||||
          $WS/.gitea/workflows/testscript $BR $ORG $URL $REPO $WS
 | 
			
		||||
          cat haserr.log >> ${GITHUB_ENV}
 | 
			
		||||
          echo "test process finished"
 | 
			
		||||
        env:
 | 
			
		||||
          BR: ${{ needs.build-process.outputs.branch }}
 | 
			
		||||
          ORG: ${{ needs.build-process.outputs.org }}
 | 
			
		||||
          URL: ${{ needs.build-process.outputs.url }}
 | 
			
		||||
          REPO: ${{ needs.build-process.outputs.repo }}
 | 
			
		||||
          WS: ${{ gitea.workspace }}
 | 
			
		||||
      - name: Send notification if test crashed
 | 
			
		||||
        if: ${{ env.ERR == 'true' || steps.test-script.outcome == 'failure' }}
 | 
			
		||||
        run: |
 | 
			
		||||
          issueid=1
 | 
			
		||||
          errors=$(cat errors.log)
 | 
			
		||||
          body="Testing images finish with some errors. $errors"
 | 
			
		||||
          curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s
 | 
			
		||||
          echo "notification about test error is sent to issue $issueid"
 | 
			
		||||
        env:
 | 
			
		||||
          T: ${{ secrets.TOKEN }}
 | 
			
		||||
          BR: ${{ needs.build-process.outputs.branch }}
 | 
			
		||||
          URL: ${{ gitea.server_url }}
 | 
			
		||||
          REPO: ${{ needs.build-process.outputs.repo }}
 | 
			
		||||
							
								
								
									
										155
									
								
								.gitea/workflows/wf_multiple.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										155
									
								
								.gitea/workflows/wf_multiple.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,155 @@
 | 
			
		||||
name: Building alt images
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    tags:
 | 
			
		||||
      - '**'
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  build-process:
 | 
			
		||||
    runs-on: alt-sisyphus
 | 
			
		||||
    outputs:
 | 
			
		||||
      branch: ${{ env.BRANCH }}
 | 
			
		||||
      image: ${{ env.IMAGE }}
 | 
			
		||||
      url: ${{ env.URL }}
 | 
			
		||||
      repo: ${{ env.REPO }}
 | 
			
		||||
      buildres: ${{ steps.build-script.outcome }}
 | 
			
		||||
      test: ${{ env.TEST }}
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Check workspace
 | 
			
		||||
        run: |
 | 
			
		||||
          repourl=$(echo $GU | cut -d '/' -f 3)
 | 
			
		||||
          echo "URL=$repourl" >> ${GITHUB_ENV}
 | 
			
		||||
          echo "URL=$repourl"
 | 
			
		||||
          reponame=$(echo $GR | cut -d '/' -f 1)
 | 
			
		||||
          echo "REPO=$reponame" >> ${GITHUB_ENV}
 | 
			
		||||
          echo "REPO=$reponame"
 | 
			
		||||
        env:
 | 
			
		||||
          GU: ${{ gitea.server_url }}
 | 
			
		||||
          GR: ${{ gitea.repository }}
 | 
			
		||||
      - name: Set repo for c10f2 (Temporary)
 | 
			
		||||
        if: ${{ contains(github.ref_name, 'c10f2') }}
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "event tag=${{ github.ref_name }}"
 | 
			
		||||
          echo "10.4.0.3        update.altsp.su" >> /etc/hosts
 | 
			
		||||
          echo "cat /etc/hosts"
 | 
			
		||||
          cat /etc/hosts
 | 
			
		||||
      - name: Update apt
 | 
			
		||||
        uses: actions/init-alt-env@v1
 | 
			
		||||
      - name: Install requires
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "apt-get install -y python3-module-tomli python3-module-jinja2 python3-module-yaml python3-module-requests podman buildah jq curl"
 | 
			
		||||
          apt-get install -y python3-module-tomli python3-module-jinja2 python3-module-yaml python3-module-requests podman buildah jq curl
 | 
			
		||||
          echo "apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc qemu-user-static-binfmt-riscv qemu-user-static-binfmt-loongarch"
 | 
			
		||||
          apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc qemu-user-static-binfmt-riscv qemu-user-static-binfmt-loongarch
 | 
			
		||||
      - name: Check out current repo
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
      - name: Login podman gitea
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "podman login ${{ env.URL }}"
 | 
			
		||||
          podman login --username $P_USER --password $P_PASS ${{ env.URL }}
 | 
			
		||||
        env:
 | 
			
		||||
          P_USER: ${{ secrets.PODMAN_USER }}
 | 
			
		||||
          P_PASS: ${{ secrets.PODMAN_PASS }}
 | 
			
		||||
      - name: Check files in the repository
 | 
			
		||||
        run: |
 | 
			
		||||
          ls -a ${{ gitea.workspace }}
 | 
			
		||||
      - name: Parse target branch and tag from events context, save to env
 | 
			
		||||
        env:
 | 
			
		||||
          EV: ${{ toJson(gitea.event) }}
 | 
			
		||||
        run: |
 | 
			
		||||
          branch="$(echo $EV | jq '.ref' -r | sed "s|refs/tags/||g" | cut -d '_' -f 1)"
 | 
			
		||||
          echo "BRANCH=$branch"
 | 
			
		||||
 | 
			
		||||
          rest="$(echo $EV | jq '.ref' -r | sed "s|refs/tags/||g" | cut -d '_' -f 2-)"
 | 
			
		||||
          IFS='_' read -ra parts <<< "$rest"
 | 
			
		||||
 | 
			
		||||
          images=()
 | 
			
		||||
          declare -A versions
 | 
			
		||||
 | 
			
		||||
          for part in "${parts[@]}"; do
 | 
			
		||||
              if [[ "$part" == *@* ]]; then
 | 
			
		||||
                  image="${part%@*}"
 | 
			
		||||
                  version="${part#*@}"
 | 
			
		||||
                  images+=("$image")
 | 
			
		||||
                  versions["$image"]="$version"
 | 
			
		||||
              else
 | 
			
		||||
                  image="$part"
 | 
			
		||||
                  images+=("$image")
 | 
			
		||||
              fi
 | 
			
		||||
          done
 | 
			
		||||
 | 
			
		||||
          image_args="${images[*]}"
 | 
			
		||||
 | 
			
		||||
          package_versions="{"
 | 
			
		||||
          first=1
 | 
			
		||||
          for image in "${!versions[@]}"; do
 | 
			
		||||
              [[ $first -eq 0 ]] && package_versions+=","
 | 
			
		||||
              package_versions+="\"$image\": \"${versions[$image]}\""
 | 
			
		||||
              first=0
 | 
			
		||||
          done
 | 
			
		||||
          package_versions+="}"
 | 
			
		||||
 | 
			
		||||
          echo "IMAGES=$image_args"
 | 
			
		||||
          echo "PACKAGE_VERSIONS=$package_versions"
 | 
			
		||||
 | 
			
		||||
          echo "BRANCH=$branch" >> ${GITHUB_ENV}
 | 
			
		||||
          echo "IMAGES=$image_args" >> $GITHUB_ENV
 | 
			
		||||
          echo "PACKAGE_VERSIONS=$package_versions" >> $GITHUB_ENV
 | 
			
		||||
      - name: Change vendor label for c10f
 | 
			
		||||
        if: ${{ contains(github.ref_name, 'c10f') }}
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/Dockerfile.template ||:"
 | 
			
		||||
          sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/Dockerfile.template ||:
 | 
			
		||||
          echo "sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/distroless.toml ||:"
 | 
			
		||||
          sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/distroless.toml ||:
 | 
			
		||||
        env:
 | 
			
		||||
          ORG: ${{ env.ORG }}
 | 
			
		||||
      - name: Run building script
 | 
			
		||||
        id: build-script
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "${{ gitea.workspace }}/build.py \
 | 
			
		||||
            --log-level debug \
 | 
			
		||||
            --skip-stages push \
 | 
			
		||||
            --branch $BRANCH \
 | 
			
		||||
            --registry gitea.basealt.ru/alt \
 | 
			
		||||
            --arches amd64 \
 | 
			
		||||
            -i $IMAGES \
 | 
			
		||||
            --package-versions \"$PACKAGE_VERSIONS\""
 | 
			
		||||
 | 
			
		||||
          ${{ gitea.workspace }}/build.py \
 | 
			
		||||
            --log-level debug \
 | 
			
		||||
            --skip-stages push \
 | 
			
		||||
            --branch $BRANCH \
 | 
			
		||||
            --registry gitea.basealt.ru/alt \
 | 
			
		||||
            --arches amd64 \
 | 
			
		||||
            -i $IMAGES \
 | 
			
		||||
            --package-versions "$PACKAGE_VERSIONS"
 | 
			
		||||
        env:
 | 
			
		||||
          BRANCH: ${{ env.BRANCH }}
 | 
			
		||||
          IMAGES: ${{ env.IMAGES }}
 | 
			
		||||
          PACKAGE_VERSIONS: ${{ env.PACKAGE_VERSIONS }}
 | 
			
		||||
        continue-on-error: true
 | 
			
		||||
      # - name: Send notification if build crashed
 | 
			
		||||
      #   if: ${{ steps.build-script.outcome != 'success' }}
 | 
			
		||||
      #   run: |
 | 
			
		||||
      #     issueid=1
 | 
			
		||||
      #     body="Building image $IM finish with some errors."
 | 
			
		||||
      #     curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s
 | 
			
		||||
      #     echo "notification about test error is sent to issue $issueid"
 | 
			
		||||
      #   env:
 | 
			
		||||
      #     T: ${{ secrets.TOKEN }}
 | 
			
		||||
      #     BR: ${{ env.BRANCH }}
 | 
			
		||||
      #     URL: ${{ gitea.server_url }}
 | 
			
		||||
      #     REPO: ${{ env.REPO }}
 | 
			
		||||
      #     IM: ${{ env.IMAGE }}
 | 
			
		||||
      - name: Delete event tag
 | 
			
		||||
        run: |
 | 
			
		||||
          tagname=$(echo $EV | jq '.ref' -r | sed "s|refs/tags/||g")
 | 
			
		||||
          curl -X 'DELETE' "$URL/api/v1/repos/$REPO/image-forge/tags/$tagname" -H "Authorization: token $T" -H 'accept: application/json' -s
 | 
			
		||||
          echo "tag $tagname is deleted"
 | 
			
		||||
        env:
 | 
			
		||||
          T: ${{ secrets.TOKEN }}
 | 
			
		||||
          BR: ${{ env.BRANCH }}
 | 
			
		||||
          URL: ${{ gitea.server_url }}
 | 
			
		||||
          REPO: ${{ env.REPO }}
 | 
			
		||||
          EV: ${{ toJson(gitea.event) }}
 | 
			
		||||
							
								
								
									
										175
									
								
								.gitea/workflows/wf_single.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										175
									
								
								.gitea/workflows/wf_single.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,175 @@
 | 
			
		||||
name: Building alt images
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    tags:
 | 
			
		||||
      - '*_*/*_*'
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  build-process:
 | 
			
		||||
    runs-on: alt-sisyphus
 | 
			
		||||
    outputs:
 | 
			
		||||
      branch: ${{ env.BRANCH }}
 | 
			
		||||
      image: ${{ env.IMAGE }}
 | 
			
		||||
      url: ${{ env.URL }}
 | 
			
		||||
      repo: ${{ env.REPO }}
 | 
			
		||||
      buildres: ${{ steps.build-script.outcome }}
 | 
			
		||||
      test: ${{ env.TEST }}
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Check workspace
 | 
			
		||||
        run: |
 | 
			
		||||
          repourl=$(echo $GU | cut -d '/' -f 3)
 | 
			
		||||
          echo "URL=$repourl" >> ${GITHUB_ENV}
 | 
			
		||||
          echo "URL=$repourl"
 | 
			
		||||
          reponame=$(echo $GR | cut -d '/' -f 1)
 | 
			
		||||
          echo "REPO=$reponame" >> ${GITHUB_ENV} 
 | 
			
		||||
          echo "REPO=$reponame"
 | 
			
		||||
        env:
 | 
			
		||||
          GU: ${{ gitea.server_url }}
 | 
			
		||||
          GR: ${{ gitea.repository }}
 | 
			
		||||
      - name: Set repo for c10f2 (Temporary)
 | 
			
		||||
        if: ${{ contains(github.ref_name, 'c10f2') }}
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "event tag=${{ github.ref_name }}" 
 | 
			
		||||
          echo "10.4.0.3        update.altsp.su" >> /etc/hosts
 | 
			
		||||
          echo "cat /etc/hosts"
 | 
			
		||||
          cat /etc/hosts
 | 
			
		||||
      - name: Update apt
 | 
			
		||||
        uses: actions/init-alt-env@v1
 | 
			
		||||
      - name: Install requires
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "apt-get install -y python3-module-tomli python3-module-jinja2 python3-module-yaml python3-module-requests podman buildah jq curl"
 | 
			
		||||
          apt-get install -y python3-module-tomli python3-module-jinja2 python3-module-yaml python3-module-requests podman buildah jq curl
 | 
			
		||||
          echo "apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc qemu-user-static-binfmt-riscv qemu-user-static-binfmt-loongarch"
 | 
			
		||||
          apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc qemu-user-static-binfmt-riscv qemu-user-static-binfmt-loongarch
 | 
			
		||||
      - name: Check out current repo
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
      - name: Login podman gitea
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "podman login ${{ env.URL }}"
 | 
			
		||||
          podman login --username $P_USER --password $P_PASS ${{ env.URL }}          
 | 
			
		||||
        env:
 | 
			
		||||
          P_USER: ${{ secrets.PODMAN_USER }}
 | 
			
		||||
          P_PASS: ${{ secrets.PODMAN_PASS }}
 | 
			
		||||
      - name: Check files in the repository
 | 
			
		||||
        run: |
 | 
			
		||||
          ls -a ${{ gitea.workspace }}
 | 
			
		||||
      - name: Parse target branch and tag from events context, save to env                                
 | 
			
		||||
        env:
 | 
			
		||||
          EV: ${{ toJson(gitea.event) }}
 | 
			
		||||
        run: |
 | 
			
		||||
          echo $EV | jq '.ref' -r | sed "s/refs\/tags\//BRANCH=/g" | cut -d '_' -f 1
 | 
			
		||||
          echo $EV | jq '.ref' -r | sed "s/refs\/tags\//BRANCH=/g" | cut -d '_' -f 1 >> ${GITHUB_ENV}
 | 
			
		||||
          localimage=$(echo $EV | jq '.ref' -r | sed 's/refs\/tags\///g' | cut -d '_' -f 2)
 | 
			
		||||
          echo "IMAGE=$localimage" >> ${GITHUB_ENV}
 | 
			
		||||
          echo "IMAGE=$localimage"
 | 
			
		||||
          org=$(echo "$localimage" | cut -d '/' -f 1)
 | 
			
		||||
          echo "ORG=$org" >> ${GITHUB_ENV}
 | 
			
		||||
          echo "ORG=$org"
 | 
			
		||||
          ver=$(echo $EV | jq '.ref' -r | sed 's/refs\/tags\///g' | cut -d '_' -f 3)
 | 
			
		||||
          echo "VER=$ver" >> ${GITHUB_ENV}
 | 
			
		||||
          echo "VER=$ver"
 | 
			
		||||
      - name: Change vendor label for c10f
 | 
			
		||||
        if: ${{ contains(github.ref_name, 'c10f') }}
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/Dockerfile.template ||:"
 | 
			
		||||
          sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/Dockerfile.template ||:
 | 
			
		||||
          echo "sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/distroless.toml ||:"
 | 
			
		||||
          sed -i 's/ALT Linux Team/BaseALT LLC/g' ${{ gitea.workspace }}/org/$ORG/*/distroless.toml ||:
 | 
			
		||||
        env:                                                                                                               
 | 
			
		||||
          ORG: ${{ env.ORG }}
 | 
			
		||||
      - name: Get test for image
 | 
			
		||||
        run: |
 | 
			
		||||
          if test -f ${{ gitea.workspace }}/org/$IM/test; then testscript=$(cat ${{ gitea.workspace }}/org/$IM/test); else testscript=""; fi
 | 
			
		||||
          echo "TEST=$testscript" >> ${GITHUB_ENV}
 | 
			
		||||
        env:
 | 
			
		||||
          IM: ${{ env.IMAGE }}
 | 
			
		||||
          BR: ${{ env.BRANCH }}
 | 
			
		||||
      - name: Run building script
 | 
			
		||||
        id: build-script
 | 
			
		||||
        run: |
 | 
			
		||||
          if [[ "$IM" == *"k8s"* ]]; then k8sarg="--package-versions {\"$IM\":\"$VER\"}"; else k8sarg=""; fi
 | 
			
		||||
          if [[ "$BR" == "sisyphus" ]]; then arches="--arches amd64 386 arm64 loong64"; else arches="--arches amd64 386 arm64"; fi
 | 
			
		||||
          echo "build.py -i $IM -b $BR $arches $k8sarg"
 | 
			
		||||
          ${{ gitea.workspace }}/build.py -i $IM -b $BR $arches --latest $BR --log-level debug --registry gitea.basealt.ru/alt $k8sarg 
 | 
			
		||||
        env:
 | 
			
		||||
          IM: ${{ env.IMAGE }}
 | 
			
		||||
          VER: ${{ env.VER }}
 | 
			
		||||
          BR: ${{ env.BRANCH }}
 | 
			
		||||
          ORG: ${{ env.ORG }}
 | 
			
		||||
        continue-on-error: true
 | 
			
		||||
      - name: Send notification if build crashed
 | 
			
		||||
        if: ${{ steps.build-script.outcome != 'success' }}
 | 
			
		||||
        run: |
 | 
			
		||||
          issueid=1
 | 
			
		||||
          body="Building image $IM finish with some errors."
 | 
			
		||||
          curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s
 | 
			
		||||
          echo "notification about test error is sent to issue $issueid" 
 | 
			
		||||
        env:
 | 
			
		||||
          T: ${{ secrets.TOKEN }}
 | 
			
		||||
          BR: ${{ env.BRANCH }}
 | 
			
		||||
          URL: ${{ gitea.server_url }}
 | 
			
		||||
          REPO: ${{ env.REPO }}
 | 
			
		||||
          IM: ${{ env.IMAGE }}
 | 
			
		||||
      - name: Delete event tag
 | 
			
		||||
        run: |
 | 
			
		||||
          tagname=$(echo $EV | jq '.ref' -r | sed "s/refs\/tags\///g")
 | 
			
		||||
          curl -X 'DELETE' "$URL/api/v1/repos/$REPO/image-forge/tags/$tagname?token=$T" -H 'accept: application/json' -s
 | 
			
		||||
          echo "tag $tagname is deleted"
 | 
			
		||||
        env:
 | 
			
		||||
          T: ${{ secrets.TOKEN }}
 | 
			
		||||
          BR: ${{ env.BRANCH }}
 | 
			
		||||
          URL: ${{ gitea.server_url }}
 | 
			
		||||
          REPO: ${{ env.REPO }}
 | 
			
		||||
          EV: ${{ toJson(gitea.event) }}
 | 
			
		||||
  test-process:
 | 
			
		||||
    needs: build-process
 | 
			
		||||
    if: ${{ needs.build-process.outputs.buildres == 'success' }}
 | 
			
		||||
    runs-on: alt-sisyphus
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Update apt
 | 
			
		||||
        uses: https://gitea.basealt.ru/actions/init-alt-env@v1
 | 
			
		||||
      - name: Install requires
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah curl"
 | 
			
		||||
          apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah curl                 
 | 
			
		||||
      - name: Run test
 | 
			
		||||
        id: test-script
 | 
			
		||||
        if: ${{ needs.build-process.outputs.test != '' }}
 | 
			
		||||
        continue-on-error: true
 | 
			
		||||
        run: |
 | 
			
		||||
          imname=$(echo "$IM" | cut -d "/" -f2)
 | 
			
		||||
          if [[ "$IM" == *"k8s"* ]]; then echo "skip tests for k8s images"; else podman run --rm --entrypoint="/bin/sh" $URL/$REPO/$BR/$imname:latest -c "$TEST"; fi
 | 
			
		||||
        env:
 | 
			
		||||
          IM: ${{ needs.build-process.outputs.image }} 
 | 
			
		||||
          BR: ${{ needs.build-process.outputs.branch }}
 | 
			
		||||
          URL: ${{ needs.build-process.outputs.url }}  
 | 
			
		||||
          REPO: ${{ needs.build-process.outputs.repo }}
 | 
			
		||||
          TEST: ${{ needs.build-process.outputs.test }}
 | 
			
		||||
      - name: Run special test
 | 
			
		||||
        id: special-test
 | 
			
		||||
        if: ${{ needs.build-process.outputs.test == '' }}
 | 
			
		||||
        continue-on-error: true
 | 
			
		||||
        run: |
 | 
			
		||||
          imname=$(echo "$IM" | cut -d "/" -f2)
 | 
			
		||||
          if [[ $IM = 'alt/distroless-true' ]]; then podman run --rm $URL/$REPO/$BR/$imname:latest true; fi
 | 
			
		||||
          if [[ $IM = 'alt/distroless-gotop' ]]; then podman run --rm $URL/$REPO/$BR/$imname:latest --version; fi
 | 
			
		||||
        env:
 | 
			
		||||
          IM: ${{ needs.build-process.outputs.image }}
 | 
			
		||||
          BR: ${{ needs.build-process.outputs.branch }}
 | 
			
		||||
          URL: ${{ needs.build-process.outputs.url }}
 | 
			
		||||
          REPO: ${{ needs.build-process.outputs.repo }}
 | 
			
		||||
      - name: Send notification if test crashed
 | 
			
		||||
        if: ${{ steps.test-script.outcome == 'failure' || steps.special-test.outcome == 'failure' }}
 | 
			
		||||
        run: |
 | 
			
		||||
          issueid=1
 | 
			
		||||
          errors=$(cat errors.log)
 | 
			
		||||
          body="Testing image $IM finish with some errors."
 | 
			
		||||
          curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s
 | 
			
		||||
          echo "notification about test error is sent to issue $issueid"          
 | 
			
		||||
        env:
 | 
			
		||||
          T: ${{ secrets.TOKEN }}
 | 
			
		||||
          BR: ${{ needs.build-process.outputs.branch }}
 | 
			
		||||
          URL: ${{ gitea.server_url }}
 | 
			
		||||
          REPO: ${{ needs.build-process.outputs.repo }}
 | 
			
		||||
          IM: ${{ needs.build-process.outputs.image }}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										78
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										78
									
								
								README.md
									
									
									
									
									
								
							@@ -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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										311
									
								
								build.py
									
									
									
									
									
								
							
							
						
						
									
										311
									
								
								build.py
									
									
									
									
									
								
							@@ -3,28 +3,77 @@
 | 
			
		||||
import argparse
 | 
			
		||||
import functools
 | 
			
		||||
import json
 | 
			
		||||
import logging
 | 
			
		||||
import os
 | 
			
		||||
import re
 | 
			
		||||
import subprocess
 | 
			
		||||
import textwrap
 | 
			
		||||
from datetime import datetime
 | 
			
		||||
from dataclasses import dataclass
 | 
			
		||||
from graphlib import TopologicalSorter
 | 
			
		||||
from http import HTTPStatus
 | 
			
		||||
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__)
 | 
			
		||||
 | 
			
		||||
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:
 | 
			
		||||
@@ -638,12 +826,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 +939,34 @@ 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",
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    parser.add_argument(
 | 
			
		||||
        "--run-workflow",
 | 
			
		||||
        action="store_true",
 | 
			
		||||
        help="run gitea workflow to build oci images",
 | 
			
		||||
    )
 | 
			
		||||
    parser.add_argument(
 | 
			
		||||
        "--workflow-repo",
 | 
			
		||||
        default="stepchenkoas/image-forge",
 | 
			
		||||
        help="path to gitea repository where to activate workflow",
 | 
			
		||||
    )
 | 
			
		||||
    parser.add_argument(
 | 
			
		||||
        "--workflow-branch",
 | 
			
		||||
        default="master",
 | 
			
		||||
        help="branch in gitea repository where to activate workflow",
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    args = parser.parse_args()
 | 
			
		||||
 | 
			
		||||
    args.stages = set(args.stages) - set(args.skip_stages)
 | 
			
		||||
@@ -760,7 +978,54 @@ 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)
 | 
			
		||||
 | 
			
		||||
    if args.run_workflow:
 | 
			
		||||
        gitea_token = os.environ.get("GITEA_TOKEN")
 | 
			
		||||
        if gitea_token is None:
 | 
			
		||||
            raise RuntimeError("Gitea authorization token is not provided through the environment variable GITEA_TOKEN")
 | 
			
		||||
 | 
			
		||||
        api_url = f"https://gitea.basealt.ru/api/v1/repos/{args.workflow_repo}/tags"
 | 
			
		||||
        headers = {
 | 
			
		||||
            "Accept": "application/json",
 | 
			
		||||
            "Content-Type": "application/json",
 | 
			
		||||
            "Authorization": f"token {gitea_token}",
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        tag_name = list(args.branches)[0]
 | 
			
		||||
        for image in args.images:
 | 
			
		||||
            tag_name += "_" + image
 | 
			
		||||
            if PKG_VERSIONS is not None:
 | 
			
		||||
                if (version := PKG_VERSIONS.get(image)) is not None:
 | 
			
		||||
                    tag_name += "@" + version
 | 
			
		||||
 | 
			
		||||
        logger.debug("tag_name=\"%s\"", tag_name)
 | 
			
		||||
 | 
			
		||||
        json = {
 | 
			
		||||
            "message": "workflow trigger",
 | 
			
		||||
            "target": args.workflow_branch,
 | 
			
		||||
            "tag_name": tag_name,
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        response = requests.post(api_url, json=json, headers=headers)
 | 
			
		||||
        if response.status_code != HTTPStatus.CREATED:
 | 
			
		||||
            print(f"{response.status_code=}")
 | 
			
		||||
            raise RuntimeError(
 | 
			
		||||
                    f"failed to run workflow: {response.text!r}"
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
        return
 | 
			
		||||
 | 
			
		||||
    arches = args.arches
 | 
			
		||||
    images_info = ImagesInfo()
 | 
			
		||||
    tags = Tags(args.tags, args.latest)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,65 +1,14 @@
 | 
			
		||||
["alt/buildpack-deps"]
 | 
			
		||||
skip-branches = [ "p9" ]
 | 
			
		||||
["alt/distroless-toybox"]
 | 
			
		||||
skip-branches = [ "p10", "c10f2", "c10f1" ]
 | 
			
		||||
 | 
			
		||||
["alt/distroless-base"]
 | 
			
		||||
skip-branches = [ "p9" ]
 | 
			
		||||
["base/distroless-toybox"]
 | 
			
		||||
skip-branches = [ "p10", "c10f2", "c10f1" ]
 | 
			
		||||
 | 
			
		||||
["alt/distroless-builder"]
 | 
			
		||||
skip-branches = [ "p9" ]
 | 
			
		||||
["alt/openjdk21"]
 | 
			
		||||
skip-arches = [ "386" ]
 | 
			
		||||
 | 
			
		||||
["alt/distroless-devel"]
 | 
			
		||||
skip-branches = [ "p9" ]
 | 
			
		||||
["alt/ansible"]
 | 
			
		||||
skip-branches = [ "c10f2", "c10f1", "p10" ]
 | 
			
		||||
 | 
			
		||||
["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/buildkit"]
 | 
			
		||||
skip-branches = [ "c10f1", "p10" ]
 | 
			
		||||
							
								
								
									
										17
									
								
								org/alt/ansible/Dockerfile.template
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								org/alt/ansible/Dockerfile.template
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
FROM {{ registry }}{{ branch }}/node:latest
 | 
			
		||||
 | 
			
		||||
MAINTAINER alt-cloud
 | 
			
		||||
 | 
			
		||||
LABEL org.opencontainers.image.title="ansible"
 | 
			
		||||
LABEL org.opencontainers.image.description="A radically simple IT automation system"
 | 
			
		||||
LABEL org.opencontainers.image.source="http://www.ansible.com"
 | 
			
		||||
LABEL org.opencontainers.image.licenses="GPL-3.0"
 | 
			
		||||
LABEL org.opencontainers.image.vendor="ALT Linux Team"
 | 
			
		||||
 | 
			
		||||
{{ install_packages(
 | 
			
		||||
        "ansible-vim",
 | 
			
		||||
        "ansible-core",
 | 
			
		||||
        "ansible-lint"
 | 
			
		||||
) }}
 | 
			
		||||
 | 
			
		||||
WORKDIR /etc/ansible/playbooks
 | 
			
		||||
							
								
								
									
										8
									
								
								org/alt/ansible/info.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								org/alt/ansible/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - ansible-core
 | 
			
		||||
  - ansible-vim
 | 
			
		||||
  - ansible-lint
 | 
			
		||||
...
 | 
			
		||||
							
								
								
									
										1
									
								
								org/alt/ansible/test
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								org/alt/ansible/test
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
ansible --version
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
FROM {{ registry }}{{ alt_image }}:{{ branch }}
 | 
			
		||||
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
 | 
			
		||||
 | 
			
		||||
MAINTAINER alt-cloud
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								org/alt/apache2/info.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								org/alt/apache2/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - apache2
 | 
			
		||||
...
 | 
			
		||||
@@ -1,7 +0,0 @@
 | 
			
		||||
FROM {{ registry }}{{ alt_image }}:{{ branch }}
 | 
			
		||||
 | 
			
		||||
MAINTAINER alt-cloud
 | 
			
		||||
 | 
			
		||||
{{ install_packages("glibc-gconv-modules", "glibc-locales", "tzdata") }}
 | 
			
		||||
 | 
			
		||||
CMD ["bash"]
 | 
			
		||||
							
								
								
									
										16
									
								
								org/alt/buildkit/Dockerfile.template
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								org/alt/buildkit/Dockerfile.template
									
									
									
									
									
										Normal 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"]
 | 
			
		||||
							
								
								
									
										6
									
								
								org/alt/buildkit/info.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								org/alt/buildkit/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - buildkit
 | 
			
		||||
...
 | 
			
		||||
							
								
								
									
										1
									
								
								org/alt/buildkit/test
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								org/alt/buildkit/test
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
buildkitd --version
 | 
			
		||||
@@ -1,21 +0,0 @@
 | 
			
		||||
from = "{{ registry }}{{ organization }}/distroless-static:{{ branch }}"
 | 
			
		||||
builder-install-packages = [
 | 
			
		||||
    "glibc-core",
 | 
			
		||||
    '{{if_branches(["p10"], "glibc-nss")}}',
 | 
			
		||||
    "glibc-timezones",
 | 
			
		||||
    "libselinux",
 | 
			
		||||
    '{{if_branches(["p9", "p10"], "libssl1.1")}}',
 | 
			
		||||
    '{{if_branches(["sisyphus"], "libssl1.1")}}',
 | 
			
		||||
    '{{if_branches(["sisyphus"], "libssl3")}}',
 | 
			
		||||
    "tzdata",
 | 
			
		||||
    "zlib",
 | 
			
		||||
]
 | 
			
		||||
packages = [
 | 
			
		||||
    "glibc-core",
 | 
			
		||||
    '{{if_branches(["p10"], "glibc-nss")}}',
 | 
			
		||||
    "glibc-pthread",
 | 
			
		||||
    "glibc-timezones",
 | 
			
		||||
    "tzdata",
 | 
			
		||||
    "zlib",
 | 
			
		||||
]
 | 
			
		||||
timezone = "Europe/Moscow"
 | 
			
		||||
@@ -1,3 +0,0 @@
 | 
			
		||||
from = "{{ registry }}{{ organization }}/distroless-base:{{ branch }}"
 | 
			
		||||
full-files = ["/usr/bin/gotop"]
 | 
			
		||||
entrypoint = ["/usr/bin/gotop"]
 | 
			
		||||
@@ -1,4 +0,0 @@
 | 
			
		||||
from = "scratch"
 | 
			
		||||
file-lists = ["static.list"]
 | 
			
		||||
user = "nonroot"
 | 
			
		||||
workdir = "/home/nonroot"
 | 
			
		||||
@@ -1,3 +0,0 @@
 | 
			
		||||
from = "{{ registry }}{{ organization }}/distroless-static:{{ branch }}"
 | 
			
		||||
files = ["/bin/true"]
 | 
			
		||||
cmd = ["/bin/true"]
 | 
			
		||||
@@ -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"]
 | 
			
		||||
@@ -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`
 | 
			
		||||
@@ -1 +0,0 @@
 | 
			
		||||
etcdctl version
 | 
			
		||||
@@ -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
									
								
							
							
						
						
									
										6
									
								
								org/alt/gitea/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - gitea
 | 
			
		||||
...
 | 
			
		||||
@@ -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
									
								
							
							
						
						
									
										6
									
								
								org/alt/golang/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - golang
 | 
			
		||||
...
 | 
			
		||||
							
								
								
									
										1
									
								
								org/alt/golang/test
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								org/alt/golang/test
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
go version
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
FROM {{ registry }}{{ alt_image }}:{{ branch }}
 | 
			
		||||
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
 | 
			
		||||
 | 
			
		||||
MAINTAINER alt-cloud
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								org/alt/grafana/info.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								org/alt/grafana/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - grafana
 | 
			
		||||
...
 | 
			
		||||
							
								
								
									
										1
									
								
								org/alt/grafana/test
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								org/alt/grafana/test
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
grafana --version
 | 
			
		||||
@@ -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
									
								
							
							
						
						
									
										6
									
								
								org/alt/loki/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - loki
 | 
			
		||||
...
 | 
			
		||||
							
								
								
									
										1
									
								
								org/alt/loki/test
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								org/alt/loki/test
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
loki -version -config.file=/etc/loki/loki.yaml
 | 
			
		||||
@@ -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
									
								
							
							
						
						
									
										8
									
								
								org/alt/nginx/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - nginx
 | 
			
		||||
  - apache2
 | 
			
		||||
  - tzdata
 | 
			
		||||
...
 | 
			
		||||
@@ -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
									
								
							
							
						
						
									
										7
									
								
								org/alt/node/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - node
 | 
			
		||||
  - yarn
 | 
			
		||||
...
 | 
			
		||||
							
								
								
									
										14
									
								
								org/alt/openjdk21/Dockerfile.template
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								org/alt/openjdk21/Dockerfile.template
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
FROM {{ registry }}{{ branch }}/base:latest
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
) }}
 | 
			
		||||
							
								
								
									
										6
									
								
								org/alt/openjdk21/info.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								org/alt/openjdk21/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - java-21-openjdk
 | 
			
		||||
...
 | 
			
		||||
							
								
								
									
										1
									
								
								org/alt/openjdk21/test
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								org/alt/openjdk21/test
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
javac --version && java --version
 | 
			
		||||
@@ -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
									
								
							
							
						
						
									
										11
									
								
								org/alt/php/info.yaml
									
									
									
									
									
										Normal 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 -%}
 | 
			
		||||
...
 | 
			
		||||
							
								
								
									
										1
									
								
								org/alt/php/test
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								org/alt/php/test
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
php --version
 | 
			
		||||
							
								
								
									
										20
									
								
								org/alt/postgresql/Dockerfile.template
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								org/alt/postgresql/Dockerfile.template
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
FROM {{ registry }}{{ branch }}/base:latest
 | 
			
		||||
 | 
			
		||||
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" ]
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										16
									
								
								org/alt/postgresql/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								org/alt/postgresql/README.md
									
									
									
									
									
										Normal 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`
 | 
			
		||||
							
								
								
									
										6
									
								
								org/alt/postgresql/info.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								org/alt/postgresql/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - postgresql16
 | 
			
		||||
...
 | 
			
		||||
							
								
								
									
										1
									
								
								org/alt/postgresql/test
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								org/alt/postgresql/test
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
pg_ctl --version
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
FROM {{ registry }}{{ alt_image }}:{{ branch }}
 | 
			
		||||
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
 | 
			
		||||
 | 
			
		||||
MAINTAINER alt-cloud
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								org/alt/prometheus-alertmanager/info.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								org/alt/prometheus-alertmanager/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - prometheus-alertmanager
 | 
			
		||||
...
 | 
			
		||||
							
								
								
									
										1
									
								
								org/alt/prometheus-alertmanager/test
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								org/alt/prometheus-alertmanager/test
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
alertmanager --version
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
FROM {{ registry }}{{ alt_image }}:{{ branch }}
 | 
			
		||||
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
 | 
			
		||||
 | 
			
		||||
MAINTAINER alt-cloud
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								org/alt/prometheus-node_exporter/info.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								org/alt/prometheus-node_exporter/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - prometheus-node_exporter
 | 
			
		||||
...
 | 
			
		||||
							
								
								
									
										1
									
								
								org/alt/prometheus-node_exporter/test
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								org/alt/prometheus-node_exporter/test
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
node_exporter --version
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
FROM {{ registry }}{{ alt_image }}:{{ branch }}
 | 
			
		||||
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
 | 
			
		||||
 | 
			
		||||
MAINTAINER alt-cloud
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								org/alt/prometheus/info.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								org/alt/prometheus/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - prometheus
 | 
			
		||||
...
 | 
			
		||||
@@ -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
									
								
							
							
						
						
									
										9
									
								
								org/alt/python/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - python3
 | 
			
		||||
  - python3-module-setuptools
 | 
			
		||||
  - python3-module-pip
 | 
			
		||||
  - gcc-defaults
 | 
			
		||||
...
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
FROM {{ registry }}{{ organization }}/base:{{ branch }}
 | 
			
		||||
FROM {{ registry }}{{ branch }}/base:latest
 | 
			
		||||
 | 
			
		||||
MAINTAINER alt-cloud
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								org/alt/python2/info.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								org/alt/python2/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - python
 | 
			
		||||
  - python-module-setuptools
 | 
			
		||||
  - gcc-defaults
 | 
			
		||||
...
 | 
			
		||||
							
								
								
									
										1
									
								
								org/alt/python2/test
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								org/alt/python2/test
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
python2 --version
 | 
			
		||||
							
								
								
									
										19
									
								
								org/alt/rabbitmq/Dockerfile.template
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								org/alt/rabbitmq/Dockerfile.template
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
FROM {{ registry }}{{ branch }}/base:latest
 | 
			
		||||
 | 
			
		||||
MAINTAINER alt-cloud
 | 
			
		||||
 
 | 
			
		||||
LABEL org.opencontainers.image.title="rabbitmq"
 | 
			
		||||
LABEL org.opencontainers.image.description="The RabbitMQ server"
 | 
			
		||||
LABEL org.opencontainers.image.source="https://github.com/rabbitmq/rabbitmq-server"
 | 
			
		||||
LABEL org.opencontainers.image.licenses="MPL-1.1"
 | 
			
		||||
LABEL org.opencontainers.image.vendor="ALT Linux Team"
 | 
			
		||||
                                
 | 
			
		||||
{{ install_packages("rabbitmq-server") }}
 | 
			
		||||
 | 
			
		||||
USER rabbitmq
 | 
			
		||||
WORKDIR /var/lib/rabbitmq
 | 
			
		||||
EXPOSE 5672 25672
 | 
			
		||||
VOLUME [ "/var/lib/rabbitmq", "/etc/rabbitmq" ]
 | 
			
		||||
 | 
			
		||||
ENTRYPOINT [ "/usr/sbin/rabbitmq-server" ]
 | 
			
		||||
CMD ["start", "rabbitmq"]
 | 
			
		||||
							
								
								
									
										18
									
								
								org/alt/rabbitmq/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								org/alt/rabbitmq/README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
dockerfiles-alt-rabbitmq
 | 
			
		||||
========================
 | 
			
		||||
 | 
			
		||||
ALT dockerfile for rabbitmq.
 | 
			
		||||
 | 
			
		||||
Copy Dockerfile somewhere and build the image:
 | 
			
		||||
`$ docker build --rm -t <username>/rabbitmq .`
 | 
			
		||||
 | 
			
		||||
And launch the rabbitmq-server container:
 | 
			
		||||
`docker run -d -p 5672:5672 --name="rabbitmq" -v rabbit-data:/var/lib/rabbitmq -v rabbit-conf:/etc/rabbitmq IMAGENAME`
 | 
			
		||||
 | 
			
		||||
With mounting /etc/rabbitmq/rabbitmq-env.conf could be change settings of rabbitmq-server.
 | 
			
		||||
 | 
			
		||||
It could be test via:
 | 
			
		||||
`curl localhost:5672`
 | 
			
		||||
 | 
			
		||||
For starting app:
 | 
			
		||||
`rabbitmqctl start_app`
 | 
			
		||||
							
								
								
									
										6
									
								
								org/alt/rabbitmq/info.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								org/alt/rabbitmq/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - rabbitmq-server
 | 
			
		||||
...
 | 
			
		||||
							
								
								
									
										1
									
								
								org/alt/rabbitmq/test
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								org/alt/rabbitmq/test
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
rabbitmqctl version
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
FROM {{ registry }}{{ alt_image }}:{{ branch }}
 | 
			
		||||
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
 | 
			
		||||
 | 
			
		||||
MAINTAINER alt-cloud
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								org/alt/registry/info.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								org/alt/registry/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - docker-registry
 | 
			
		||||
...
 | 
			
		||||
@@ -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
									
								
							
							
						
						
									
										11
									
								
								org/alt/ruby/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - >
 | 
			
		||||
    {%- if branch in ["p10", "c10f2", "c10f1"] -%}
 | 
			
		||||
    ruby
 | 
			
		||||
    {%- else -%}
 | 
			
		||||
    gem-irb
 | 
			
		||||
    {%- endif -%}
 | 
			
		||||
...
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
FROM {{ registry }}{{ organization }}/base:{{ branch }}
 | 
			
		||||
FROM {{ registry }}{{ branch }}/base:latest
 | 
			
		||||
 | 
			
		||||
MAINTAINER alt-cloud
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								org/alt/systemd/info.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								org/alt/systemd/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - systemd
 | 
			
		||||
...
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
FROM {{ registry }}{{ alt_image }}:{{ branch }}
 | 
			
		||||
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
 | 
			
		||||
 | 
			
		||||
MAINTAINER alt-cloud
 | 
			
		||||
 | 
			
		||||
@@ -10,4 +10,4 @@ LABEL org.opencontainers.image.vendor="ALT Linux Team"
 | 
			
		||||
 | 
			
		||||
{{ install_packages("trivy") }}
 | 
			
		||||
 | 
			
		||||
ENTRYPOINT [ "trivy" ]
 | 
			
		||||
ENTRYPOINT [ "trivy" ]
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								org/alt/trivy/info.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								org/alt/trivy/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - trivy
 | 
			
		||||
...
 | 
			
		||||
@@ -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
									
								
							
							
						
						
									
										8
									
								
								org/alt/unit/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - unit
 | 
			
		||||
  - curl
 | 
			
		||||
  - tzdata
 | 
			
		||||
...
 | 
			
		||||
@@ -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
									
								
							
							
						
						
									
										6
									
								
								org/alt/zot/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: true
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - zot
 | 
			
		||||
...
 | 
			
		||||
							
								
								
									
										12
									
								
								org/base/base/Dockerfile.template
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								org/base/base/Dockerfile.template
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										7
									
								
								org/base/base/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: false
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - glibc
 | 
			
		||||
  - tzdata
 | 
			
		||||
...
 | 
			
		||||
@@ -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"
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										9
									
								
								org/base/buildpack-deps-curl/info.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								org/base/buildpack-deps-curl/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: false
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - ca-certificates
 | 
			
		||||
  - curl
 | 
			
		||||
  - gnupg
 | 
			
		||||
  - wget
 | 
			
		||||
...
 | 
			
		||||
@@ -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(
 | 
			
		||||
							
								
								
									
										10
									
								
								org/base/buildpack-deps-scm/info.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								org/base/buildpack-deps-scm/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: false
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - git
 | 
			
		||||
  - mercurial
 | 
			
		||||
  - openssh
 | 
			
		||||
  - procps
 | 
			
		||||
  - subversion
 | 
			
		||||
...
 | 
			
		||||
@@ -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"
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										6
									
								
								org/base/buildpack-deps/info.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								org/base/buildpack-deps/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: false
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - gcc-defaults
 | 
			
		||||
...
 | 
			
		||||
@@ -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
									
								
							
							
						
						
									
										17
									
								
								org/base/devel/info.yaml
									
									
									
									
									
										Normal 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
 | 
			
		||||
...
 | 
			
		||||
							
								
								
									
										22
									
								
								org/base/distroless-base/distroless.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								org/base/distroless-base/distroless.toml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
from = "{{ registry }}{{ branch }}/distroless-static:latest"
 | 
			
		||||
builder-install-packages = [
 | 
			
		||||
    "glibc-core",
 | 
			
		||||
    '{{if_branches(["p10"], "glibc-nss")}}',
 | 
			
		||||
    "glibc-timezones",
 | 
			
		||||
    "libselinux",
 | 
			
		||||
    '{{if_branches(["p10"], "libssl1.1")}}',
 | 
			
		||||
    '{{if_branches(["p11"], "libssl3")}}',
 | 
			
		||||
    '{{if_branches(["sisyphus"], "libssl3")}}',
 | 
			
		||||
    "tzdata",
 | 
			
		||||
    "zlib",
 | 
			
		||||
]
 | 
			
		||||
packages = [
 | 
			
		||||
    "glibc-core",
 | 
			
		||||
    '{{if_branches(["p10"], "glibc-nss")}}',
 | 
			
		||||
    "glibc-pthread",
 | 
			
		||||
    "glibc-timezones",
 | 
			
		||||
    "tzdata",
 | 
			
		||||
    "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"}
 | 
			
		||||
							
								
								
									
										9
									
								
								org/base/distroless-base/info.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								org/base/distroless-base/info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
---
 | 
			
		||||
is_versioned: false
 | 
			
		||||
version_template: "{{ version }}"
 | 
			
		||||
source_packages:
 | 
			
		||||
  - glibc
 | 
			
		||||
  - tzdata
 | 
			
		||||
  - zlib
 | 
			
		||||
  - libselinux
 | 
			
		||||
...
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
FROM {{ registry }}{{ alt_image }}:{{ branch }}
 | 
			
		||||
FROM {{ registry }}{{ branch }}/{{ alt_image }}:latest
 | 
			
		||||
 | 
			
		||||
MAINTAINER alt-cloud
 | 
			
		||||
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user