Compare commits
46 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cdfa02214a | |||
| fdc6c86ee6 | |||
| 4caea581f0 | |||
| 5e716e2635 | |||
| 24db920e7d | |||
| c61da8358f | |||
| 87c53f01a7 | |||
| 0c710599c6 | |||
| 6c05d551de | |||
| 9cf3393cd2 | |||
| 4f15a436ba | |||
| 1bd63af802 | |||
| 4b5b07a93b | |||
| 86af7cffd2 | |||
| 79fdb93305 | |||
| 9ad38d941b | |||
| 907063577e | |||
| 18d29e6836 | |||
| 7bce234b28 | |||
| 51349ef93e | |||
| 62130d6e57 | |||
| dbaf5580a3 | |||
| 1058b03863 | |||
| 8b6b167113 | |||
| 13d5fc7785 | |||
| 8e07fd6b49 | |||
| 76ff81d716 | |||
| 3dd74cdda9 | |||
| 86e7bb52e3 | |||
| 7017f32002 | |||
| 156199f751 | |||
| 292e79392c | |||
| 1dd1efe33d | |||
| c60cb41bd8 | |||
| 9c56e08f28 | |||
| 6c44d0cc13 | |||
| 8f8d6b1623 | |||
| 1b1e1f86cf | |||
| 27ddfa3896 | |||
| 6511522dcf | |||
| dbe934a3bc | |||
| 65fc306b70 | |||
| e8db2ec834 | |||
| 7bc6c7ed6c | |||
| 34c167a4cd | |||
| a2032e1f46 |
@@ -64,21 +64,30 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Detect version
|
- name: Detect version
|
||||||
|
id: detect_version
|
||||||
run: |
|
run: |
|
||||||
|
echo "== Detect version =="
|
||||||
|
# Prüfen, ob wir auf einem Tag oder main-Branch sind
|
||||||
if [ "$GITHUB_REF_TYPE" = "tag" ]; then
|
if [ "$GITHUB_REF_TYPE" = "tag" ]; then
|
||||||
VERSION="$GITHUB_REF_NAME"
|
VERSION="$GITHUB_REF_NAME"
|
||||||
CLEAN_VERSION="${VERSION#v}"
|
CLEAN_VERSION="${VERSION#v}" # entfernt führendes 'v'
|
||||||
IS_TAG=true
|
IS_TAG=true
|
||||||
else
|
else
|
||||||
VERSION="edge"
|
VERSION="main"
|
||||||
CLEAN_VERSION="edge"
|
CLEAN_VERSION="main"
|
||||||
IS_TAG=false
|
IS_TAG=false
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo "VERSION=$VERSION"
|
||||||
|
echo "CLEAN_VERSION=$CLEAN_VERSION"
|
||||||
|
echo "IS_TAG=$IS_TAG"
|
||||||
|
|
||||||
|
# Env für alle weiteren Steps exportieren
|
||||||
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
||||||
echo "CLEAN_VERSION=$CLEAN_VERSION" >> $GITHUB_ENV
|
echo "CLEAN_VERSION=$CLEAN_VERSION" >> $GITHUB_ENV
|
||||||
echo "IS_TAG=$IS_TAG" >> $GITHUB_ENV
|
echo "IS_TAG=$IS_TAG" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
|
||||||
- name: Set dynamic variables and check Dockerfiles
|
- name: Set dynamic variables and check Dockerfiles
|
||||||
id: check_files
|
id: check_files
|
||||||
run: |
|
run: |
|
||||||
@@ -120,20 +129,13 @@ jobs:
|
|||||||
|
|
||||||
- name: Compute Docker tags
|
- name: Compute Docker tags
|
||||||
run: |
|
run: |
|
||||||
TAGS="${IMAGE_NAME}:${VERSION}"
|
|
||||||
|
|
||||||
if [[ "$IS_TAG" == "true" ]]; then
|
if [[ "$IS_TAG" == "true" ]]; then
|
||||||
MAJOR=$(echo $CLEAN_VERSION | cut -d. -f1)
|
DOCKER_TAGS="${IMAGE_NAME}:${VERSION},${IMAGE_NAME}:latest"
|
||||||
MINOR=$(echo $CLEAN_VERSION | cut -d. -f1,2)
|
|
||||||
|
|
||||||
TAGS="$TAGS,${IMAGE_NAME}:${MINOR}"
|
|
||||||
TAGS="$TAGS,${IMAGE_NAME}:${MAJOR}"
|
|
||||||
TAGS="$TAGS,${IMAGE_NAME}:latest"
|
|
||||||
else
|
else
|
||||||
TAGS="$TAGS,${IMAGE_NAME}:main"
|
DOCKER_TAGS="${IMAGE_NAME}:main"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "DOCKER_TAGS=$TAGS" >> $GITEA_ENV
|
echo "DOCKER_TAGS=$DOCKER_TAGS" >> $GITEA_ENV
|
||||||
|
|
||||||
- name: Load versions.env safely
|
- name: Load versions.env safely
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -153,7 +155,6 @@ jobs:
|
|||||||
parse_env
|
parse_env
|
||||||
|
|
||||||
# Fixen von Workflow-Variablen
|
# Fixen von Workflow-Variablen
|
||||||
VERSION="$GITHUB_REF_NAME"
|
|
||||||
CLEAN_VERSION="${VERSION#v}"
|
CLEAN_VERSION="${VERSION#v}"
|
||||||
BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ)
|
BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ)
|
||||||
|
|
||||||
@@ -186,7 +187,10 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# amd64 build
|
# Cache-Definitionen für bessere Übersicht
|
||||||
|
CACHE_REF="${REGISTRY_HOST}/${IMAGE_BASE}-cache"
|
||||||
|
|
||||||
|
# amd64 build mit Registry-Cache (mode=min für weniger Fragmente)
|
||||||
docker buildx build \
|
docker buildx build \
|
||||||
--platform linux/amd64 \
|
--platform linux/amd64 \
|
||||||
-f ${AMD64_DOCKERFILE} \
|
-f ${AMD64_DOCKERFILE} \
|
||||||
@@ -194,10 +198,12 @@ jobs:
|
|||||||
--build-arg APP_VERSION="$APP_VERSION" \
|
--build-arg APP_VERSION="$APP_VERSION" \
|
||||||
--label org.opencontainers.image.version="$APP_VERSION" \
|
--label org.opencontainers.image.version="$APP_VERSION" \
|
||||||
--label org.opencontainers.image.created="$BUILD_DATE" \
|
--label org.opencontainers.image.created="$BUILD_DATE" \
|
||||||
|
--cache-from type=registry,ref=${CACHE_REF}:amd64 \
|
||||||
|
--cache-to type=registry,ref=${CACHE_REF}:amd64,mode=min \
|
||||||
-t ${CACHE_IMAGE_NAME}:${VERSION}-amd64 \
|
-t ${CACHE_IMAGE_NAME}:${VERSION}-amd64 \
|
||||||
--push .
|
--push .
|
||||||
|
|
||||||
# arm64 build
|
# arm64 build mit Registry-Cache (mode=min für weniger Fragmente)
|
||||||
docker buildx build \
|
docker buildx build \
|
||||||
--platform linux/arm64 \
|
--platform linux/arm64 \
|
||||||
-f ${ARM64_DOCKERFILE} \
|
-f ${ARM64_DOCKERFILE} \
|
||||||
@@ -205,18 +211,21 @@ jobs:
|
|||||||
--build-arg APP_VERSION="$APP_VERSION" \
|
--build-arg APP_VERSION="$APP_VERSION" \
|
||||||
--label org.opencontainers.image.version="$APP_VERSION" \
|
--label org.opencontainers.image.version="$APP_VERSION" \
|
||||||
--label org.opencontainers.image.created="$BUILD_DATE" \
|
--label org.opencontainers.image.created="$BUILD_DATE" \
|
||||||
|
--cache-from type=registry,ref=${CACHE_REF}:arm64 \
|
||||||
|
--cache-to type=registry,ref=${CACHE_REF}:arm64,mode=min \
|
||||||
-t ${CACHE_IMAGE_NAME}:${VERSION}-arm64 \
|
-t ${CACHE_IMAGE_NAME}:${VERSION}-arm64 \
|
||||||
--push .
|
--push .
|
||||||
|
|
||||||
docker buildx imagetools create \
|
# Manifest-Erstellung (verbindet die Architekturen zu den finalen Tags)
|
||||||
-t ${IMAGE_NAME}:${VERSION} \
|
for TAG in $(echo $DOCKER_TAGS | tr ',' ' '); do
|
||||||
${CACHE_IMAGE_NAME}:${VERSION}-amd64 \
|
echo "Creating manifest for tag: $TAG"
|
||||||
${CACHE_IMAGE_NAME}:${VERSION}-arm64
|
docker buildx imagetools create -t $TAG \
|
||||||
|
${CACHE_IMAGE_NAME}:${VERSION}-amd64 \
|
||||||
|
${CACHE_IMAGE_NAME}:${VERSION}-arm64
|
||||||
|
done
|
||||||
|
|
||||||
echo "== Multiarch Build Complete =="
|
echo "== Multiarch Build Complete =="
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- name: Install syft
|
- name: Install syft
|
||||||
run: |
|
run: |
|
||||||
curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh \
|
curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh \
|
||||||
@@ -224,23 +233,18 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate SBOM
|
- name: Generate SBOM
|
||||||
run: |
|
run: |
|
||||||
syft ${IMAGE_NAME}:${VERSION} -o spdx-json > sbom.spdx.json
|
# Benutze die Build-Variable DOCKER_TAGS oder IMAGE_NAME + VERSION
|
||||||
|
if [[ "$IS_TAG" == "true" ]]; then
|
||||||
|
TARGET_IMAGE="${IMAGE_NAME}:${VERSION}"
|
||||||
|
else
|
||||||
|
TARGET_IMAGE="${IMAGE_NAME}:main"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Generating SBOM for $TARGET_IMAGE"
|
||||||
|
syft $TARGET_IMAGE -o spdx-json > sbom.spdx.json || true
|
||||||
|
|
||||||
- name: Upload SBOM
|
- name: Upload SBOM
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: sbom
|
name: sbom
|
||||||
path: sbom.spdx.json
|
path: sbom.spdx.json
|
||||||
|
|
||||||
- name: Install cosign
|
|
||||||
run: |
|
|
||||||
curl -sSfL https://github.com/sigstore/cosign/releases/latest/download/cosign-linux-amd64 \
|
|
||||||
-o /usr/local/bin/cosign
|
|
||||||
chmod +x /usr/local/bin/cosign
|
|
||||||
|
|
||||||
- name: Sign image
|
|
||||||
if: env.IS_TAG == 'true'
|
|
||||||
run: |
|
|
||||||
cosign sign --key ${{ secrets.COSIGN_KEY }} ${IMAGE_NAME}:${VERSION}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
name: Promote Edge To Release
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- 'v*'
|
|
||||||
|
|
||||||
env:
|
|
||||||
REGISTRY_HOST: git.pi-farm.de
|
|
||||||
IMAGE_BASE: ${{ gitea.repository }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
promote:
|
|
||||||
runs-on: buildx-multiarch
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Extract version
|
|
||||||
run: |
|
|
||||||
VERSION="${GITHUB_REF_NAME#v}"
|
|
||||||
echo "VERSION=$VERSION" >> $GITEA_ENV
|
|
||||||
echo "IMAGE=${REGISTRY_HOST}/${IMAGE_BASE}" >> $GITEA_ENV
|
|
||||||
|
|
||||||
- name: Login registry
|
|
||||||
run: |
|
|
||||||
echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login \
|
|
||||||
${{ env.REGISTRY_HOST }} -u ${{ secrets.REGISTRY_USER }} --password-stdin
|
|
||||||
|
|
||||||
- name: Promote edge image
|
|
||||||
run: |
|
|
||||||
docker buildx imagetools create \
|
|
||||||
-t ${IMAGE}:v${VERSION} \
|
|
||||||
-t ${IMAGE}:${VERSION%.*} \
|
|
||||||
-t ${IMAGE}:${VERSION%%.*} \
|
|
||||||
-t ${IMAGE}:latest \
|
|
||||||
${IMAGE}:edge
|
|
||||||
335
CHANGELOG.md
335
CHANGELOG.md
@@ -0,0 +1,335 @@
|
|||||||
|
## 1.2.0 - 2026-02-10
|
||||||
|
- changed build workflow
|
||||||
|
## 1.1.0 - 2026-02-10
|
||||||
|
- fix indentation
|
||||||
|
- remove signing in workflow
|
||||||
|
- release: 1.1.0
|
||||||
|
- neuer fix
|
||||||
|
- fix signature-tags
|
||||||
|
- release: 1.2.0
|
||||||
|
- fix signature-tags
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix
|
||||||
|
- fix
|
||||||
|
- fix cosign
|
||||||
|
- new cosign fix
|
||||||
|
- fix cosign
|
||||||
|
- cosign experimental=1
|
||||||
|
- fix cosign sha256-tags
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign error
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix cosign failure
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign key
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix cosign key
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign step
|
||||||
|
- fix again
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing step
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step for version-tags
|
||||||
|
- release: 1.3.0
|
||||||
|
- fix SBOM
|
||||||
|
- siplify workflow
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix release.sh
|
||||||
|
- release: 1.2.0
|
||||||
|
- rebuild release.sh
|
||||||
|
- make release.sh executable
|
||||||
|
- remove Dockerfile.aarch64
|
||||||
|
- fix signing
|
||||||
|
- fix SBOM
|
||||||
|
- reorder Dockerfile
|
||||||
|
- add multi-watch.sh
|
||||||
|
- another fix
|
||||||
|
- rebuild workflow
|
||||||
|
- new fix
|
||||||
|
- fix workflow
|
||||||
|
- fix workflow
|
||||||
|
- fix workflow
|
||||||
|
- set shell to bash in workflow
|
||||||
|
- changed workflow for use build-args from versions.env in buildx builder
|
||||||
|
- changed relevant files for project test2
|
||||||
|
- docs: fix template placeholders [skip ci]
|
||||||
|
- versions.env aktualisiert
|
||||||
|
- Initial commit
|
||||||
|
## 1.1.0 - 2026-02-10
|
||||||
|
- neuer fix
|
||||||
|
- fix signature-tags
|
||||||
|
- release: 1.2.0
|
||||||
|
- fix signature-tags
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix
|
||||||
|
- fix
|
||||||
|
- fix cosign
|
||||||
|
- new cosign fix
|
||||||
|
- fix cosign
|
||||||
|
- cosign experimental=1
|
||||||
|
- fix cosign sha256-tags
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign error
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix cosign failure
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign key
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix cosign key
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign step
|
||||||
|
- fix again
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing step
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step for version-tags
|
||||||
|
- release: 1.3.0
|
||||||
|
- fix SBOM
|
||||||
|
- siplify workflow
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix release.sh
|
||||||
|
- release: 1.2.0
|
||||||
|
- rebuild release.sh
|
||||||
|
## 1.2.0 - 2026-02-10
|
||||||
|
- fix signature-tags
|
||||||
|
## 1.1.0 - 2026-02-10
|
||||||
|
- fix
|
||||||
|
- fix
|
||||||
|
- fix cosign
|
||||||
|
- new cosign fix
|
||||||
|
- fix cosign
|
||||||
|
- cosign experimental=1
|
||||||
|
- fix cosign sha256-tags
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign error
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix cosign failure
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign key
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix cosign key
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign step
|
||||||
|
- fix again
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing step
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step for version-tags
|
||||||
|
- release: 1.3.0
|
||||||
|
- fix SBOM
|
||||||
|
- siplify workflow
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix release.sh
|
||||||
|
- release: 1.2.0
|
||||||
|
- rebuild release.sh
|
||||||
|
## 1.1.0 - 2026-02-09
|
||||||
|
- fix sign error
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix cosign failure
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign key
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix cosign key
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign step
|
||||||
|
- fix again
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing step
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step for version-tags
|
||||||
|
- release: 1.3.0
|
||||||
|
- fix SBOM
|
||||||
|
- siplify workflow
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix release.sh
|
||||||
|
- release: 1.2.0
|
||||||
|
- rebuild release.sh
|
||||||
|
## 1.1.0 - 2026-02-09
|
||||||
|
- fix cosign failure
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign key
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix cosign key
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign step
|
||||||
|
- fix again
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing step
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step for version-tags
|
||||||
|
- release: 1.3.0
|
||||||
|
- fix SBOM
|
||||||
|
- siplify workflow
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix release.sh
|
||||||
|
- release: 1.2.0
|
||||||
|
- rebuild release.sh
|
||||||
|
## 1.1.0 - 2026-02-09
|
||||||
|
- fix sign key
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix cosign key
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign step
|
||||||
|
- fix again
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing step
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step for version-tags
|
||||||
|
- release: 1.3.0
|
||||||
|
- fix SBOM
|
||||||
|
- siplify workflow
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix release.sh
|
||||||
|
- release: 1.2.0
|
||||||
|
- rebuild release.sh
|
||||||
|
## 1.1.0 - 2026-02-09
|
||||||
|
- fix cosign key
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign step
|
||||||
|
- fix again
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing step
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step for version-tags
|
||||||
|
- release: 1.3.0
|
||||||
|
- fix SBOM
|
||||||
|
- siplify workflow
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix release.sh
|
||||||
|
- release: 1.2.0
|
||||||
|
- rebuild release.sh
|
||||||
|
## 1.1.0 - 2026-02-09
|
||||||
|
- fix sign step
|
||||||
|
- fix again
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing step
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step for version-tags
|
||||||
|
- release: 1.3.0
|
||||||
|
- fix SBOM
|
||||||
|
- siplify workflow
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix release.sh
|
||||||
|
- release: 1.2.0
|
||||||
|
- rebuild release.sh
|
||||||
|
## 1.1.0 - 2026-02-09
|
||||||
|
- fix signing step
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step for version-tags
|
||||||
|
- release: 1.3.0
|
||||||
|
- fix SBOM
|
||||||
|
- siplify workflow
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix release.sh
|
||||||
|
- release: 1.2.0
|
||||||
|
- rebuild release.sh
|
||||||
|
## 1.1.0 - 2026-02-09
|
||||||
|
- fix signing
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix signing
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step for version-tags
|
||||||
|
- release: 1.3.0
|
||||||
|
- fix SBOM
|
||||||
|
- siplify workflow
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix release.sh
|
||||||
|
- release: 1.2.0
|
||||||
|
- rebuild release.sh
|
||||||
|
## 1.1.0 - 2026-02-09
|
||||||
|
- fix signing
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step for version-tags
|
||||||
|
- release: 1.3.0
|
||||||
|
- fix SBOM
|
||||||
|
- siplify workflow
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix release.sh
|
||||||
|
- release: 1.2.0
|
||||||
|
- rebuild release.sh
|
||||||
|
## 1.1.0 - 2026-02-09
|
||||||
|
- fix sign-step
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix sign-step for version-tags
|
||||||
|
- release: 1.3.0
|
||||||
|
- fix SBOM
|
||||||
|
- siplify workflow
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix release.sh
|
||||||
|
- release: 1.2.0
|
||||||
|
- rebuild release.sh
|
||||||
|
## 1.1.0 - 2026-02-09
|
||||||
|
- fix sign-step for version-tags
|
||||||
|
- release: 1.3.0
|
||||||
|
- fix SBOM
|
||||||
|
- siplify workflow
|
||||||
|
- release: 1.1.0
|
||||||
|
- fix release.sh
|
||||||
|
- release: 1.2.0
|
||||||
|
- rebuild release.sh
|
||||||
|
## 1.3.0 - 2026-02-09
|
||||||
|
- fix SBOM
|
||||||
|
- siplify workflow
|
||||||
|
## 1.1.0 - 2026-02-09
|
||||||
|
- fix release.sh
|
||||||
|
## 1.2.0 - 2026-02-09
|
||||||
|
- rebuild release.sh
|
||||||
|
|||||||
139
release.sh
139
release.sh
@@ -4,143 +4,84 @@ set -e
|
|||||||
VERSION="$1"
|
VERSION="$1"
|
||||||
|
|
||||||
if [ -z "$VERSION" ]; then
|
if [ -z "$VERSION" ]; then
|
||||||
echo "Usage: ./release.sh <semver>"
|
echo "Usage: ./release.sh <semver>"
|
||||||
echo "Example: ./release.sh 1.4.0"
|
exit 1
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# -----------------------------
|
if ! [[ "$VERSION" =~ ^[0-9]+.[0-9]+.[0-9]+$ ]]; then
|
||||||
# SemVer validation
|
echo "Version must be SemVer: X.Y.Z"
|
||||||
# -----------------------------
|
exit 1
|
||||||
if ! [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
||||||
echo "Version must be SemVer: X.Y.Z"
|
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
TAG="v$VERSION"
|
TAG="v$VERSION"
|
||||||
|
|
||||||
echo "=== Release $TAG ==="
|
echo "=== Release $TAG ==="
|
||||||
|
|
||||||
# -----------------------------
|
sedi() {
|
||||||
# Branch check
|
if sed --version >/dev/null 2>&1; then
|
||||||
# -----------------------------
|
sed -i "$@"
|
||||||
|
else
|
||||||
|
sed -i '' "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
||||||
if [ "$BRANCH" != "main" ]; then
|
[ "$BRANCH" = "main" ] || { echo "Not on main"; exit 1; }
|
||||||
echo "Not on main branch"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# -----------------------------
|
git diff --quiet || { echo "Working tree not clean"; exit 1; }
|
||||||
# Working tree clean?
|
|
||||||
# -----------------------------
|
|
||||||
if ! git diff --quiet; then
|
|
||||||
echo "Working tree not clean — commit first"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# -----------------------------
|
|
||||||
# Sync with remote
|
|
||||||
# -----------------------------
|
|
||||||
git fetch origin
|
git fetch origin
|
||||||
|
|
||||||
LOCAL=$(git rev-parse main)
|
LOCAL=$(git rev-parse main)
|
||||||
REMOTE=$(git rev-parse origin/main)
|
REMOTE=$(git rev-parse origin/main)
|
||||||
|
|
||||||
if [ "$LOCAL" != "$REMOTE" ]; then
|
[ "$LOCAL" = "$REMOTE" ] || { echo "main not in sync"; exit 1; }
|
||||||
echo "Local main not in sync with origin/main"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# -----------------------------
|
git rev-parse "$TAG" >/dev/null 2>&1 && { echo "Tag exists locally"; exit 1; }
|
||||||
# Tag already exists?
|
git ls-remote --tags origin | grep -q "refs/tags/$TAG" && { echo "Tag exists remote"; exit 1; }
|
||||||
# -----------------------------
|
|
||||||
if git rev-parse "$TAG" >/dev/null 2>&1; then
|
|
||||||
echo "Tag already exists locally"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if git ls-remote --tags origin | grep -q "$TAG"; then
|
[ -f versions.env ] || { echo "versions.env missing"; exit 1; }
|
||||||
echo "Tag already exists on remote"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# -----------------------------
|
|
||||||
# Update versions.env
|
|
||||||
# -----------------------------
|
|
||||||
echo "Updating versions.env"
|
echo "Updating versions.env"
|
||||||
|
|
||||||
if grep -q "^APP_VERSION=" versions.env; then
|
if grep -q "^APP_VERSION=" versions.env; then
|
||||||
sed -i "s/^APP_VERSION=.*/APP_VERSION=${VERSION}/" versions.env
|
sedi "s/^APP_VERSION=.*/APP_VERSION=$VERSION/" versions.env
|
||||||
else
|
else
|
||||||
echo "APP_VERSION=${VERSION}" >> versions.env
|
echo "APP_VERSION=$VERSION" >> versions.env
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# -----------------------------
|
|
||||||
# Optional changelog entry
|
|
||||||
# -----------------------------
|
|
||||||
if [ -f CHANGELOG.md ]; then
|
if [ -f CHANGELOG.md ]; then
|
||||||
echo "Updating CHANGELOG.md"
|
echo "Updating CHANGELOG.md"
|
||||||
DATE=$(date +%Y-%m-%d)
|
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || true)
|
||||||
sed -i "1i ## $VERSION - $DATE\n- release\n" CHANGELOG.md
|
|
||||||
git add CHANGELOG.md
|
|
||||||
fi
|
|
||||||
|
|
||||||
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
|
||||||
|
|
||||||
if [ -n "$LAST_TAG" ]; then
|
if [ -n "$LAST_TAG" ]; then
|
||||||
echo "Generating release notes from $LAST_TAG → HEAD"
|
git log $LAST_TAG..HEAD --pretty=format:"- %s" > NOTES.tmp
|
||||||
git log $LAST_TAG..HEAD --pretty=format:"- %s" > RELEASE_NOTES.tmp
|
|
||||||
else
|
else
|
||||||
git log --pretty=format:"- %s" > RELEASE_NOTES.tmp
|
git log --pretty=format:"- %s" > NOTES.tmp
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -e "\n## $VERSION\n" | cat - RELEASE_NOTES.tmp >> CHANGELOG.md
|
DATE=$(date +%Y-%m-%d)
|
||||||
rm RELEASE_NOTES.tmp
|
|
||||||
|
{
|
||||||
|
echo "## $VERSION - $DATE"
|
||||||
|
cat NOTES.tmp
|
||||||
|
echo
|
||||||
|
cat CHANGELOG.md
|
||||||
|
} > CHANGELOG.new
|
||||||
|
|
||||||
|
mv CHANGELOG.new CHANGELOG.md
|
||||||
|
rm NOTES.tmp
|
||||||
|
git add CHANGELOG.md
|
||||||
|
fi
|
||||||
|
|
||||||
# -----------------------------
|
|
||||||
# Commit version bump
|
|
||||||
# -----------------------------
|
|
||||||
git add versions.env
|
git add versions.env
|
||||||
git commit -m "release: $VERSION"
|
git commit -m "release: $VERSION"
|
||||||
|
|
||||||
# -----------------------------
|
|
||||||
# Push main → triggers edge build
|
|
||||||
# -----------------------------
|
|
||||||
git push origin main
|
git push origin main
|
||||||
|
echo "Main pushed → edge build"
|
||||||
|
|
||||||
echo "Main pushed — edge build will run"
|
|
||||||
|
|
||||||
# -----------------------------
|
|
||||||
# Create annotated tag
|
|
||||||
# -----------------------------
|
|
||||||
git tag -a "$TAG" -m "Release $TAG"
|
git tag -a "$TAG" -m "Release $TAG"
|
||||||
|
|
||||||
# -----------------------------
|
|
||||||
# Push tag → triggers release build
|
|
||||||
# -----------------------------
|
|
||||||
git push origin "$TAG"
|
git push origin "$TAG"
|
||||||
|
|
||||||
echo "Tag pushed — release build triggered"
|
echo "Tag pushed → release build"
|
||||||
|
|
||||||
# -----------------------------
|
|
||||||
# Optional: wait for CI success
|
|
||||||
# -----------------------------
|
|
||||||
if [ -n "$GITEA_TOKEN" ]; then
|
|
||||||
echo "Checking CI status..."
|
|
||||||
|
|
||||||
REPO=$(git config --get remote.origin.url | sed 's#.*/##; s/.git$//')
|
|
||||||
OWNER=$(git config --get remote.origin.url | awk -F'[:/]' '{print $(NF-1)}')
|
|
||||||
|
|
||||||
for i in {1..30}; do
|
|
||||||
STATUS=$(curl -s \
|
|
||||||
-H "Authorization: token $GITEA_TOKEN" \
|
|
||||||
"https://git.pi-farm.de/api/v1/repos/$OWNER/$REPO/actions/runs?event=push" \
|
|
||||||
| jq -r '.workflow_runs[0].status')
|
|
||||||
|
|
||||||
echo "CI status: $STATUS"
|
|
||||||
[ "$STATUS" = "success" ] && break
|
|
||||||
sleep 5
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "=== Release complete ==="
|
echo "=== Release complete ==="
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
APP_NAME=test2
|
APP_NAME=test2
|
||||||
APP_VERSION=3.22
|
APP_VERSION=1.2.0
|
||||||
APP_DESCRIPTION=Watchdog for notify on updates on dockerhub, github and other git-sources
|
APP_DESCRIPTION=Watchdog for notify on updates on dockerhub, github and other git-sources
|
||||||
|
|
||||||
BASE_IMAGE=alpine:3.22
|
BASE_IMAGE=alpine:3.22
|
||||||
|
|||||||
Reference in New Issue
Block a user