forked from itchy/Dialyse-Webseite
Compare commits
6
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4526a4f751 | ||
|
|
1448f058d8 | ||
|
|
0141fa752a | ||
|
|
2ba30e2d46 | ||
|
|
dba705f390 | ||
|
|
ab589c23fd |
No files matched your search
@@ -19,40 +19,94 @@ jobs:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Log in to Gitea Container Registry
|
||||
- name: Ensure Container Build Tools (Docker CLI / Buildah)
|
||||
run: |
|
||||
if ! command -v docker >/dev/null 2>&1; then
|
||||
echo "Docker CLI not found in runner image; installing static Docker CLI..."
|
||||
curl -fsSL https://download.docker.com/linux/static/stable/x86_64/docker-27.3.1.tgz | tar xz -C /tmp
|
||||
mv /tmp/docker/docker /usr/local/bin/docker
|
||||
chmod +x /usr/local/bin/docker
|
||||
rm -rf /tmp/docker
|
||||
fi
|
||||
docker --version
|
||||
|
||||
- name: Build, Validate, and Push Image to Gitea Package Registry
|
||||
env:
|
||||
REGISTRY_USER: ${{ gitea.actor }}
|
||||
REGISTRY_TOKEN: ${{ secrets.GITEATOKEN }}
|
||||
SERVER_URL: ${{ gitea.server_url }}
|
||||
run: |
|
||||
REGISTRY_HOST=$(echo "${SERVER_URL}" | sed -E 's#^https?://##; s#/$##')
|
||||
echo "Logging in to ${REGISTRY_HOST} as ${REGISTRY_USER}..."
|
||||
echo "${REGISTRY_TOKEN}" | docker login "${REGISTRY_HOST}" -u "${REGISTRY_USER}" --password-stdin
|
||||
|
||||
- name: Build, Validate, and Push Docker Image
|
||||
env:
|
||||
SERVER_URL: ${{ gitea.server_url }}
|
||||
REPO_NAME: ${{ gitea.repository }}
|
||||
REF_NAME: ${{ gitea.ref_name }}
|
||||
SHA: ${{ gitea.sha }}
|
||||
run: |
|
||||
REGISTRY_HOST=$(echo "${SERVER_URL}" | sed -E 's#^https?://##; s#/$##')
|
||||
IS_HTTP=false
|
||||
if echo "${SERVER_URL}" | grep -qE '^http://'; then
|
||||
IS_HTTP=true
|
||||
fi
|
||||
|
||||
IMAGE_PATH=$(echo "${REPO_NAME}" | tr '[:upper:]' '[:lower:]')
|
||||
FULL_IMAGE="${REGISTRY_HOST}/${IMAGE_PATH}"
|
||||
SHORT_SHA=$(echo "${SHA}" | cut -c1-7)
|
||||
SAFE_REF=$(echo "${REF_NAME}" | sed -E 's#[^a-zA-Z0-9_.-]#-#g')
|
||||
|
||||
echo "Building image ${FULL_IMAGE}..."
|
||||
docker build --pull \
|
||||
-t "${FULL_IMAGE}:${SAFE_REF}" \
|
||||
-t "${FULL_IMAGE}:${SHORT_SHA}" \
|
||||
-t "${FULL_IMAGE}:latest" \
|
||||
.
|
||||
if docker info >/dev/null 2>&1; then
|
||||
echo "Using Docker daemon via mounted socket..."
|
||||
docker build --pull \
|
||||
-t "${FULL_IMAGE}:${SAFE_REF}" \
|
||||
-t "${FULL_IMAGE}:${SHORT_SHA}" \
|
||||
-t "${FULL_IMAGE}:latest" \
|
||||
.
|
||||
|
||||
echo "Validating PHP syntax inside built container..."
|
||||
docker run --rm "${FULL_IMAGE}:${SHORT_SHA}" sh -c 'find /var/www/html -name "*.php" -exec php -l {} +'
|
||||
echo "Validating PHP syntax inside built container..."
|
||||
docker run --rm "${FULL_IMAGE}:${SHORT_SHA}" sh -c 'find /var/www/html -name "*.php" -exec php -l {} +'
|
||||
|
||||
echo "Pushing tags to Gitea Package Registry..."
|
||||
docker push "${FULL_IMAGE}:${SAFE_REF}"
|
||||
docker push "${FULL_IMAGE}:${SHORT_SHA}"
|
||||
docker push "${FULL_IMAGE}:latest"
|
||||
echo "Attempting Docker login to ${REGISTRY_HOST}..."
|
||||
if echo "${REGISTRY_TOKEN}" | docker login "${SERVER_URL}" -u "${REGISTRY_USER}" --password-stdin 2>/dev/null \
|
||||
|| echo "${REGISTRY_TOKEN}" | docker login "${REGISTRY_HOST}" -u "${REGISTRY_USER}" --password-stdin 2>/dev/null; then
|
||||
echo "Pushing tags via Docker CLI..."
|
||||
docker push "${FULL_IMAGE}:${SAFE_REF}"
|
||||
docker push "${FULL_IMAGE}:${SHORT_SHA}"
|
||||
docker push "${FULL_IMAGE}:latest"
|
||||
else
|
||||
echo "Docker daemon rejected login (plain HTTP registry ${SERVER_URL} not in host insecure-registries)."
|
||||
echo "Exporting built image with Docker CLI and pushing via skopeo..."
|
||||
if ! command -v skopeo >/dev/null 2>&1; then
|
||||
apt-get update && apt-get install -y skopeo
|
||||
fi
|
||||
TLS_FLAG="--dest-tls-verify=true"
|
||||
if [ "${IS_HTTP}" = "true" ]; then
|
||||
TLS_FLAG="--dest-tls-verify=false"
|
||||
fi
|
||||
docker save "${FULL_IMAGE}:${SHORT_SHA}" -o /tmp/image.tar
|
||||
for TAG in "${SAFE_REF}" "${SHORT_SHA}" "latest"; do
|
||||
echo "Pushing ${FULL_IMAGE}:${TAG}..."
|
||||
skopeo copy ${TLS_FLAG} \
|
||||
--dest-creds "${REGISTRY_USER}:${REGISTRY_TOKEN}" \
|
||||
"docker-archive:/tmp/image.tar" \
|
||||
"docker://${FULL_IMAGE}:${TAG}"
|
||||
done
|
||||
rm -f /tmp/image.tar
|
||||
fi
|
||||
else
|
||||
echo "Docker socket (/var/run/docker.sock) is not mounted in this runner container."
|
||||
echo "Falling back to daemonless Buildah..."
|
||||
if ! command -v buildah >/dev/null 2>&1; then
|
||||
apt-get update && apt-get install -y buildah
|
||||
fi
|
||||
TLS_FLAG="--tls-verify=true"
|
||||
if [ "${IS_HTTP}" = "true" ]; then
|
||||
TLS_FLAG="--tls-verify=false"
|
||||
fi
|
||||
buildah bud --storage-driver=vfs --isolation=chroot --pull \
|
||||
-t "${FULL_IMAGE}:${SAFE_REF}" \
|
||||
-t "${FULL_IMAGE}:${SHORT_SHA}" \
|
||||
-t "${FULL_IMAGE}:latest" \
|
||||
.
|
||||
for TAG in "${SAFE_REF}" "${SHORT_SHA}" "latest"; do
|
||||
buildah push --storage-driver=vfs ${TLS_FLAG} \
|
||||
--creds "${REGISTRY_USER}:${REGISTRY_TOKEN}" \
|
||||
"${FULL_IMAGE}:${TAG}" \
|
||||
"docker://${FULL_IMAGE}:${TAG}"
|
||||
done
|
||||
fi
|
||||
@@ -1610,6 +1610,13 @@ textarea.form-control {
|
||||
gap: 0.65rem;
|
||||
margin-bottom: 0.85rem;
|
||||
line-height: 1.5;
|
||||
color: #cbd5e1;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a.footer-contact-item:hover {
|
||||
color: #ffffff;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.footer-contact-item svg {
|
||||
|
||||
+8
-8
@@ -399,14 +399,14 @@ if ($canonicalUrl && $currentAction !== 'main') {
|
||||
Individuelle nephrologische Betreuung und ganzjährige Feriendialysen mit moderner Medizintechnik.
|
||||
<?php endif; ?>
|
||||
</p>
|
||||
<div class="footer-contact-item">
|
||||
<a href="https://www.google.com/maps/place/Dialysezentrum+Berlin-Mahlsdorf/@52.5078291,13.6092903,17z/data=!3m1!4b1!4m6!3m5!1s0x47a84991f9c57f7f:0xad4486f559442067!8m2!3d52.5078291!4d13.6092903!16s%2Fg%2F1tdqghgn" target="_blank" rel="noopener noreferrer" class="footer-contact-item" title="<?=$isEn ? 'Open Main Dialysis Center Berlin-Mahlsdorf in Google Maps' : 'Zentrumsdialyse Berlin-Mahlsdorf in Google Maps öffnen'?>" aria-label="<?=$isEn ? 'Main Center: Thorner Straße 1, 12623 Berlin (open in Google Maps)' : 'Zentrumsdialyse: Thorner Straße 1, 12623 Berlin (in Google Maps öffnen)'?>">
|
||||
<svg aria-hidden="true" focusable="false" viewBox="0 0 24 24"><path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5a2.5 2.5 0 0 1 0-5 2.5 2.5 0 0 1 0 5z"/></svg>
|
||||
<span><strong><?=$isEn ? 'Main Center:' : 'Zentrumsdialyse:'?></strong> Thorner Straße 1, 12623 Berlin</span>
|
||||
</div>
|
||||
<div class="footer-contact-item">
|
||||
</a>
|
||||
<a href="https://www.google.com/maps/place/Dialysezentrum+Berlin-Mahlsdorf+LC/@52.5428128,13.5716785,17z/data=!3m1!4b1!4m6!3m5!1s0x47a84991f9d5111b:0xda0b4785760166c5!8m2!3d52.5428128!4d13.5716785!16s%2Fg%2F1ts_5mmj" target="_blank" rel="noopener noreferrer" class="footer-contact-item" title="<?=$isEn ? 'Open Satellite Dialysis Marzahn in Google Maps' : 'Satellitendialyse Marzahn in Google Maps öffnen'?>" aria-label="<?=$isEn ? 'Satellite Unit: Blumberger Damm 130, 12685 Berlin (open in Google Maps)' : 'Satellitendialyse: Blumberger Damm 130, 12685 Berlin (in Google Maps öffnen)'?>">
|
||||
<svg aria-hidden="true" focusable="false" viewBox="0 0 24 24"><path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5a2.5 2.5 0 0 1 0-5 2.5 2.5 0 0 1 0 5z"/></svg>
|
||||
<span><strong><?=$isEn ? 'Satellite Unit:' : 'Satellitendialyse:'?></strong> Blumberger Damm 130, 12685 Berlin</span>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<!-- Col 2: Navigation Links -->
|
||||
@@ -426,14 +426,14 @@ if ($canonicalUrl && $currentAction !== 'main') {
|
||||
<!-- Col 3: Contact & Opening info -->
|
||||
<div>
|
||||
<div class="footer-col-title"><?=$isEn ? 'Contact & Availability' : 'Kontakt & Erreichbarkeit'?></div>
|
||||
<div class="footer-contact-item">
|
||||
<a href="tel:0305662484" class="footer-contact-item" title="<?=$isEn ? 'Phone Dialysis' : 'Telefon Dialyse'?>">
|
||||
<svg aria-hidden="true" focusable="false" viewBox="0 0 24 24"><path d="M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z"/></svg>
|
||||
<span><?=$isEn ? 'Dialysis:' : 'Dialyse:'?> <strong>030 / 566 24 84</strong></span>
|
||||
</div>
|
||||
<div class="footer-contact-item">
|
||||
</a>
|
||||
<a href="tel:0305662539" class="footer-contact-item" title="<?=$isEn ? 'Phone Outpatient Clinic' : 'Telefon Ambulanz'?>">
|
||||
<svg aria-hidden="true" focusable="false" viewBox="0 0 24 24"><path d="M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z"/></svg>
|
||||
<span><?=$isEn ? 'Outpatient Clinic:' : 'Ambulanz:'?> <strong>030 / 566 25 39</strong></span>
|
||||
</div>
|
||||
</a>
|
||||
<div class="footer-contact-item">
|
||||
<svg aria-hidden="true" focusable="false" viewBox="0 0 24 24"><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"/></svg>
|
||||
<span><?=$isEn ? 'Email:' : 'E-Mail:'?> <a href="javascript:void(0);" class="mail-obf" data-usr="kontakt" data-dom="dialyse-berlin" data-tld="net" style="color: #cbd5e1; font-weight:600;"><span class="mail-val c-rev">net.nilreb-esylaid@tkatnok</span></a></span>
|
||||
|
||||
Reference in new issue
Block a user