intra_monitor/.woodpecker.yml
dv 8cb0c58004
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
кодекс вайб деплой
2026-04-15 09:53:15 +03:00

93 lines
2.6 KiB
YAML

# Woodpecker CI/CD
#
# Required secrets:
# forgejo_host - registry host (example: git.example.com)
# forgejo_image - full image path (example: git.example.com/user/intradesk-monitor)
# forgejo_username - registry username
# forgejo_token - registry token with package:write
steps:
# Build and push on main branch updates.
- name: docker-build
image: woodpeckerci/plugin-docker-buildx
settings:
registry:
from_secret: forgejo_host
repo:
from_secret: forgejo_image
username:
from_secret: forgejo_username
password:
from_secret: forgejo_token
tags:
- latest
- "sha-${CI_COMMIT_SHA}"
cache_from:
from_secret: forgejo_image
rewrite_timestamp: false
build_args:
- "GIT_COMMIT=${CI_COMMIT_SHA}"
- "BUILDKIT_INLINE_CACHE=1"
when:
- event: push
branch: main
# Build and push on Git tag (release) events.
- name: docker-build-tag
image: woodpeckerci/plugin-docker-buildx
settings:
registry:
from_secret: forgejo_host
repo:
from_secret: forgejo_image
username:
from_secret: forgejo_username
password:
from_secret: forgejo_token
tags:
- "${CI_COMMIT_TAG}"
- latest
- "sha-${CI_COMMIT_SHA}"
cache_from:
from_secret: forgejo_image
rewrite_timestamp: false
build_args:
- "GIT_COMMIT=${CI_COMMIT_SHA}"
- "BUILDKIT_INLINE_CACHE=1"
when:
- event: tag
# Deploy for both push(main) and tag events.
- name: deploy
image: docker:27-cli
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /opt/intra_monitor:/deploy
commands:
- |
set -e
cd /deploy
test -f .env || (echo "Missing /opt/intra_monitor/.env on deploy host" && exit 1)
CONTAINER=$(docker compose ps -q intradesk-monitor 2>/dev/null | head -1)
if [ -n "$CONTAINER" ]; then
OLD_IMAGE=$(docker inspect --format='{{.Image}}' "$CONTAINER")
printf '%s' "$OLD_IMAGE" > .previous_image
echo "Snapshot for rollback: $OLD_IMAGE"
fi
if docker ps -a --format '{{.Names}}' | grep -Eq '^intradesk-monitor$'; then
docker rm -f intradesk-monitor || true
fi
docker compose -p intradesk-monitor pull intradesk-monitor
docker compose -p intradesk-monitor up -d --remove-orphans
echo "Deployed commit: ${CI_COMMIT_SHA} tag: ${CI_COMMIT_TAG}"
labels:
role: work_woodpecker
when:
- event: push
branch: main
- event: tag