67 lines
1.7 KiB
YAML
67 lines
1.7 KiB
YAML
kind: pipeline
|
|
type: docker
|
|
name: build-and-deploy
|
|
|
|
workspace:
|
|
base: /woodpecker
|
|
path: src
|
|
|
|
clone:
|
|
depth: 50
|
|
|
|
steps:
|
|
# ── 1. Build & push images ──────────────────────────────
|
|
- name: build-and-push
|
|
image: docker:24.0-cli
|
|
privileged: true
|
|
volumes:
|
|
- name: docker-sock
|
|
path: /var/run/docker.sock
|
|
commands:
|
|
- |
|
|
set -eu
|
|
REG=us-central1-docker.pkg.dev/aptivaai-dev/aptiva-repo
|
|
TAG=$(echo "$CI_COMMIT_SHA" | head -c 8)
|
|
docker buildx create --use --name woodpecker || true
|
|
for svc in server1 server2 server3 nginx; do
|
|
docker buildx build -f Dockerfile.${svc} \
|
|
-t ${REG}/${svc}:${TAG} --push .
|
|
done
|
|
when:
|
|
event: [push, manual]
|
|
branch: [master]
|
|
|
|
# ── 2. Deploy to staging (raw SSH) ──────────────────────
|
|
- name: deploy-staging
|
|
image: alpine:latest
|
|
commands:
|
|
- |
|
|
set -eu
|
|
apk add --no-cache openssh bash
|
|
|
|
mkdir -p ~/.ssh
|
|
echo "$STAGING_KNOWN_HOSTS" > ~/.ssh/known_hosts
|
|
echo "$STAGING_SSH_KEY" > ~/.ssh/id_ed25519
|
|
chmod 600 ~/.ssh/id_ed25519
|
|
|
|
TAG=$(echo "$CI_COMMIT_SHA" | head -c 8)
|
|
ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=yes jcoakley@10.128.0.12 <<EOF
|
|
set -eu
|
|
cd /opt/aptiva-staging-app
|
|
IMG_TAG=$TAG docker compose pull
|
|
IMG_TAG=$TAG docker compose up -d --force-recreate --remove-orphans
|
|
EOF
|
|
when:
|
|
event: [push, manual]
|
|
branch: [master]
|
|
environment:
|
|
STAGING_SSH_KEY:
|
|
from_secret: STAGING_SSH_KEY
|
|
STAGING_KNOWN_HOSTS:
|
|
from_secret: STAGING_KNOWN_HOSTS
|
|
|
|
volumes:
|
|
- name: docker-sock
|
|
host:
|
|
path: /var/run/docker.sock
|