Compare commits
	
		
			13 Commits
		
	
	
		
			automatic-
			...
			feature-2l
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 919ef43d60 | ||
|  | d34a5e2708 | ||
|  | 85334e382c | ||
|  | abdd641ac2 | ||
|  | 1a1bf5ac64 | ||
|  | a0643aca87 | ||
|  | 57aa82cf8c | ||
|  | 14da06e02b | ||
| 3b652fc6b0 | |||
| 2b923e4c96 | |||
|  | 9175f34e52 | ||
| f3f74f56dd | |||
|  | 31de830d2e | 
| @@ -24,22 +24,20 @@ do | ||||
|     then imgpath="$2-$1/$IM:latest" | ||||
|   fi | ||||
|  | ||||
|   entrypoint='/bin/sh' | ||||
|  | ||||
|   command="echo empty_command" | ||||
|   if [[ $test != '' ]]; then | ||||
|     command="podman run --rm --entrypoint=\"$entrypoint\" $3/$imgpath -c \"$test\"" | ||||
|     command="podman run --rm --entrypoint=\"/bin/sh\" $3/$imgpath -c \"$test\"" | ||||
|   else | ||||
|     if [[ $IM == 'distroless-true' ]]; then | ||||
|     if [[ $IM = 'distroless-true' ]]; then | ||||
|       command="podman run --rm $3/$imgpath \"true\"" | ||||
|     fi | ||||
|     if [[ $IM == 'distroless-gotop' ]]; then  | ||||
|     if [[ $IM = 'distroless-gotop' ]]; then  | ||||
|       command="podman run --rm $3/$imgpath \"--version\"" | ||||
|     fi  | ||||
|     if [[ $IM == 'flannel-cni-plugin' ]]; then | ||||
|     if [[ $IM = 'flannel-cni-plugin' ]]; then | ||||
|       command="podman run --rm $3/$imgpath \"/flannel\"" | ||||
|     fi | ||||
|     if [[ $IM == 'pause' ]]; then  | ||||
|     if [[ $IM = 'pause' ]]; then  | ||||
|       command="podman run --rm $3/$imgpath \"/pause\" \"-v\"" | ||||
|     fi  | ||||
|   fi | ||||
|   | ||||
| @@ -25,13 +25,6 @@ jobs: | ||||
|         env: | ||||
|           GU: ${{ gitea.server_url }} | ||||
|           GR: ${{ gitea.repository }} | ||||
|       - name: Set repo for c10f2 (Temporary) | ||||
|         if: ${{ contains(github.ref_name, 'c10f2') }} | ||||
|         run: | | ||||
|           echo "event tag=${{ github.ref_name }}"  | ||||
|           echo "10.4.0.3        update.altsp.su" >> /etc/hosts | ||||
|           echo "cat /etc/hosts" | ||||
|           cat /etc/hosts | ||||
|       - name: Update apt | ||||
|         uses: actions/init-alt-env@v1 | ||||
|       - name: Install requires | ||||
| @@ -62,6 +55,7 @@ jobs: | ||||
|         id: build-script | ||||
|         run: | | ||||
|           build_args="-b $BR -o $ORG --skip-images alt/distroless-devel"           | ||||
|           if [[ $BR == 'c10f1' || $BR == 'c10f2' ]]; then build_args="$build_args --skip-arches arm ppc64le"; fi | ||||
|           if [[ $ORG == 'k8s' ]]; then build_args="$build_args --tags tags.toml --overwrite-organization $ORG-$BR --skip-images k8s/kube-apiserver k8s/kube-controller-manager k8s/kube-proxy k8s/kube-scheduler"; fi | ||||
|           echo "build.py $build_args" | ||||
|           ${{ gitea.workspace }}/build.py $build_args | ||||
|   | ||||
| @@ -1,133 +0,0 @@ | ||||
| name: Full building alt images | ||||
| on: | ||||
|   push: | ||||
|     tags: | ||||
|       - 'p11_*' | ||||
|  | ||||
| jobs: | ||||
|   build-process: | ||||
|     runs-on: alt-sisyphus | ||||
|     outputs: | ||||
|       branch: ${{ env.BRANCH }} | ||||
|       org: ${{ env.ORG }} | ||||
|       url: ${{ env.URL }} | ||||
|       repo: ${{ env.REPO }} | ||||
|       buildres: ${{ steps.build-script.outcome }} | ||||
|     steps: | ||||
|       - name: Check workspace | ||||
|         run: | | ||||
|           repourl=$(echo $GU | cut -d '/' -f 3) | ||||
|           echo "URL=$repourl" >> ${GITHUB_ENV} | ||||
|           echo $repourl | ||||
|           reponame=$(echo $GR | cut -d '/' -f 1) | ||||
|           echo "REPO=$reponame" >> ${GITHUB_ENV} | ||||
|           echo $reponame | ||||
|         env: | ||||
|           GU: ${{ gitea.server_url }} | ||||
|           GR: ${{ gitea.repository }} | ||||
|       - name: Set repo for p11 (Temporary) | ||||
|         if: ${{ contains(github.ref_name, 'p11') }} | ||||
|         run: | | ||||
|           echo "event tag=${{ github.ref_name }}"  | ||||
|           echo "10.4.0.3        update.altsp.su" >> /etc/hosts | ||||
|           echo "cat /etc/hosts" | ||||
|           cat /etc/hosts  | ||||
|       - name: Update apt | ||||
|         uses: actions/init-alt-env@v1 | ||||
|       - name: Install requires | ||||
|         run: | | ||||
|           echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl" | ||||
|           apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl | ||||
|           echo "apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc" | ||||
|           apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc           | ||||
|       - name: Check out current repo | ||||
|         uses: actions/checkout@v4 | ||||
|       - name: Parse target branch and tag from events context, save to env                                 | ||||
|         env: | ||||
|           EV: ${{ toJson(gitea.event) }}                                          | ||||
|         run: | | ||||
|           echo $EV | jq '.ref' -r | sed "s/refs\/tags\//BRANCH=/g" | cut -d '_' -f 1 | ||||
|           echo $EV | jq '.ref' -r | sed "s/refs\/tags\//BRANCH=/g" | cut -d '_' -f 1 >> ${GITHUB_ENV} | ||||
|           org=$(echo $EV | jq '.ref' -r | sed 's/refs\/tags\///g' | cut -d '_' -f 2) | ||||
|           echo "ORG=$org" >> ${GITHUB_ENV}                               | ||||
|           echo "ORG=$org" | ||||
|       - name: Login podman gitea | ||||
|         run: | | ||||
|           echo "podman login ${{ env.URL }}" | ||||
|           podman login --username $P_USER --password $P_PASS ${{ env.URL }}           | ||||
|         env: | ||||
|           P_USER: ${{ secrets.PODMAN_USER }} | ||||
|           P_PASS: ${{ secrets.PODMAN_PASS }} | ||||
|       - name: Run building script | ||||
|         id: build-script | ||||
|         run: | | ||||
|           build_args="-b $BR -o $ORG --skip-images alt/distroless-devel"           | ||||
|           if [[ $ORG == 'k8s' ]]; then build_args="$build_args --tags tags.toml --overwrite-organization $ORG-$BR --skip-images k8s/kube-apiserver k8s/kube-controller-manager k8s/kube-proxy k8s/kube-scheduler"; fi | ||||
|           echo "build.py $build_args" | ||||
|           ${{ gitea.workspace }}/build.py $build_args | ||||
|         env: | ||||
|           ORG: ${{ env.ORG }} | ||||
|           BR: ${{ env.BRANCH }} | ||||
|         continue-on-error: true | ||||
|       - name: Send notification if build crashed | ||||
|         if: ${{ steps.build-script.outcome != 'success' }} | ||||
|         run: | | ||||
|           issueid=1 | ||||
|           body="Building images finish with some errors." | ||||
|           curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s | ||||
|           echo "notification about test error is sent to issue $issueid" | ||||
|         env: | ||||
|           T: ${{ secrets.TOKEN }} | ||||
|           BR: ${{ env.BRANCH }} | ||||
|           URL: ${{ gitea.server_url }} | ||||
|           REPO: ${{ env.REPO }} | ||||
|       - name: Delete event tag | ||||
|         run: | | ||||
|           tagname=$(echo $EV | jq '.ref' -r | sed "s/refs\/tags\///g") | ||||
|           curl -X 'DELETE' "$URL/api/v1/repos/$REPO/image-forge/tags/$tagname?token=$T" -H 'accept: application/json' -s | ||||
|           echo "tag $tagname is deleted"                     | ||||
|         env: | ||||
|           T: ${{ secrets.TOKEN }} | ||||
|           BR: ${{ env.BRANCH }} | ||||
|           URL: ${{ gitea.server_url }} | ||||
|           REPO: ${{ env.REPO }} | ||||
|           EV: ${{ toJson(gitea.event) }} | ||||
|   test-process: | ||||
|     needs: build-process | ||||
|     if: ${{ needs.build-process.outputs.buildres == 'success' }} | ||||
|     runs-on: alt-sisyphus | ||||
|     steps: | ||||
|       - name: Update apt | ||||
|         uses: actions/init-alt-env@v1 | ||||
|       - name: Install requires | ||||
|         run: | | ||||
|           echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl" | ||||
|           apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl | ||||
|       - name: Check out current repo | ||||
|         uses: https://gitea.com/actions/checkout@v4 | ||||
|       - name: Test | ||||
|         id: test-script | ||||
|         continue-on-error: true | ||||
|         run: | | ||||
|           $WS/.gitea/workflows/testscript $BR $ORG $URL $REPO $WS | ||||
|           cat haserr.log >> ${GITHUB_ENV} | ||||
|           echo "test process finished" | ||||
|         env: | ||||
|           BR: ${{ needs.build-process.outputs.branch }} | ||||
|           ORG: ${{ needs.build-process.outputs.org }} | ||||
|           URL: ${{ needs.build-process.outputs.url }} | ||||
|           REPO: ${{ needs.build-process.outputs.repo }} | ||||
|           WS: ${{ gitea.workspace }} | ||||
|       - name: Send notification if test crashed | ||||
|         if: ${{ env.ERR == 'true' || steps.test-script.outcome == 'failure' }} | ||||
|         run: | | ||||
|           issueid=1 | ||||
|           errors=$(cat errors.log) | ||||
|           body="Testing images finish with some errors. $errors" | ||||
|           curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s | ||||
|           echo "notification about test error is sent to issue $issueid" | ||||
|         env: | ||||
|           T: ${{ secrets.TOKEN }} | ||||
|           BR: ${{ needs.build-process.outputs.branch }} | ||||
|           URL: ${{ gitea.server_url }} | ||||
|           REPO: ${{ needs.build-process.outputs.repo }} | ||||
| @@ -55,6 +55,7 @@ jobs: | ||||
|         id: build-script | ||||
|         run: | | ||||
|           build_args="-b $BR -o $ORG --skip-images alt/distroless-devel"           | ||||
|           if [[ $BR == 'sisyphus' ]]; then build_args="$build_args --skip-arches arm"; fi | ||||
|           if [[ $ORG == 'k8s' ]]; then build_args="$build_args --tags tags.toml --overwrite-organization $ORG-$BR --skip-images k8s/kube-apiserver k8s/kube-controller-manager k8s/kube-proxy k8s/kube-scheduler"; fi | ||||
|           echo "build.py $build_args" | ||||
|           ${{ gitea.workspace }}/build.py $build_args | ||||
|   | ||||
| @@ -1,159 +0,0 @@ | ||||
| name: Building alt images | ||||
| on: | ||||
|   push: | ||||
|     tags: | ||||
|       - '*_*/*' | ||||
|  | ||||
| jobs: | ||||
|   build-process: | ||||
|     runs-on: alt-latest | ||||
|     outputs: | ||||
|       branch: ${{ env.BRANCH }} | ||||
|       image: ${{ env.IMAGE }} | ||||
|       url: ${{ env.URL }} | ||||
|       repo: ${{ env.REPO }} | ||||
|       buildres: ${{ steps.build-script.outcome }} | ||||
|       test: ${{ env.TEST }} | ||||
|     steps: | ||||
|       - name: Check workspace | ||||
|         run: | | ||||
|           repourl=$(echo $GU | cut -d '/' -f 3) | ||||
|           echo "URL=$repourl" >> ${GITHUB_ENV} | ||||
|           echo "URL=$repourl" | ||||
|           reponame=$(echo $GR | cut -d '/' -f 1) | ||||
|           echo "REPO=$reponame" >> ${GITHUB_ENV}  | ||||
|           echo "REPO=$reponame" | ||||
|         env: | ||||
|           GU: ${{ gitea.server_url }} | ||||
|           GR: ${{ gitea.repository }} | ||||
|       - name: Set repo for c10f2 (Temporary) | ||||
|         if: ${{ contains(github.ref_name, 'c10f2') }} | ||||
|         run: | | ||||
|           echo "event tag=${{ github.ref_name }}"  | ||||
|           echo "10.4.0.3        update.altsp.su" >> /etc/hosts | ||||
|           echo "cat /etc/hosts" | ||||
|           cat /etc/hosts | ||||
|       - name: Update apt | ||||
|         uses: actions/init-alt-env@v1 | ||||
|       - name: Install requires | ||||
|         run: | | ||||
|           echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl" | ||||
|           apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl | ||||
|           echo "apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc" | ||||
|           apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc           | ||||
|       - name: Check out current repo | ||||
|         uses: actions/checkout@v4 | ||||
|       - name: Login podman gitea | ||||
|         run: | | ||||
|           echo "podman login ${{ env.URL }}" | ||||
|           podman login --username $P_USER --password $P_PASS ${{ env.URL }}           | ||||
|         env: | ||||
|           P_USER: ${{ secrets.PODMAN_USER }} | ||||
|           P_PASS: ${{ secrets.PODMAN_PASS }} | ||||
|       - name: Check files in the repository | ||||
|         run: | | ||||
|           ls -a ${{ gitea.workspace }}           | ||||
|       - name: Parse target branch and tag from events context, save to env                                 | ||||
|         env: | ||||
|           EV: ${{ toJson(gitea.event) }}                                          | ||||
|         run: | | ||||
|           echo $EV | jq '.ref' -r | sed "s/refs\/tags\//BRANCH=/g" | cut -d '_' -f 1 | ||||
|           echo $EV | jq '.ref' -r | sed "s/refs\/tags\//BRANCH=/g" | cut -d '_' -f 1 >> ${GITHUB_ENV} | ||||
|           localimage=$(echo $EV | jq '.ref' -r | sed 's/refs\/tags\///g' | cut -d '_' -f 2) | ||||
|           echo "IMAGE=$localimage" >> ${GITHUB_ENV}                               | ||||
|           echo "IMAGE=$localimage" | ||||
|           org=$(echo "$localimage" | cut -d '/' -f 1) | ||||
|           echo "ORG=$org" >> ${GITHUB_ENV} | ||||
|           echo "ORG=$org" | ||||
|       - name: Get test for image | ||||
|         run: | | ||||
|           if test -f ${{ gitea.workspace }}/org/$IM/test; then testscript=$(cat ${{ gitea.workspace }}/org/$IM/test); else testscript=""; fi | ||||
|           echo "TEST=$testscript" >> ${GITHUB_ENV}           | ||||
|         env:                                      | ||||
|           IM: ${{ env.IMAGE }} | ||||
|           BR: ${{ env.BRANCH }} | ||||
|       - name: Run building script | ||||
|         id: build-script | ||||
|         run: | | ||||
|           if [[ "$IM" == *"k8s"* ]]; then k8sarg="--tags=tags.toml --overwrite-organization $ORG-$BR"; else k8sarg=""; fi | ||||
|           echo "build.py -i $IM -b $BR" | ||||
|           ${{ gitea.workspace }}/build.py -i $IM -b $BR $k8sarg         | ||||
|         env: | ||||
|           IM: ${{ env.IMAGE }} | ||||
|           BR: ${{ env.BRANCH }} | ||||
|           ORG: ${{ env.ORG }} | ||||
|         continue-on-error: true | ||||
|       - name: Send notification if build crashed | ||||
|         if: ${{ steps.build-script.outcome != 'success' }} | ||||
|         run: | | ||||
|           issueid=1 | ||||
|           body="Building image $IM finish with some errors." | ||||
|           curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s | ||||
|           echo "notification about test error is sent to issue $issueid"           | ||||
|         env: | ||||
|           T: ${{ secrets.TOKEN }} | ||||
|           BR: ${{ env.BRANCH }} | ||||
|           URL: ${{ gitea.server_url }} | ||||
|           REPO: ${{ env.REPO }} | ||||
|           IM: ${{ env.IMAGE }} | ||||
|       - name: Delete event tag | ||||
|         run: | | ||||
|           tagname=$(echo $EV | jq '.ref' -r | sed "s/refs\/tags\///g") | ||||
|           curl -X 'DELETE' "$URL/api/v1/repos/$REPO/image-forge/tags/$tagname?token=$T" -H 'accept: application/json' -s | ||||
|           echo "tag $tagname is deleted"                               | ||||
|         env: | ||||
|           T: ${{ secrets.TOKEN }} | ||||
|           BR: ${{ env.BRANCH }} | ||||
|           URL: ${{ gitea.server_url }} | ||||
|           REPO: ${{ env.REPO }} | ||||
|           EV: ${{ toJson(gitea.event) }} | ||||
|   test-process: | ||||
|     needs: build-process | ||||
|     if: ${{ needs.build-process.outputs.buildres == 'success' }} | ||||
|     runs-on: alt-latest | ||||
|     steps: | ||||
|       - name: Update apt | ||||
|         uses: https://gitea.basealt.ru/actions/init-alt-env@v1 | ||||
|       - name: Install requires | ||||
|         run: | | ||||
|           echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah curl" | ||||
|           apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah curl                  | ||||
|       - name: Run test | ||||
|         id: test-script | ||||
|         if: ${{ needs.build-process.outputs.test != '' }} | ||||
|         continue-on-error: true | ||||
|         run: | | ||||
|           if [[ "$IM" == *"k8s"* ]]; then echo "skip tests for k8s images"; else podman run --rm --entrypoint="/bin/sh" $URL/$IM:$BR -c "$TEST"; fi | ||||
|         env:                 | ||||
|           IM: ${{ needs.build-process.outputs.image }}  | ||||
|           BR: ${{ needs.build-process.outputs.branch }} | ||||
|           URL: ${{ needs.build-process.outputs.url }}   | ||||
|           REPO: ${{ needs.build-process.outputs.repo }} | ||||
|           TEST: ${{ needs.build-process.outputs.test }} | ||||
|       - name: Run special test | ||||
|         id: special-test | ||||
|         if: ${{ needs.build-process.outputs.test == '' }} | ||||
|         continue-on-error: true | ||||
|         run: | | ||||
|           if [[ $IM = 'alt/distroless-true' ]]; then podman run --rm $URL/$IM:$BR true; fi | ||||
|           if [[ $IM = 'alt/distroless-gotop' ]]; then podman run --rm $URL/$IM:$BR --version; fi | ||||
|         env: | ||||
|           IM: ${{ needs.build-process.outputs.image }} | ||||
|           BR: ${{ needs.build-process.outputs.branch }} | ||||
|           URL: ${{ needs.build-process.outputs.url }} | ||||
|           REPO: ${{ needs.build-process.outputs.repo }} | ||||
|       - name: Send notification if test crashed | ||||
|         if: ${{ steps.test-script.outcome == 'failure' || steps.special-test.outcome == 'failure' }} | ||||
|         run: | | ||||
|           issueid=1 | ||||
|           errors=$(cat errors.log) | ||||
|           body="Testing image $IM finish with some errors." | ||||
|           curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s | ||||
|           echo "notification about test error is sent to issue $issueid"           | ||||
|         env: | ||||
|           T: ${{ secrets.TOKEN }} | ||||
|           BR: ${{ needs.build-process.outputs.branch }} | ||||
|           URL: ${{ gitea.server_url }} | ||||
|           REPO: ${{ needs.build-process.outputs.repo }} | ||||
|           IM: ${{ needs.build-process.outputs.image }} | ||||
|  | ||||
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1 +0,0 @@ | ||||
| Dockerfile | ||||
|   | ||||
							
								
								
									
										59
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										59
									
								
								README.md
									
									
									
									
									
								
							| @@ -26,68 +26,9 @@ the organization `<ORGANIZATION>`, run: | ||||
