Skip to content

Commit f4835a2

Browse files
authored
Merge pull request #9 from sap-linuxlab/dev
Working latest, stable and weekly workflows. - removed auto trigger
2 parents 8328b7e + 4565ff1 commit f4835a2

File tree

7 files changed

+223
-98
lines changed

7 files changed

+223
-98
lines changed

.github/workflows/build-ee-latest.yml

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,27 @@
22
name: Build and Push latest Multi-Arch Execution Environment
33

44
on:
5-
push:
6-
branches: [ "main" ]
5+
#push:
6+
# branches: [ "main" ]
77
workflow_dispatch:
88

99
env:
1010
REGISTRY: ghcr.io
1111
IMAGE_NAME: ${{ github.repository_owner }}/sap-ee
12+
ANSIBLER_BUILDER_CONFIG: execution-environment.yml
1213

1314
jobs:
15+
generate-tag:
16+
runs-on: ubuntu-latest
17+
outputs:
18+
image_tag: ${{ steps.date.outputs.tag}}
19+
steps:
20+
- name: Get current date for image tag
21+
id: date
22+
run: echo "tag=$(date +'%y%m%d')" >> $GITHUB_OUTPUT
1423
build:
1524
runs-on: ubuntu-latest
25+
needs: generate-tag
1626
permissions:
1727
contents: read
1828
packages: write
@@ -49,23 +59,23 @@ jobs:
4959
- name: Create build context
5060
run: |
5161
pip install ansible-builder
52-
ansible-builder create -v 3
62+
ansible-builder create -v 3 -f ${{ env.ANSIBLER_BUILDER_CONFIG }}
5363
5464
# Schritt 2: Image für die jeweilige Plattform bauen und pushen
5565
# Das Image wird direkt mit einem architektur-spezifischen Tag gepusht.
5666
- name: Build and push platform-specific image
5767
run: |
5868
podman build \
5969
--platform=linux/${{ matrix.platform }} \
60-
--tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ matrix.platform }} \
70+
--tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.generate-tag.outputs.image_tag }}_${{ matrix.platform }} \
6171
--layers=false \
6272
-f context/Containerfile context
63-
podman push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ matrix.platform }}
73+
podman push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.generate-tag.outputs.image_tag }}_${{ matrix.platform }}
6474
6575
# Ein separater Job, der nach Abschluss aller plattform-spezifischen Builds läuft.
6676
create-manifest:
6777
runs-on: ubuntu-latest
68-
needs: build # Stellt sicher, dass dieser Job erst nach dem 'build'-Job startet
78+
needs: [ generate-tag, build ] # Stellt sicher, dass dieser Job erst nach dem 'build'-Job startet
6979
steps:
7080
- name: Log in to the Container Registry
7181
uses: docker/login-action@v3
@@ -77,8 +87,10 @@ jobs:
7787
# Erstellt die Manifest-Liste und fügt die zuvor gepushten Images hinzu.
7888
- name: Create and push manifest list
7989
run: |
80-
podman manifest create ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
81-
podman manifest add ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest docker://${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:amd64
82-
podman manifest add ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest docker://${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:arm64
83-
# podman manifest add ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest docker://${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:ppc64le
84-
podman manifest push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
90+
podman manifest create ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.generate-tag.outputs.image_tag }}
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 }}_amd64
92+
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
93+
# 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
94+
podman manifest push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.generate-tag.outputs.image_tag }}
95+
podman tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.generate-tag.outputs.image_tag }} ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
96+
podman manifest push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,30 @@
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

44
on:
5+
#push:
6+
# branches: [ "main" ]
57
workflow_dispatch:
68

79
env:
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
1113
jobs:
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
@@ -76,8 +85,10 @@ jobs:
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
Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,27 @@
1-
#.github/workflows/build-ee-latest.yml
1+
#.github/workflows/build-ee-weekly.yml
22
name: Build and Push weekly Multi-Arch Execution Environment
33

44
on:
55
workflow_dispatch:
6-
# schedule:
7-
# - cron: '15 3 * * 0' # Runs at 3:15 AM UTC on Sunday
6+
schedule:
7+
- cron: '15 3 * * 0' # Runs at 3:15 AM UTC on Sunday
88

