# 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