| ``` | ||||
| If you push to the users repository, then organiztion is your username. | ||||
|  | ||||
| ## info.yaml format | ||||
|  | ||||
| - `is_versioned`: **bool** (REQUIRED) | ||||
|  | ||||
|   Whether to use package version as a tag for this image | ||||
|  | ||||
| - `source_packages`: **list of strings** (REQUIRED) | ||||
|  | ||||
|   List of source packages (src.rpm) this image depends on. | ||||
|   If contains jinja2 template syntax, `--package-version` | ||||
|   CLI option must be specified. | ||||
|  | ||||
| - `version_template`: **string** (OPTIONAL) | ||||
|  | ||||
|   template to apply when construction the tag, | ||||
|   `version` string variable is available in the template | ||||
|  | ||||
| ### examples | ||||
|  | ||||
|  | ||||
| #### org/k8s/flannel-cni-plugin | ||||
|  | ||||
| ```yaml | ||||
| is_versioned: true | ||||
| version_template: v{{ version.rsplit('.', 1) | first  }}-flannel{{ version.rsplit('.', 1) | last }} | ||||
| source_packages: | ||||
|   - cni-plugin-flannel | ||||
| ``` | ||||
|  | ||||
| ```bash | ||||
| ./build.py -i k8s/flannel-cni-plugin | ||||
| ``` | ||||
|  | ||||
| #### org/k8s/kube-apiserver | ||||
|  | ||||
| ```yaml | ||||
| is_versioned: true | ||||
| version_template: v{{ version }} | ||||
| source_packages: | ||||
|   - kubernetes{{ version }} | ||||
| ``` | ||||
|  | ||||
| ```bash | ||||
| ./build.py -b sisyphus -i k8s/kube-apiserver --package-version '{"k8s/kube-apiserver": "1.31"}' | ||||
| ``` | ||||
|  | ||||
| #### org/k8s/pause | ||||
|  | ||||
| ```yaml | ||||
| is_versioned: true | ||||
| source_packages: | ||||
|   - kubernetes-pause | ||||
| ``` | ||||
|  | ||||
| ```bash | ||||
| ./build.py -i k8s/pause | ||||
| ``` | ||||
|  | ||||
| ## Dependencies | ||||
| On x86_64 machine using p10 branch you need: | ||||
| - `python3-module-tomli` | ||||
| - `python3-module-jinja2` | ||||
| - `qemu-user-static-binfmt-aarch64` to build for arm64 architecture | ||||
| - `qemu-user-static-binfmt-arm` to build for arm architecture | ||||
| - `qemu-user-static-binfmt-ppc` to build for ppc64le architecture | ||||
|   | ||||
							
								
								
									
										153
									
								
								branch/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										153
									
								
								branch/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,153 @@ | ||||
| # Описание структуры каталогов для автоматизации рабочео процесса создания образов | ||||
|  | ||||
| ## Общая структура каталогов  | ||||
|  | ||||
| - Вместо каталога `org` предлагается использовать каталог `branch` | ||||
|  | ||||
| - Каталог `branch` содержит подкаталога бранчей (платформ): | ||||
|   * `sisyphus`; | ||||
|   * `p10`; | ||||
|   * `c10f1`; | ||||
|   * `c10f2`; | ||||
|   * ... | ||||
|  | ||||
| Подкаталоги бранчей содержат дерево групп образов. | ||||
|  | ||||
| Корневая группа `base` содержит образы, которые тегируются по дате создания. | ||||
| Остальные группы тегируются по версии основного ПО, входящего в состав образа. | ||||
|  | ||||
| Каталог группы может содержать yml-файл `images.yml` описания группы. | ||||
|  | ||||
| Пример дерева описания образов:   | ||||
| <pre> | ||||
| branch/sisyphus/ | ||||
| ├── apache | ||||
| ├── base | ||||
| │   ├── alt | ||||
| │   ├── buildpack | ||||
| │   │   ├── buildpack-deps-curl | ||||
| │   │   └── buildpack-deps-scm | ||||
| │   ├── devel | ||||
| │   ├── distroless | ||||
| │   │   ├── distroless-base | ||||
| │   │   ├── distroless-builder | ||||
| │   │   ├── distroless-devel | ||||
| │   │   ├── distroless-gotop | ||||
| │   │   ├── distroless-static | ||||
| │   │   └── distroless-true | ||||
| │   ├── systemd | ||||
| │   └── unit | ||||
| ├── cert-manager | ||||
| │   ├── cert-manager-cainjector | ||||
| │   ├── cert-manager-controller | ||||
| │   └── cert-manager-webhook | ||||
| ├── cni | ||||
| │   └── flannel | ||||
| │       ├── flannel | ||||
| │       └── flannel-cni-plugin | ||||
| ├── gitea | ||||
| ├── k8s | ||||
| │   ├── coredns | ||||
| │   ├── deckhouse | ||||
| │   │   ├── coredns | ||||
| │   │   ├── etcd | ||||
| │   │   ├── kube-apiserver | ||||
| │   │   ├── kube-controller-manager | ||||
| │   │   ├── kube-proxy | ||||
| │   │   ├── kube-scheduler | ||||
| │   │   └── pause | ||||
| │   ├── etcd | ||||
| │   ├── kube-apiserver | ||||
| │   ├── kube-controller-manager | ||||
| │   ├── kube-proxy | ||||
| │   ├── kube-scheduler | ||||
| │   └── pause | ||||
| ├── nginx | ||||
| ├── prometheus | ||||
| ├── python | ||||
| ├── registry | ||||
| ├── ruby | ||||
| └── trivy | ||||
|     └── trivy-node-collector | ||||
| </pre> | ||||
|  | ||||
| Конечный каталог дерева содержит файлы: | ||||
|  | ||||
| - **`Dockerfile`** - файл для сборки образа; | ||||
|  | ||||
| - **`image.yml`** - файл описания метаданных для образа.  | ||||
|  | ||||
| Кроме этого конечный каталог может содержать файлы и каталоги, которые помещаются в образ командами `COPY` и `ADD`.  | ||||
|  | ||||
| Все вышележащие до каталога конкретного бранча (`sisyphus`, `p10`, `c10f1`, `c10f2`, ...) описывают группу (возможно пустую), в которую входит образ. | ||||
|  | ||||
| Имя образа формируется как тропа дерева каталогов. | ||||
| Например: | ||||
| - `sisyphus/apache` | ||||
| - `sisyphus/k8s/kube-apiserver`  | ||||
|  | ||||
| Имя тега берется либо из файла `image.yml` описания образа, либо из файла описания группы `images.yml`. | ||||
|  | ||||
| ## Конечный каталог описания образа | ||||
|  | ||||
| ###  Dockerfile | ||||
|  | ||||
| Предлагается заменить шаблон `Dockerfile.template` заменить на нативный `Dockerfile`. | ||||
| Все параметры, подставляемые функцией `render_dockerfiles` скрипта    | ||||
| [/build.py](https://gitea.basealt.ru/alt/image-forge/src/branch/feature-new-layout/build.py#L249) | ||||
| заменяются на аргументы (`ARG`), инициализируемые непосредственно в `Dockerfile`или передаваемые (с заиещением) при сборко образа параметрами `--build-arg="<ARG>=<VALUE>"`. | ||||
|  | ||||
| За исключением шаблона `{{ install_pakages("<пакет>" ...) }}` | ||||
|    | ||||
| Предлагается во все базовые дистрибутивы включить `shell-скрипт` `alt_install_pakages`, выполняющий функции аналогичные  | ||||
| python-функции [install_pakages](https://gitea.basealt.ru/alt/image-forge/src/branch/feature-new-layout/build.py#L250). | ||||
|  | ||||
| Шаблон `{{ install_pakages("<пакет>" ...) }}` заменяется в `Dockerfile` оператором: | ||||
| ``` | ||||
| RUN alt_install_pakages <пакет> ... | ||||
| ```  | ||||
|  | ||||
| Пример файла образа `sisyphus/k8s/kube-apiserver`: | ||||
| <pre> | ||||
| ARG BRANCH REGISTRY=gitea.basealt.ru ALT_IMAGE=base/alt:$BRANCH MAINTAINER=alt-cloud ALT_TESTSCRIPT=/bin/true | ||||
|  | ||||
| FROM $REGISTRY/$ALT_IMAGE:$BRANCH | ||||
|  | ||||
| MAINTAINER $MAINTAINER | ||||
|  | ||||
| LABEL  org.altlinux.testscript=$ALT_TESTSCRIPT | ||||
|  | ||||
| RUN alt_install_pakages kubernetes-master | ||||
|  | ||||
| ENTRYPOINT ["/usr/bin/kube-apiserver"] | ||||
| </pre> | ||||
|  | ||||
| ### Файл image.yml описания метаданных для образа | ||||
|  | ||||
| В настоящий момент он содержит (жирным шрифтом обязательные элементы): | ||||
|  | ||||
| * **`image.maintainer`** - E-mail майнтейнера для создания и проверки электронной подписи образа; | ||||
|   | ||||
| * `image.alias` - список возможных алиасов образа; | ||||
|  | ||||
| * `image.tag` - тер образа (может при сборке перекрываться тегом, взятым из вышележащего файла `images.yml` описания группы) | ||||
|    | ||||
| * `image.labels` - список дополнительных метов образа, в частности: | ||||
|    | ||||
|   - `org.altlinux.testscript` - shell код для тестоиования образа при его запуске в режиме `podman ... -it --- <образ>` | ||||
|  | ||||
| Пример файла образа `sisyphus/k8s/kube-apiserver`: | ||||
| <pre> | ||||
| version: 1.0 | ||||
| image: | ||||
|   alias: | ||||
|   - k8s-${BRANCH}/${IMAGE}:${TAG} | ||||
|   labels: | ||||
|     org.altlinux.testscript: /bin/true | ||||
|   maintainer: stepchenkoas@basealt.ru | ||||
| </pre> | ||||
|  | ||||
|  | ||||
| ## Каталог  группы | ||||
|  | ||||
| ### Файл `images.yml` описания метаданных группы | ||||
							
								
								
									
										0
									
								
								branch/sisyphus/base/alt/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/alt/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/alt/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/alt/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/buildpack-deps-curl/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/buildpack-deps-curl/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/buildpack-deps-curl/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/buildpack-deps-curl/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/buildpack-deps-scm/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/buildpack-deps-scm/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/buildpack-deps-scm/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/buildpack-deps-scm/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/devel/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/devel/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/devel/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/devel/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/distroless-base/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/distroless-base/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/distroless-base/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/distroless-base/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/distroless-builder/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/distroless-builder/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/distroless-builder/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/distroless-builder/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/distroless-devel/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/distroless-devel/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/distroless-devel/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/distroless-devel/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/distroless-gotop/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/distroless-gotop/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/distroless-gotop/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/distroless-gotop/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/distroless-static/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/distroless-static/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/distroless-static/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/distroless-static/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/distroless-true/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/distroless-true/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/distroless-true/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/distroless-true/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/systemd/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/systemd/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/systemd/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/systemd/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/unit/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/unit/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/base/unit/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/base/unit/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										13
									
								
								branch/sisyphus/flannel/flannel-cni-plugin/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								branch/sisyphus/flannel/flannel-cni-plugin/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| FROM {{ registry }}{{ alt_image }}:{{ branch }} | ||||
|  | ||||
| MAINTAINER alt-cloud | ||||
|  | ||||
| LABEL org.opencontainers.image.title="flannel-cni-plugin" | ||||
| LABEL org.opencontainers.image.description="CNI network plugin that is powered by flannel" | ||||
| LABEL org.opencontainers.image.source="https://github.com/flannel-io/cni-plugin" | ||||
| LABEL org.opencontainers.image.licenses="Apache-2.0" | ||||
| LABEL org.opencontainers.image.vendor="ALT Linux Team" | ||||
|  | ||||
| {{ install_pakages("cni-plugin-flannel") }} | ||||
|  | ||||
| RUN cp /usr/libexec/cni/flannel /flannel | ||||
							
								
								
									
										28
									
								
								branch/sisyphus/flannel/flannel/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								branch/sisyphus/flannel/flannel/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| FROM {{ registry }}{{ alt_image }}:{{ branch }} | ||||
|  | ||||
| MAINTAINER alt-cloud | ||||
|  | ||||
| LABEL org.opencontainers.image.title="flannel" | ||||
| LABEL org.opencontainers.image.description="Network fabric for containers" | ||||
| LABEL org.opencontainers.image.source="https://github.com/flannel-io/flannel" | ||||
| LABEL org.opencontainers.image.licenses="Apache-2.0" | ||||
| LABEL org.opencontainers.image.vendor="ALT Linux Team" | ||||
|  | ||||
| {{ install_pakages( | ||||
|     "iproute2", | ||||
|     "net-tools", | ||||
|     "ca-certificates", | ||||
|     "iptables", | ||||
|     "iptables-nft", | ||||
|     "strongswan", | ||||
|     "wireguard-tools", | ||||
|     "flannel", | ||||
|     "wget", | ||||
| ) }} | ||||
|  | ||||
| RUN update-ca-trust | ||||
|  | ||||
| RUN mkdir -p /opt/bin/ && cp /usr/sbin/flanneld /opt/bin/flanneld | ||||
| RUN cp /usr/libexec/flannel/mk-docker-opts.sh /opt/bin/ | ||||
|  | ||||
| ENTRYPOINT ["/opt/bin/flanneld"] | ||||
							
								
								
									
										7
									
								
								branch/sisyphus/k8s/coredns/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								branch/sisyphus/k8s/coredns/image.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| version: 1.0 | ||||
| image: | ||||
|   alias: | ||||
|   - k8s-${BRANCH}/${IMAGE}:${TAG} | ||||
|   labels: | ||||
|     org.altlinux.testscript: /bin/true | ||||
|   maintainer: stepchenkoas@basealt.ru | ||||
							
								
								
									
										65
									
								
								branch/sisyphus/k8s/deckhouse/images.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								branch/sisyphus/k8s/deckhouse/images.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | ||||
| version: 1.0 | ||||
| imageSet: | ||||
|  | ||||
|   - version: 1.26.9 | ||||
|     images: | ||||
|       - kube-apiserver: | ||||
|           tag: 1.26.9 | ||||
|           alias: | ||||
|           - k8s-${BRANCH}/${IMAGE}:${TAG} | ||||
|       - kube-controllermanager: | ||||
|           tag: 1.26.9 | ||||
|           alias: k8s-${BRANCH}/${IMAGE}:${TAG} | ||||
|       - kube-proxy: | ||||
|           tag: 1.26.9 | ||||
|           alias: | ||||
|           - k8s-${BRANCH}/${IMAGE}:${TAG} | ||||
|       - kube-scheduler: | ||||
|           tag: 1.26.9 | ||||
|           alias: | ||||
|           - k8s-${BRANCH}/${IMAGE}:${TAG} | ||||
|       - pause: | ||||
|           tag: 3.8 | ||||
|           alias: | ||||
|           - k8s-${BRANCH}/${IMAGE}:${TAG} | ||||
|       - coredns: | ||||
|           tag: v1.10.0 | ||||
|           alias: | ||||
|           - k8s-${BRANCH}/${IMAGE}:${TAG} | ||||
|       - etcd: | ||||
|           tag: 3.5.9 | ||||
|           alias: | ||||
|           - k8s-${BRANCH}/${IMAGE}:${TAG} | ||||
|           - alt/etcd:3.5.9 | ||||
|  | ||||
|   - version: 1.26.14 | ||||
|     images: | ||||
|       - kube-apiserver: | ||||
|           tag: 1.26.14 | ||||
|           alias: | ||||
|           - k8s-${BRANCH}/${IMAGE}:${TAG} | ||||
|       - kube-controllermanager: | ||||
|           tag: 1.26.14 | ||||
|           alias: | ||||
|           - k8s-${BRANCH}/${IMAGE}:${TAG} | ||||
|       - kube-proxy: | ||||
|           tag: 1.26.14 | ||||
|           alias: | ||||
|           - k8s-${BRANCH}/${IMAGE}:${TAG} | ||||
|       - kube-scheduler: | ||||
|           tag: 1.26.14 | ||||
|           alias: | ||||
|           - k8s-${BRANCH}/${IMAGE}:${TAG} | ||||
|       - pause: | ||||
|           tag: 3.9 | ||||
|           alias: | ||||
|           - k8s-${BRANCH}/${IMAGE}:${TAG} | ||||
|       - coredns: | ||||
|           tag: v1.10.0 | ||||
|           alias: | ||||
|           - k8s-${BRANCH}/${IMAGE}:${TAG} | ||||
|       - etcd: | ||||
|           tag: 3.5.10 | ||||
|           alias: | ||||
|           - k8s-${BRANCH}/${IMAGE}:${TAG} | ||||
|           - alt/etcd:3.5.10 | ||||
							
								
								
									
										41
									
								
								branch/sisyphus/k8s/images.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								branch/sisyphus/k8s/images.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,41 @@ | ||||
| version: 1.0 | ||||
| imageSet: | ||||
|   listCmd: ... | ||||
|  | ||||
|   - version: 1.26.9 | ||||
|     images: | ||||
|       - kube-apiserver: | ||||
|           tag: 1.26.9 | ||||
|       - kube-controllermanager: | ||||
|           tag: 1.26.9 | ||||
|       - kube-proxy: | ||||
|           tag: 1.26.9 | ||||
|       - kube-scheduler: | ||||
|           tag: 1.26.9 | ||||
|       - pause: | ||||
|           tag: 3.8 | ||||
|       - coredns: | ||||
|           tag: v1.10.0 | ||||
|       - etcd: | ||||
|           tag: 3.5.9 | ||||
|           alias: | ||||
|           - alt/etcd:3.5.9 | ||||
|  | ||||
|   - version: 1.26.14 | ||||
|     images: | ||||
|       - kube-apiserver: | ||||
|           tag: 1.26.14 | ||||
|       - kube-controllermanager: | ||||
|           tag: 1.26.14 | ||||
|       - kube-proxy: | ||||
|           tag: 1.26.14 | ||||
|       - kube-scheduler: | ||||
|           tag: 1.26.14 | ||||
|       - pause: | ||||
|           tag: 3.9 | ||||
|       - coredns: | ||||
|           tag: v1.10.0 | ||||
|       - etcd: | ||||
|           tag: 3.5.10 | ||||
|           alias: | ||||
|           - alt/etcd:3.5.10 | ||||
							
								
								
									
										7
									
								
								branch/sisyphus/k8s/kube-apiserver/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								branch/sisyphus/k8s/kube-apiserver/image.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| version: 1.0 | ||||
| image: | ||||
|   alias: | ||||
|   - k8s-${BRANCH}/${IMAGE}:${TAG} | ||||
|   labels: | ||||
|     org.altlinux.testscript: /bin/true | ||||
|   maintainer: stepchenkoas@basealt.ru | ||||
							
								
								
									
										7
									
								
								branch/sisyphus/k8s/kube-controller-manager/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								branch/sisyphus/k8s/kube-controller-manager/image.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| version: 1.0 | ||||
| image: | ||||
|   alias: | ||||
|   - k8s-${BRANCH}/${IMAGE}:${TAG} | ||||
|   labels: | ||||
|     org.altlinux.testscript: /bin/true | ||||
|   maintainer: stepchenkoas@basealt.ru | ||||
							
								
								
									
										7
									
								
								branch/sisyphus/k8s/kube-proxy/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								branch/sisyphus/k8s/kube-proxy/image.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| version: 1.0 | ||||
| image: | ||||
|   alias: | ||||
|   - k8s-${BRANCH}/${IMAGE}:${TAG} | ||||
|   labels: | ||||
|     org.altlinux.testscript: /bin/true | ||||
|   maintainer: stepchenkoas@basealt.ru | ||||
							
								
								
									
										7
									
								
								branch/sisyphus/k8s/kube-scheduler/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								branch/sisyphus/k8s/kube-scheduler/image.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| version: 1.0 | ||||
| image: | ||||
|   alias: | ||||
|   - k8s-${BRANCH}/${IMAGE}:${TAG} | ||||
|   labels: | ||||
|     org.altlinux.testscript: /bin/true | ||||
|   maintainer: stepchenkoas@basealt.ru | ||||
							
								
								
									
										7
									
								
								branch/sisyphus/k8s/pause/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								branch/sisyphus/k8s/pause/image.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| version: 1.0 | ||||
| image: | ||||
|   alias: | ||||
|   - k8s-${BRANCH}/${IMAGE}:${TAG} | ||||
|   labels: | ||||
|     org.altlinux.testscript: /bin/true | ||||
|   maintainer: stepchenkoas@basealt.ru | ||||
							
								
								
									
										17
									
								
								branch/sisyphus/target/apache/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								branch/sisyphus/target/apache/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| ARG BRANCH REGISTRY=gitea.basealt.ru ALT_IMAGE=base/alt:$BRANCH MAINTAINER=alt-cloud ALT_TESTSCRIPT=/bin/true | ||||
|  | ||||
| FROM $REGISTRY/$ALT_IMAGE:$BRANCH | ||||
|  | ||||
| MAINTAINER $MAINTAINER | ||||
|  | ||||
| LABEL org.opencontainers.image.title="apache2" | ||||
| LABEL org.opencontainers.image.description="The most widely used Web server on the Internet" | ||||
| LABEL org.opencontainers.image.source="http://httpd.apache.org" | ||||
| LABEL org.opencontainers.image.licenses="Apache-2.0" | ||||
| LABEL org.opencontainers.image.vendor="ALT Linux Team" | ||||
|  | ||||
| RUN alt_install_pakages apache2 | ||||
|  | ||||
| EXPOSE 80 | ||||
|  | ||||
| CMD ["/usr/sbin/httpd2", "-D", "NO_DETACH", "-k", "start"] | ||||
							
								
								
									
										0
									
								
								branch/sisyphus/target/etcd/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/target/etcd/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/target/etcd/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/target/etcd/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/target/gitea/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/target/gitea/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/target/gitea/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/target/gitea/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/target/nginx/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/target/nginx/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/target/nginx/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/target/nginx/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/target/prometheus/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/target/prometheus/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/target/prometheus/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/target/prometheus/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/target/python/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/target/python/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/target/python/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/target/python/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/target/registry/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/target/registry/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/target/registry/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/target/registry/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/target/ruby/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/target/ruby/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								branch/sisyphus/target/ruby/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								branch/sisyphus/target/ruby/image.yml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										161
									
								
								build.py
									
									
									
									
									
								
							
							
						
						
									
										161
									
								
								build.py
									
									
									
									
									
								
							| @@ -6,61 +6,25 @@ import json | ||||
| import re | ||||
| import subprocess | ||||
| import textwrap | ||||
| from dataclasses import dataclass | ||||
| from graphlib import TopologicalSorter | ||||
| from pathlib import Path | ||||
|  | ||||
| import requests | ||||
| import tomli | ||||
| import yaml | ||||
| from jinja2 import Template | ||||
|  | ||||
|  | ||||
| ORG_DIR = Path("org") | ||||
|  | ||||
| PKG_VERSIONS: dict | None = None | ||||
|  | ||||
|  | ||||
| @dataclass | ||||
| class Image: | ||||
|     canonical_name: str | ||||
|     is_versioned: bool | None | ||||
|     verion_template: str | None | ||||
|     source_packages: list[str] | None | ||||
|  | ||||
|     def __init__(self, canonical_name: str): | ||||
|     def __init__(self, canonical_name): | ||||
|         self.canonical_name = canonical_name | ||||
|         self.path = ORG_DIR / canonical_name | ||||
|         self.base_name = re.sub("^[^/]+/", "", canonical_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"] | ||||
|     def __str__(self): | ||||
|         return (f'Image(canonical_name="{self.canonical_name}", ' | ||||
|                 f'path="{self.path}", base_name="{self.base_name}")') | ||||
|  | ||||
|  | ||||
| class Tasks: | ||||
| @@ -85,67 +49,18 @@ class Tasks: | ||||
|                 ] | ||||
|  | ||||
|  | ||||
| def api_get_source_package_version(branch: str, package_name: str) -> str: | ||||
|     api_url = "https://rdb.altlinux.org/api/site/package_versions_from_tasks" | ||||
|     params = {"branch": branch, "name": package_name} | ||||
|     response = requests.get(api_url, params) | ||||
|     if response.status_code != 200: | ||||
|         print(response) | ||||
|         raise RuntimeError( | ||||
|             f"failed to retrieve source package version: source package {package_name!r}, branch {branch!r} " | ||||
|         ) | ||||
|  | ||||
|     result = response.json() | ||||
|  | ||||
|     return result["versions"][0]["version"] | ||||
|  | ||||
|  | ||||
| class Tags: | ||||
|     def __init__(self, tags_file: str | None, latest: str): | ||||
|     def __init__(self, tags_file, latest): | ||||
|         if tags_file is None: | ||||
|             self._tags = None | ||||
|         else: | ||||
|             self._tags = tomli.loads(Path(tags_file).read_text()) | ||||
|             tags_file = Path(tags_file) | ||||
|             self._tags = tomli.loads(tags_file.read_text()) | ||||
|         self._latest = latest | ||||
|  | ||||
|     def tags(self, branch: str, image: Image): | ||||
|     def tags(self, branch, image: Image): | ||||
|         if self._tags is None: | ||||
|             if image.is_versioned and image.source_packages: | ||||
|                 package_name = image.source_packages[0] | ||||
|  | ||||
|                 if re.search("{%.*%}", package_name): | ||||
|                     package_name = Template(package_name).render(branch=branch).strip() | ||||
|                     print(f"{package_name=}") | ||||
|  | ||||
|                 if re.search("{{.*}}", package_name): | ||||
|                     if PKG_VERSIONS is None: | ||||
|                         raise RuntimeError( | ||||
|                             f"--package-versions option is not specified, required for {image.canonical_name!r}" | ||||
|                         ) | ||||
|  | ||||
|                     if image.canonical_name not in PKG_VERSIONS: | ||||
|                         raise RuntimeError( | ||||
|                             f"--package-versions option does not contain version for image {image.canonical_name!r}" | ||||
|                         ) | ||||
|  | ||||
|                     if not PKG_VERSIONS[image.canonical_name]: | ||||
|                         raise RuntimeError( | ||||
|                             f"invalid version for image {image.canonical_name!r}: {PKG_VERSIONS[image.canonical_name]!r}" | ||||
|                         ) | ||||
|  | ||||
|                     package_name = Template(package_name).render( | ||||
|                         version=PKG_VERSIONS[image.canonical_name] | ||||
|                     ) | ||||
|                 version = api_get_source_package_version(branch, package_name) | ||||
|  | ||||
|                 if image.version_template is not None: | ||||
|                     version = ( | ||||
|                         Template(image.version_template).render(version=version).strip() | ||||
|                     ) | ||||
|  | ||||
|                 tags = [version] | ||||
|             else: | ||||
|                 tags = [branch] | ||||
|             tags = [branch] | ||||
|         else: | ||||
|             tags = self._tags[image.canonical_name][branch].copy() | ||||
|         if branch == self._latest: | ||||
| @@ -310,7 +225,7 @@ class DockerBuilder: | ||||
|         self, | ||||
|         template: str, | ||||
|         organization: str, | ||||
|         install_packages=None, | ||||
|         install_pakages=None, | ||||
|         **kwargs, | ||||
|     ) -> str: | ||||
|         if self.registry: | ||||
| @@ -322,7 +237,7 @@ class DockerBuilder: | ||||
|         rendered = Template(template).render( | ||||
|             alt_image=alt_image, | ||||
|             branch=self.branch, | ||||
|             install_packages=install_packages, | ||||
|             install_pakages=install_pakages, | ||||
|             organization=organization, | ||||
|             registry=registry, | ||||
|             **kwargs, | ||||
| @@ -332,7 +247,7 @@ class DockerBuilder: | ||||
|  | ||||
|     @forall_images(consume_result=True) | ||||
|     def render_dockerfiles(self, **kwargs): | ||||
|         def install_packages(*names): | ||||
|         def install_pakages(*names): | ||||
|             tasks = self.tasks.get(self.branch, kwargs["image"]) | ||||
|             linux32 = '$([ "$(rpm --eval %_host_cpu)" = i586 ] && echo linux32)' | ||||
|             if tasks: | ||||
| @@ -358,7 +273,7 @@ class DockerBuilder: | ||||
|             rendered = self.render_template( | ||||
|                 dockerfile_template.read_text(), | ||||
|                 self.overwrite_organization, | ||||
|                 install_packages, | ||||
|                 install_pakages, | ||||
|             ) | ||||
|             kwargs["dockerfile"].write_text(rendered + "\n") | ||||
|  | ||||
| @@ -665,12 +580,6 @@ 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:]: | ||||
| @@ -729,8 +638,8 @@ class ImagesInfo: | ||||
|  | ||||
| def parse_args(): | ||||
|     stages = ["build", "remove_dockerfiles", "render_dockerfiles", "push"] | ||||
|     arches = ["amd64", "386", "arm64"] | ||||
|     branches = ["p11", "p10", "sisyphus", "c10f1", "c10f2"] | ||||
|     arches = ["amd64", "386", "arm64", "arm", "ppc64le"] | ||||
|     branches = ["p9", "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] | ||||
| @@ -745,8 +654,7 @@ def parse_args(): | ||||
|         nargs="+", | ||||
|         default=images, | ||||
|         choices=images, | ||||
|         metavar="IMAGE_NAME", | ||||
|         help="list of images to build", | ||||
|         help="list of branches", | ||||
|     ) | ||||
|     images_group.add_argument( | ||||
|         "-o", | ||||
| @@ -756,14 +664,6 @@ def parse_args(): | ||||
|         choices=organizations, | ||||
|         help="build all images from these organizations", | ||||
|     ) | ||||
|     parser.add_argument( | ||||
|         "--skip-images", | ||||
|         nargs="+", | ||||
|         default=[], | ||||
|         choices=images, | ||||
|         metavar="IMAGE_NAME", | ||||
|         help="list of images to skip", | ||||
|     ) | ||||
|     parser.add_argument( | ||||
|         "-r", | ||||
|         "--registry", | ||||
| @@ -796,20 +696,27 @@ def parse_args(): | ||||
|     parser.add_argument( | ||||
|         "--sign", | ||||
|     ) | ||||
|     parser.add_argument( | ||||
|         "--skip-images", | ||||
|         nargs="+", | ||||
|         default=[], | ||||
|         choices=images, | ||||
|         help="list of skipping images", | ||||
|     ) | ||||
|     parser.add_argument( | ||||
|         "-a", | ||||
|         "--arches", | ||||
|         nargs="+", | ||||
|         default=arches, | ||||
|         choices=arches, | ||||
|         help="build images for these architectures", | ||||
|         help="list of arches", | ||||
|     ) | ||||
|     parser.add_argument( | ||||
|         "--skip-arches", | ||||
|         nargs="+", | ||||
|         default=[], | ||||
|         choices=arches, | ||||
|         help="list of architectures to skip", | ||||
|         help="list of skipping arches", | ||||
|     ) | ||||
|     parser.add_argument( | ||||
|         "-b", | ||||
| @@ -817,33 +724,28 @@ def parse_args(): | ||||
|         nargs="+", | ||||
|         default=branches, | ||||
|         choices=branches, | ||||
|         help="build images for these branches", | ||||
|         help="list of branches", | ||||
|     ) | ||||
|     parser.add_argument( | ||||
|         "--skip-branches", | ||||
|         nargs="+", | ||||
|         default=[], | ||||
|         choices=branches, | ||||
|         help="list of branches to skip", | ||||
|         help="list of skipping branches", | ||||
|     ) | ||||
|     parser.add_argument( | ||||
|         "--stages", | ||||
|         nargs="+", | ||||
|         default=stages, | ||||
|         choices=stages, | ||||
|         help="list of stages to go through", | ||||
|         help="list of stages", | ||||
|     ) | ||||
|     parser.add_argument( | ||||
|         "--skip-stages", | ||||
|         nargs="+", | ||||
|         default=[], | ||||
|         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", | ||||
|         help="list of skipping stages", | ||||
|     ) | ||||
|     args = parser.parse_args() | ||||
|  | ||||
| @@ -856,10 +758,7 @@ def parse_args(): | ||||
|  | ||||
|  | ||||
| def main(): | ||||
|     global PKG_VERSIONS | ||||
|  | ||||
|     args = parse_args() | ||||
|     PKG_VERSIONS = args.package_versions | ||||
|     arches = args.arches | ||||
|     images_info = ImagesInfo() | ||||
|     tags = Tags(args.tags, args.latest) | ||||
|   | ||||
| @@ -1,8 +1,65 @@ | ||||
| ["alt/buildpack-deps"] | ||||
| skip-branches = [ "p9" ] | ||||
|  | ||||
| ["alt/openjdk21"] | ||||
| skip-arches = [ "386" ] | ||||
| ["alt/distroless-base"] | ||||
| skip-branches = [ "p9" ] | ||||
|  | ||||
| ["alt/ansible"] | ||||
| skip-branches = [ "c10f2", "c10f1", "p10" ] | ||||
| ["alt/distroless-builder"] | ||||
| skip-branches = [ "p9" ] | ||||
|  | ||||
| ["alt/distroless-devel"] | ||||
| skip-branches = [ "p9" ] | ||||
|  | ||||
| ["alt/distroless-gotop"] | ||||
| skip-branches = [ "p9" ] | ||||
|  | ||||
| ["alt/distroless-static"] | ||||
| skip-branches = [ "p9" ] | ||||
|  | ||||
| ["alt/distroless-true"] | ||||
| skip-branches = [ "p9" ] | ||||
|  | ||||
| ["alt/gitea"] | ||||
| skip-branches = [ "p9" ] | ||||
|  | ||||
| ["alt/node"] | ||||
| skip-branches = [ "p9" ] | ||||
|  | ||||
| ["alt/unit"] | ||||
| skip-branches = [ "p9" ] | ||||
|  | ||||
| ["alt/prometheus"] | ||||
| skip-branches = [ "p9" ] | ||||
|  | ||||
| ["alt/registry"] | ||||
| skip-branches = [ "p9" ] | ||||
|  | ||||
| ["k8s/cert-manager-cainjector"] | ||||
| skip-branches = [ "p9" ] | ||||
|  | ||||
| ["k8s/cert-manager-controller"] | ||||
| skip-branches = [ "p9" ] | ||||
|  | ||||
| ["k8s/cert-manager-webhook"] | ||||
| skip-branches = [ "p9" ] | ||||
|  | ||||
| ["k8s/coredns"] | ||||
| skip-branches = [ "p9" ] | ||||
|  | ||||
| ["k8s/etcd"] | ||||
| skip-branches = [ "p9" ] | ||||
|  | ||||
| ["k8s/kube-apiserver"] | ||||
| skip-branches = [ "p9" ] | ||||
|  | ||||
| ["k8s/kube-controller-manager"] | ||||
| skip-branches = [ "p9" ] | ||||
|  | ||||
| ["k8s/kube-proxy"] | ||||
| skip-branches = [ "p9" ] | ||||
|  | ||||
| ["k8s/kube-scheduler"] | ||||
| skip-branches = [ "p9" ] | ||||
|  | ||||
| ["k8s/pause"] | ||||
| skip-branches = [ "p9" ] | ||||
|   | ||||
| @@ -1,17 +0,0 @@ | ||||
| FROM {{ registry }}{{ organization }}/node:{{ branch }} | ||||
|  | ||||
| MAINTAINER alt-cloud | ||||
|  | ||||
| LABEL org.opencontainers.image.title="ansible" | ||||
| LABEL org.opencontainers.image.description="A radically simple IT automation system" | ||||
| LABEL org.opencontainers.image.source="http://www.ansible.com" | ||||
| LABEL org.opencontainers.image.licenses="GPL-3.0" | ||||
| LABEL org.opencontainers.image.vendor="ALT Linux Team" | ||||
|  | ||||
| {{ install_packages( | ||||
|         "ansible-vim", | ||||
|         "ansible-core", | ||||
|         "ansible-lint" | ||||
| ) }} | ||||
|  | ||||
| WORKDIR /etc/ansible/playbooks | ||||
| @@ -1 +0,0 @@ | ||||
| ansible --version | ||||
| @@ -8,7 +8,7 @@ LABEL org.opencontainers.image.source="http://httpd.apache.org" | ||||
| LABEL org.opencontainers.image.licenses="Apache-2.0" | ||||
| LABEL org.opencontainers.image.vendor="ALT Linux Team" | ||||
|  | ||||
| {{ install_packages("apache2") }} | ||||
| {{ install_pakages("apache2") }} | ||||
|  | ||||
| EXPOSE 80 | ||||
|  | ||||
|   | ||||
| @@ -2,6 +2,6 @@ FROM {{ registry }}{{ alt_image }}:{{ branch }} | ||||
|  | ||||
| MAINTAINER alt-cloud | ||||
|  | ||||
| {{ install_packages("glibc-gconv-modules", "glibc-locales", "tzdata") }} | ||||
| {{ install_pakages("glibc-gconv-modules", "glibc-locales", "tzdata") }} | ||||
|  | ||||
| CMD ["bash"] | ||||
|   | ||||
| @@ -6,7 +6,7 @@ LABEL org.opencontainers.image.title="buildpack-deps-curl" | ||||
| LABEL org.opencontainers.image.licenses="GPLv2" | ||||
| LABEL org.opencontainers.image.vendor="ALT Linux Team" | ||||
|  | ||||
| {{ install_packages( | ||||
| {{ install_pakages( | ||||
|     "ca-certificates", | ||||
|     "curl", | ||||
|     "gnupg", | ||||
|   | ||||
| @@ -6,7 +6,7 @@ LABEL org.opencontainers.image.title="buildpack-deps-scm" | ||||
| LABEL org.opencontainers.image.licenses="GPLv2" | ||||
| LABEL org.opencontainers.image.vendor="ALT Linux Team" | ||||
|  | ||||
| {{ install_packages( | ||||
| {{ install_pakages( | ||||
|     "git", | ||||
|     "mercurial", | ||||
|     "openssh-clients", | ||||
|   | ||||
| @@ -6,7 +6,7 @@ LABEL org.opencontainers.image.title="buildpack-deps" | ||||
| LABEL org.opencontainers.image.licenses="GPLv2" | ||||
| LABEL org.opencontainers.image.vendor="ALT Linux Team" | ||||
|  | ||||
| {{ install_packages( | ||||
| {{ install_pakages( | ||||
|     "ImageMagick", | ||||
|     "autoconf", | ||||
|     "automake", | ||||
|   | ||||
| @@ -8,27 +8,27 @@ LABEL org.opencontainers.image.licenses="GPLv2" | ||||
| LABEL org.opencontainers.image.vendor="ALT Linux Team" | ||||
|  | ||||
| # install editor | ||||
| {{ install_packages("vim-console") }} | ||||
| {{ install_pakages("vim-console") }} | ||||
|  | ||||
| # install debugging tools | ||||
| {{ install_packages("strace", "gdb") }} | ||||
| {{ install_pakages("strace", "gdb") }} | ||||
|  | ||||
| # install document viewers | ||||
| {{ install_packages("man") }} | ||||
| {{ install_pakages("man") }} | ||||
|  | ||||
| # install version control system | ||||
| {{ install_packages("git-core", "perl-Git") }} | ||||
| {{ install_pakages("git-core", "perl-Git") }} | ||||
|  | ||||
| # install network utils | ||||
| {{ install_packages("iproute2", "iputils", "wget", "curl") }} | ||||
| {{ install_pakages("iproute2", "iputils", "wget", "curl") }} | ||||
|  | ||||
| # install file utils | ||||
| {{ install_packages("lsof", "ripgrep") }} | ||||
| {{ install_pakages("lsof", "ripgrep") }} | ||||
|  | ||||
| # install shell and completions | ||||
| {{ install_packages("zsh", "zsh-completions") }} | ||||
| {{ install_pakages("zsh", "zsh-completions") }} | ||||
|  | ||||
| # install compilation utils | ||||
| {{ install_packages("make", "gcc", "gcc-c++") }} | ||||
| {{ install_pakages("make", "gcc", "gcc-c++") }} | ||||
|  | ||||
| CMD ["zsh"] | ||||
|   | ||||
| @@ -4,8 +4,8 @@ builder-install-packages = [ | ||||
|     '{{if_branches(["p10"], "glibc-nss")}}', | ||||
|     "glibc-timezones", | ||||
|     "libselinux", | ||||
|     '{{if_branches(["p10"], "libssl1.1")}}', | ||||
|     '{{if_branches(["p11"], "libssl3")}}', | ||||
|     '{{if_branches(["p9", "p10"], "libssl1.1")}}', | ||||
|     '{{if_branches(["sisyphus"], "libssl1.1")}}', | ||||
|     '{{if_branches(["sisyphus"], "libssl3")}}', | ||||
|     "tzdata", | ||||
|     "zlib", | ||||
|   | ||||
| @@ -3,13 +3,13 @@ FROM {{ registry }}{{ alt_image }}:{{ branch }} | ||||
| MAINTAINER alt-cloud | ||||
|  | ||||
| LABEL org.opencontainers.image.title="distroless-builder" | ||||
| LABEL org.opencontainers.image.description="This image is used to build tarballs for distroless images" | ||||
| LABEL org.opencontainers.image.description="This images is using to build tarball for distroless images" | ||||
| LABEL org.opencontainers.image.licenses="GPLv2" | ||||
| LABEL org.opencontainers.image.vendor="ALT Linux Team" | ||||
|  | ||||
| RUN echo %_excludedocs 1 >> /etc/rpm/macros | ||||
| RUN rpm -qalds | awk '/^normal/{print $2}' | xargs rm -rf | ||||
| {{ install_packages("python3", "glibc-utils", "apt-repo") }} | ||||
| {{ install_pakages("python3", "glibc-utils", "apt-repo") }} | ||||
| WORKDIR /usr/src/distroless | ||||
| RUN mkdir file-lists | ||||
| RUN useradd -m nonroot | ||||
|   | ||||
| @@ -1,3 +1,3 @@ | ||||
| ALT dockerfile for distroless-builder image. | ||||
|  | ||||
| This image is used to build tarballs for distroless images. | ||||
| This images is using to build tarball for distroless images. | ||||
|   | ||||
| @@ -8,7 +8,7 @@ LABEL org.opencontainers.image.source="https://github.com/etcd-io/etcd" | ||||
| LABEL org.opencontainers.image.licenses="Apache-2.0" | ||||
| LABEL org.opencontainers.image.vendor="ALT Linux Team" | ||||
|  | ||||
| {{ install_packages("etcd") }} | ||||
| {{ install_pakages("etcd") }} | ||||
|  | ||||
| VOLUME /data | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ LABEL org.opencontainers.image.source="https://github.com/go-gitea/gitea" | ||||
| LABEL org.opencontainers.image.licenses="MIT" | ||||
| LABEL org.opencontainers.image.vendor="ALT Linux Team" | ||||
|  | ||||
| {{ install_packages("gitea", "openssh-server", "gosu") }} | ||||
| {{ install_pakages("gitea", "openssh-server", "gosu") }} | ||||
|  | ||||
| ENV USER gitea | ||||
| ENV HOME /var/lib/gitea | ||||
|   | ||||
| @@ -1,11 +0,0 @@ | ||||
| FROM {{ registry }}{{ organization }}/base:{{ branch }} | ||||
|  | ||||
| MAINTAINER alt-cloud | ||||
|  | ||||
| LABEL org.opencontainers.image.title="golang" | ||||
| LABEL org.opencontainers.image.description="The Golang environment for development" | ||||
| LABEL org.opencontainers.image.source="https://github.com/golang/go" | ||||
| LABEL org.opencontainers.image.licenses="BSD" | ||||
| LABEL org.opencontainers.image.vendor="ALT Linux Team" | ||||
|  | ||||
| {{ install_packages("golang") }} | ||||
| @@ -1 +0,0 @@ | ||||
| go version | ||||
| @@ -1,22 +0,0 @@ | ||||
| FROM {{ registry }}{{ alt_image }}:{{ branch }} | ||||
|  | ||||
| MAINTAINER alt-cloud | ||||
|  | ||||
| LABEL org.opencontainers.image.title="grafana" | ||||
| LABEL org.opencontainers.image.description="Metrics dashboard and graph editor" | ||||
| LABEL org.opencontainers.image.source="https://github.com/grafana/grafana" | ||||
| LABEL org.opencontainers.image.licenses="AGPL-3.0-only AND Apache-2.0" | ||||
| LABEL org.opencontainers.image.vendor="ALT Linux Team" | ||||
|  | ||||
| {{ install_packages("grafana") }} | ||||
|  | ||||
| USER grafana | ||||
| EXPOSE 3000 | ||||
| VOLUME ["/var/lib/grafana"] | ||||
|  | ||||
| ENV GF_PATHS_PROVISIONING=/etc/grafana/provisioning | ||||
| ENV GF_AUTH_ANONYMOUS_ENABLED=true | ||||
| ENV GF_AUTH_ANONYMOUS_ORG_ROLE=Admin | ||||
|  | ||||
| ENTRYPOINT [ "/usr/bin/grafana" ] | ||||
| CMD [ "server", "--config=/etc/grafana/grafana.ini", "--homepath=/usr/share/grafana", "--packaging=docker", "-configOverrides='cfg:default.paths.provisioning=/etc/grafana/provisioning cfg:default.paths.data=/var/lib/grafana cfg:default.paths.logs=/var/log/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins'" ] | ||||
| @@ -1,6 +0,0 @@ | ||||
| # Prometheus image | ||||
|  | ||||
| Command for run: | ||||
| ``` | ||||
| docker run -d --name="grafana" -p 3000:3000 -v grafana-data:/var/lib/grafana IMAGENAME | ||||
| ``` | ||||
| @@ -1 +0,0 @@ | ||||
| grafana --version | ||||
| @@ -1,19 +0,0 @@ | ||||
| FROM {{ registry }}{{ alt_image }}:{{ branch }} | ||||
|  | ||||
| MAINTAINER alt-cloud | ||||
|  | ||||
| LABEL org.opencontainers.image.title="loki" | ||||
| LABEL org.opencontainers.image.description="Like Prometheus, but for logs" | ||||
| LABEL org.opencontainers.image.source="https://github.com/grafana/loki" | ||||
| LABEL org.opencontainers.image.licenses="Apache-2.0" | ||||
| LABEL org.opencontainers.image.vendor="ALT Linux Team" | ||||
|  | ||||
| {{ install_packages("loki") }} | ||||
|  | ||||
| USER _loki:_loki | ||||
|  | ||||
| VOLUME ["/var/lib/loki", "/etc/loki/loki.yml"] | ||||
| EXPOSE 3100 | ||||
|  | ||||
| ENTRYPOINT ["/usr/bin/loki"] | ||||
| CMD ["-config.file=/etc/loki/loki.yaml"] | ||||
| @@ -1,6 +0,0 @@ | ||||
| # Prometheus image | ||||
|  | ||||
| Command for run: | ||||
| ``` | ||||
| docker run -d --name="loki" -p 3100:3100 -v loki-data:/var/lib/loki -v loki-config:/etc/loki/loki.yaml IMAGENAME | ||||
| ``` | ||||
| @@ -1 +0,0 @@ | ||||
| loki -version -config.file=/etc/loki/loki.yaml | ||||
| @@ -8,7 +8,7 @@ LABEL org.opencontainers.image.source="https://nginx.org/" | ||||
| LABEL org.opencontainers.image.licenses="BSD" | ||||
| LABEL org.opencontainers.image.vendor="ALT Linux Team" | ||||
|  | ||||
| {{ install_packages("nginx", "apache2-html", "tzdata") }} | ||||
| {{ install_pakages("nginx", "apache2-html", "tzdata") }} | ||||
|  | ||||
| RUN cd /etc/nginx/sites-enabled.d && ln -s ../sites-available.d/default.conf . | ||||
|  | ||||
|   | ||||
| @@ -11,7 +11,7 @@ LABEL org.opencontainers.image.vendor="ALT Linux Team" | ||||
| RUN groupadd --gid 1000 node \ | ||||
|     && useradd --uid 1000 --gid node --shell /bin/bash --create-home node | ||||
|  | ||||
| {{ install_packages( | ||||
| {{ install_pakages( | ||||
|     "node", | ||||
|     "npm", | ||||
|     "yarn" | ||||
|   | ||||
| @@ -1,14 +0,0 @@ | ||||
| FROM {{ registry }}{{ organization }}/base:{{ branch }} | ||||
|  | ||||
| MAINTAINER alt-cloud | ||||
|  | ||||
| LABEL org.opencontainers.image.title="openjdk21" | ||||
| LABEL org.opencontainers.image.description="OpenJDK 21 Runtime Environment" | ||||
| LABEL org.opencontainers.image.source="https://openjdk-sources.osci.io" | ||||
| LABEL org.opencontainers.image.licenses="Apache-1.1 and Apache-2.0 and BSD and BSD with advertising and GPL-2.0 and GPL-2.0 with exceptions and IJG and LGPL-2.0+ and MIT and MPL-2.0 and ALT-Public-Domain and W3C and Zlib and ISC and FTL and RSA-MD" | ||||
| LABEL org.opencontainers.image.vendor="ALT Linux Team" | ||||
|  | ||||
| {{ install_packages( | ||||
|     "java-21-openjdk", | ||||
|     "java-21-openjdk-devel" | ||||
| ) }} | ||||
| @@ -1 +0,0 @@ | ||||
| javac --version && java --version | ||||
| @@ -1,14 +0,0 @@ | ||||
| FROM {{ registry }}{{ organization }}/base:{{ branch }} | ||||
|  | ||||
| MAINTAINER alt-cloud | ||||
|  | ||||
| LABEL org.opencontainers.image.title="php" | ||||
| LABEL org.opencontainers.image.description="The PHP language environment for development" | ||||
| LABEL org.opencontainers.image.source="https://github.com/php/php-src" | ||||
| LABEL org.opencontainers.image.licenses="PHP-3.01" | ||||
| LABEL org.opencontainers.image.vendor="ALT Linux Team" | ||||
|  | ||||
| {{ install_packages( | ||||
| "php8.2", | ||||
| "php8.2-xdebug", | ||||
| ) }} | ||||
| @@ -1 +0,0 @@ | ||||
| php --version | ||||
| @@ -1,20 +0,0 @@ | ||||
| FROM {{ registry }}{{ organization }}/base:{{ branch }} | ||||
|  | ||||
| MAINTAINER alt-cloud | ||||
|   | ||||
| LABEL org.opencontainers.image.title="postgresql16" | ||||
| LABEL org.opencontainers.image.description="PostgreSQL rograms and libraries" | ||||
| LABEL org.opencontainers.image.source="https://github.com/postgres/postgres" | ||||
| LABEL org.opencontainers.image.licenses="PostgreSQL" | ||||
| LABEL org.opencontainers.image.vendor="ALT Linux Team" | ||||
|                                  | ||||
| {{ install_packages("postgresql16","postgresql16-server") }} | ||||
|  | ||||
| RUN usermod -a -G postgres postgres | ||||
| RUN chown -R postgres:postgres /var/lib/pgsql | ||||
|  | ||||
| USER postgres | ||||
| WORKDIR /var/lib/pgsql | ||||
| EXPOSE 5432 | ||||
| VOLUME [ "/var/lib/pgsql/data" ] | ||||
|  | ||||
| @@ -1,16 +0,0 @@ | ||||
| dockerfiles-alt-postgresql | ||||
| ========================== | ||||
|  | ||||
| ALT dockerfile for postgresql. | ||||
|  | ||||
| Copy Dockerfile somewhere and build the image: | ||||
| `$ docker build --rm -t <username>/postgresql .` | ||||
|  | ||||
| And launch the rabbitmq-server container: | ||||
| `docker run -d -p 5432:5432 --name="postgresql" -v pgsql-data:/var/lib/pgsql/data IMAGENAME` | ||||
|  | ||||
| First steps to start service and create db: | ||||
| `/usr/bin/initdb /var/lib/pgsql/data` | ||||
| `/usr/bin/pg_ctl -D /var/lib/pgsql/data -l logfile start` | ||||
| `/usr/bin/createdb mydb` | ||||
| `psql mydb` | ||||
| @@ -1 +0,0 @@ | ||||
| pg_ctl --version | ||||
| @@ -1,20 +0,0 @@ | ||||
| FROM {{ registry }}{{ alt_image }}:{{ branch }} | ||||
|  | ||||
| MAINTAINER alt-cloud | ||||
|  | ||||
| LABEL org.opencontainers.image.title="alertmanager" | ||||
| LABEL org.opencontainers.image.description="The Alertmanager handles alerts sent by client applications" | ||||
| LABEL org.opencontainers.image.source="https://github.com/prometheus/alertmanager" | ||||
| LABEL org.opencontainers.image.licenses="Apache-2.0" | ||||
| LABEL org.opencontainers.image.vendor="ALT Linux Team" | ||||
|  | ||||
| {{ install_packages("prometheus-alertmanager") }} | ||||
|  | ||||
| WORKDIR /var/lib/prometheus/alertmanager | ||||
| RUN useradd -r -u 10001 alertmanager | ||||
| RUN usermod -a -G prometheus alertmanager | ||||
| USER alertmanager | ||||
| EXPOSE     9093 | ||||
| VOLUME     [ "/var/lib/prometheus/alertmanager" ] | ||||
| ENTRYPOINT [ "/usr/bin/prometheus/alertmanager" ] | ||||
| CMD [ "--config.file=/etc/prometheus/alertmanager.yml" ] | ||||
| @@ -1,11 +0,0 @@ | ||||
| # Prometheus alertmanager image | ||||
|  | ||||
| Command for run: | ||||
| ``` | ||||
| docker run -d --name="alertmanager" -p 9093:9093 -v promdata-am:/var/lib/prometheus/alertmanager IMAGENAME | ||||
| ``` | ||||
|  | ||||
| *If you want to be able to view services on localhost, instead of -p, specify the flag: | ||||
| ``` | ||||
| --network="host" | ||||
| ``` | ||||
| @@ -1 +0,0 @@ | ||||
| alertmanager --version | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user