99
env:
1010
REGISTRY: ghcr.io
11-
IMAGE_NAME: ${{ github.repository }}/sap-ee-dev
12-
11+
IMAGE_NAME: ${{ github.repository_owner }}/sap-ee
12+
ANSIBLER_BUILDER_CONFIG: execution-environment-weekly.yml
1313
jobs:
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 +'dev%y%m%d')" >> $GITHUB_OUTPUT
1422
build:
1523
runs-on: ubuntu-latest
24+
needs: generate-tag
1625
permissions:
1726
contents: read
1827
packages: write
@@ -26,11 +35,6 @@ jobs:
2635
- arm64
2736
#- ppc64le
2837
steps:
29-
# get current date and use as tag
30-
- name: Get current date for tagging
31-
id: date
32-
run: echo "DATE_TAG=$(date +'%y%m%d')" >> $GITHUB_ENV
33-
3438
# Checkout repo
3539
- name: Checkout repository
3640
uses: actions/checkout@v4
@@ -53,29 +57,24 @@ jobs:
5357
- name: Create build context
5458
run: |
5559
pip install ansible-builder
56-
ansible-builder create -v 3 -f execution-environment-weekly.yml
60+
ansible-builder create -v 3 -f ${{ env.ANSIBLER_BUILDER_CONFIG }}
5761
5862
# Schritt 2: Image für die jeweilige Plattform bauen und pushen
5963
# Das Image wird direkt mit einem architektur-spezifischen Tag gepusht.
6064
- name: Build and push platform-specific image
6165
run: |
6266
podman build \
6367
--platform=linux/${{ matrix.platform }} \
64-
--tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.DATE_TAG }}_${{ matrix.platform }} \
68+
--tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.generate-tag.outputs.image_tag }}_${{ matrix.platform }} \
6569
--layers=false \
6670
-f context/Containerfile context
67-
podman push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.DATE_TAG }}_${{ matrix.platform }}
71+
podman push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.generate-tag.outputs.image_tag }}_${{ matrix.platform }}
6872
6973
# Ein separater Job, der nach Abschluss aller plattform-spezifischen Builds läuft.
7074
create-manifest:
7175
runs-on: ubuntu-latest
72-
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
7377
steps:
74-
# get current date and use as tag
75-
- name: Get current date for tagging
76-
id: date
77-
run: echo "DATE_TAG=$(date +'%y%m%d')" >> $GITHUB_ENV
78-
7978
- name: Log in to the Container Registry
8079
uses: docker/login-action@v3
8180
with:
@@ -86,8 +85,10 @@ jobs:
8685
# Erstellt die Manifest-Liste und fügt die zuvor gepushten Images hinzu.
8786
- name: Create and push manifest list
8887
run: |
89-
podman manifest create ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.DATE_TAG }}
90-
podman manifest add ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.DATE_TAG }} docker://${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.DATE_TAG }}_amd64
91-
podman manifest add ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.DATE_TAG }} docker://${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.DATE_TAG }}_arm64
92-
podman manifest add ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.DATE_TAG }} docker://${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.DATE_TAG }}_ppc64le
93-
podman manifest push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.DATE_TAG }}
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 }}:latest-dev
94+
podman manifest push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-dev
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
name: Cleanup Old SAP-EE Containers
2+
# currently does not work due to GITHUB TOKEN not support in api.github.com
3+
on:
4+
# Erlaube manuelles Starten über die GitHub UI
5+
workflow_dispatch:
6+
# Führe den Job wöchentlich aus (Sonntags um 3 Uhr morgens)
7+
#schedule:
8+
# - cron: '0 3 * * 0'
9+
10+
jobs:
11+
cleanup:
12+
runs-on: ubuntu-latest
13+
permissions:
14+
contents: read
15+
packages: write
16+
steps:
17+
# Caution may have issues with multiarch images - see https://github.com/snok/container-retention-policy?tab=readme-ov-file#examples
18+
- name: Delete old sap-ee container images
19+
uses: snok/[email protected]
20+
with:
21+
account: ${{ github.actor}}
22+
token: ${{ secrets.GITHUB_TOKEN }}
23+
image-names: sap-ee
24+
image-tags: "dev*"
25+
cut-off: 6w
26+
keep-n-most-recent: 5
27+
dry-run: true

0 commit comments

Comments
 (0)