1- # .github/workflows/build-ee-latest .yml
2- name : Build and Push stable versioned Multi-Arch Execution Environment
1+ # .github/workflows/build-ee-stable .yml
2+ name : Build and Push stable Multi-Arch Execution Environment
33
44on :
5+ # push:
6+ # branches: [ "main" ]
57 workflow_dispatch :
68
79env :
810 REGISTRY : ghcr.io
9- IMAGE_NAME : ${{ github.repository_owner }}/sap-ee-stable
10-
11+ IMAGE_NAME : ${{ github.repository_owner }}/sap-ee
12+ ANSIBLER_BUILDER_CONFIG : execution-environment-stable.yml
1113jobs :
14+ generate-tag :
15+ runs-on : ubuntu-latest
16+ outputs :
17+ image_tag : ${{ steps.date.outputs.tag}}
18+ steps :
19+ - name : Get current date for image tag
20+ id : date
21+ run : echo "tag=$(date +'stable-%y%m%d')" >> $GITHUB_OUTPUT
1222 build :
1323 runs-on : ubuntu-latest
24+ needs : generate-tag
1425 permissions :
15- contents : write # for writing git-tags
16- packages : write # for pushing to registry
26+ contents : read
27+ packages : write
1728 strategy :
1829 fail-fast : false
1930 # Matrix-Strategie, um Builds parallel auszuführen, falls Runner verfügbar sind.
@@ -22,13 +33,11 @@ jobs:
2233 platform :
2334 - amd64
2435 - arm64
25- - ppc64le
36+ # - ppc64le
2637 steps :
38+ # Checkout repo
2739 - name : Checkout repository
2840 uses : actions/checkout@v4
29- with :
30- # Notwendig, um alle bisherigen Tags abzurufen
31- fetch-depth : 0
3241
3342 # Dieser Schritt ist entscheidend: Er konfiguriert QEMU und binfmt_misc auf dem Runner.
3443 - name : Set up QEMU
@@ -48,23 +57,23 @@ jobs:
4857 - name : Create build context
4958 run : |
5059 pip install ansible-builder
51- ansible-builder create -v 3 -f execution-environment-stable.yml
60+ ansible-builder create -v 3 -f ${{ env.ANSIBLER_BUILDER_CONFIG }}
5261
5362 # Schritt 2: Image für die jeweilige Plattform bauen und pushen
5463 # Das Image wird direkt mit einem architektur-spezifischen Tag gepusht.
5564 - name : Build and push platform-specific image
5665 run : |
5766 podman build \
5867 --platform=linux/${{ matrix.platform }} \
59- --tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ matrix.platform }} \
68+ --tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.generate-tag.outputs.image_tag }}_${{ matrix.platform }} \
6069 --layers=false \
6170 -f context/Containerfile context
62- podman push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ matrix.platform }}
71+ podman push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.generate-tag.outputs.image_tag }}_${{ matrix.platform }}
6372
6473 # Ein separater Job, der nach Abschluss aller plattform-spezifischen Builds läuft.
6574 create-manifest :
6675 runs-on : ubuntu-latest
67- needs : build # Stellt sicher, dass dieser Job erst nach dem 'build'-Job startet
76+ needs : [ generate-tag, build ] # Stellt sicher, dass dieser Job erst nach dem 'build'-Job startet und den output von generate-tag hat
6877 steps :
6978 - name : Log in to the Container Registry
7079 uses : docker/login-action@v3
7685 # Erstellt die Manifest-Liste und fügt die zuvor gepushten Images hinzu.
7786 - name : Create and push manifest list
7887 run : |
79- podman manifest create ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
80- podman manifest add ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest docker://${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:amd64
81- podman manifest add ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest docker://${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:arm64
82- podman manifest add ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest docker://${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:ppc64le
83- podman manifest push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
88+ podman manifest create ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.generate-tag.outputs.image_tag }}
89+ podman manifest add ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.generate-tag.outputs.image_tag }} docker://${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.generate-tag.outputs.image_tag }}_amd64
90+ podman manifest add ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.generate-tag.outputs.image_tag }} docker://${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.generate-tag.outputs.image_tag }}_arm64
91+ # podman manifest add ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.generate-tag.outputs.image_tag }} docker://${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.generate-tag.outputs.image_tag }}_ppc64le
92+ podman manifest push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.generate-tag.outputs.image_tag }}
93+ podman tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.generate-tag.outputs.image_tag }} ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:stable
94+ podman manifest push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:stable
0 commit comments