V3.4
This commit is contained in:
+44
-40
@@ -11,22 +11,23 @@ Verwendung:
|
||||
|
||||
Beispiele:
|
||||
./release.sh 3.3
|
||||
./release.sh v3.3
|
||||
./release.sh V3.3
|
||||
./release.sh 3.3.1
|
||||
|
||||
Ablauf:
|
||||
1. git add -A
|
||||
2. git commit -m "V<version>"
|
||||
3. git push über origin/SSH
|
||||
4. build-and-push-gitea.sh
|
||||
5. Docker-Image mit Versionstag pushen
|
||||
6. denselben Stand zusätzlich als :latest markieren
|
||||
3. git push origin <branch>
|
||||
4. Docker-Build + Push nach Gitea
|
||||
5. Versionstag + latest
|
||||
|
||||
Voraussetzungen:
|
||||
- origin zeigt per SSH auf Gitea, z.B.
|
||||
git@git.d-razz.de:mboehmlaender/fixfin.git
|
||||
- Docker-Registry einmalig für root angemeldet:
|
||||
sudo docker login git.d-razz.de
|
||||
- Git-Push funktioniert über deinen konfigurierten origin-Remote.
|
||||
- Docker kann als aktueller Benutzer ausgeführt werden:
|
||||
docker ps
|
||||
- Einmalig bei der Gitea Registry anmelden:
|
||||
docker login git.d-razz.de -u michael
|
||||
EOF
|
||||
}
|
||||
|
||||
@@ -37,13 +38,12 @@ if [[ -z "${VERSION_RAW}" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# V/v am Anfang entfernen und anschließend einheitlich als Vx.x verwenden.
|
||||
VERSION="${VERSION_RAW#V}"
|
||||
VERSION="${VERSION#v}"
|
||||
|
||||
if [[ ! "${VERSION}" =~ ^[0-9]+\.[0-9]+(\.[0-9]+)?$ ]]; then
|
||||
echo "FEHLER: Ungültige Version '${VERSION_RAW}'."
|
||||
echo "Erwartet z.B. 3.3, V3.3 oder 3.3.1"
|
||||
echo "Erwartet z.B. 3.3, v3.3, V3.3 oder 3.3.1"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -55,6 +55,23 @@ command -v git >/dev/null 2>&1 || {
|
||||
exit 1
|
||||
}
|
||||
|
||||
command -v docker >/dev/null 2>&1 || {
|
||||
echo "FEHLER: docker wurde nicht gefunden."
|
||||
exit 1
|
||||
}
|
||||
|
||||
docker info >/dev/null 2>&1 || {
|
||||
echo "FEHLER: Docker ist für den aktuellen Benutzer nicht erreichbar."
|
||||
echo
|
||||
echo "Teste:"
|
||||
echo " docker ps"
|
||||
echo
|
||||
echo "Falls Permission denied:"
|
||||
echo " sudo usermod -aG docker $USER"
|
||||
echo " newgrp docker"
|
||||
exit 1
|
||||
}
|
||||
|
||||
[[ -x "${BUILD_SCRIPT}" ]] || {
|
||||
echo "FEHLER: ${BUILD_SCRIPT} fehlt oder ist nicht ausführbar."
|
||||
echo "Fix:"
|
||||
@@ -76,30 +93,30 @@ if [[ -z "${REMOTE}" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Registry-Host und owner/repo automatisch aus einem SSH-Remote ableiten.
|
||||
# Unterstützt:
|
||||
# git@host:owner/repo.git
|
||||
# ssh://git@host/owner/repo.git
|
||||
# owner/repo + Registry aus SSH- oder HTTPS-Remote ableiten.
|
||||
# Unterstützt z.B.:
|
||||
# git@git.d-razz.de:michael/fixfin.git
|
||||
# ssh://git@git.d-razz.de/michael/fixfin.git
|
||||
# https://git.d-razz.de/michael/fixfin.git
|
||||
if [[ "${REMOTE}" =~ ^git@([^:]+):(.+)$ ]]; then
|
||||
REGISTRY="${BASH_REMATCH[1]}"
|
||||
IMAGE_PATH="${BASH_REMATCH[2]}"
|
||||
elif [[ "${REMOTE}" =~ ^ssh://git@([^/]+)/(.+)$ ]]; then
|
||||
REGISTRY="${BASH_REMATCH[1]}"
|
||||
IMAGE_PATH="${BASH_REMATCH[2]}"
|
||||
elif [[ "${REMOTE}" =~ ^https?://([^/]+)/(.+)$ ]]; then
|
||||
REGISTRY="${BASH_REMATCH[1]}"
|
||||
IMAGE_PATH="${BASH_REMATCH[2]}"
|
||||
else
|
||||
echo "FEHLER: origin ist kein unterstützter SSH-Remote:"
|
||||
echo "FEHLER: origin konnte nicht ausgewertet werden:"
|
||||
echo " ${REMOTE}"
|
||||
echo
|
||||
echo "Erwartet z.B.:"
|
||||
echo " git@git.d-razz.de:mboehmlaender/fixfin.git"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
IMAGE_PATH="${IMAGE_PATH%.git}"
|
||||
|
||||
# Sicherheitsprüfung
|
||||
if [[ ! "${IMAGE_PATH}" =~ ^[^/]+/[^/]+$ ]]; then
|
||||
echo "FEHLER: owner/repo konnte aus dem Remote nicht sicher ermittelt werden:"
|
||||
echo "FEHLER: owner/repo konnte nicht sicher ermittelt werden:"
|
||||
echo " ${IMAGE_PATH}"
|
||||
exit 1
|
||||
fi
|
||||
@@ -120,10 +137,10 @@ echo "Repository : ${REMOTE}"
|
||||
echo "Branch : ${BRANCH}"
|
||||
echo "Registry : ${REGISTRY}"
|
||||
echo "Image : ${REGISTRY}/${IMAGE_PATH}"
|
||||
echo "Tag : ${IMAGE_TAG} + latest"
|
||||
echo "Tags : ${IMAGE_TAG}, latest"
|
||||
echo
|
||||
|
||||
echo ">>> Prüfe SSH-Zugriff auf origin ..."
|
||||
echo ">>> Prüfe Git-Remote ..."
|
||||
git ls-remote origin HEAD >/dev/null
|
||||
|
||||
echo ">>> Stage Änderungen ..."
|
||||
@@ -139,28 +156,16 @@ fi
|
||||
echo ">>> Commit ${COMMIT_MESSAGE} ..."
|
||||
git commit -m "${COMMIT_MESSAGE}"
|
||||
|
||||
echo ">>> Git Push über SSH ..."
|
||||
echo ">>> Git Push ..."
|
||||
git push origin "${BRANCH}"
|
||||
|
||||
echo
|
||||
echo ">>> Docker Registry Authentifizierung prüfen ..."
|
||||
# sudo wird hier einmal initialisiert. Docker-Registry-Credentials liegen
|
||||
# danach dauerhaft in der Docker-Konfiguration des root-Benutzers, sofern
|
||||
# zuvor 'sudo docker login <registry>' ausgeführt wurde.
|
||||
sudo -v
|
||||
|
||||
echo
|
||||
echo ">>> Build + Push ${IMAGE_TAG} ..."
|
||||
sudo "${BUILD_SCRIPT}" \
|
||||
echo ">>> Docker Build + Push ..."
|
||||
"${BUILD_SCRIPT}" \
|
||||
"${REGISTRY}" \
|
||||
"${IMAGE_PATH}" \
|
||||
"${IMAGE_TAG}"
|
||||
|
||||
echo
|
||||
echo ">>> Markiere denselben Image-Stand zusätzlich als latest ..."
|
||||
sudo docker buildx imagetools create \
|
||||
--tag "${REGISTRY}/${IMAGE_PATH}:latest" \
|
||||
"${REGISTRY}/${IMAGE_PATH}:${IMAGE_TAG}"
|
||||
"${IMAGE_TAG}" \
|
||||
"latest"
|
||||
|
||||
echo
|
||||
echo "============================================================"
|
||||
@@ -173,4 +178,3 @@ echo
|
||||
echo "Docker:"
|
||||
echo " ${REGISTRY}/${IMAGE_PATH}:${IMAGE_TAG}"
|
||||
echo " ${REGISTRY}/${IMAGE_PATH}:latest"
|
||||
echo
|
||||
|
||||
Reference in New Issue
Block a user