diff --git a/.woodpecker.yml b/.woodpecker.yml new file mode 100644 index 0000000..1ba8f9c --- /dev/null +++ b/.woodpecker.yml @@ -0,0 +1,65 @@ +when: + - event: push + branch: main + - event: pull_request + +variables: + - &node_image node:24-slim + - &pnpm_setup | + corepack enable + corepack prepare pnpm@10.23.0 --activate + +steps: + install: + image: *node_image + commands: + - *pnpm_setup + - pnpm install --frozen-lockfile + + build-backend: + image: *node_image + commands: + - *pnpm_setup + - cd backend && NODE_OPTIONS=--max-old-space-size=4096 pnpm build + depends_on: [install] + + build-admin: + image: *node_image + commands: + - *pnpm_setup + - cd apps/admin && pnpm build + depends_on: [install] + + deploy-backend: + image: alpine + secrets: [staging_deploy_key] + commands: + - apk add --no-cache openssh-client + - mkdir -p ~/.ssh + - printf '%s\n' "$STAGING_DEPLOY_KEY" > ~/.ssh/id_ed25519 + - chmod 600 ~/.ssh/id_ed25519 + - ssh-keyscan -H staging.rebreak.org > ~/.ssh/known_hosts 2>/dev/null + - tar czf backend-output.tar.gz -C backend/.output . + - scp -i ~/.ssh/id_ed25519 backend-output.tar.gz root@staging.rebreak.org:/srv/rebreak/backend/.output-incoming.tar.gz + - ssh -i ~/.ssh/id_ed25519 root@staging.rebreak.org 'bash /srv/rebreak/scripts/deploy-from-artifact.sh' + depends_on: [build-backend] + when: + - event: push + branch: main + + deploy-admin: + image: alpine + secrets: [staging_deploy_key] + commands: + - apk add --no-cache openssh-client + - mkdir -p ~/.ssh + - printf '%s\n' "$STAGING_DEPLOY_KEY" > ~/.ssh/id_ed25519 + - chmod 600 ~/.ssh/id_ed25519 + - ssh-keyscan -H admin.staging.rebreak.org > ~/.ssh/known_hosts 2>/dev/null + - tar czf admin-output.tar.gz -C apps/admin/.output . + - scp -i ~/.ssh/id_ed25519 admin-output.tar.gz root@staging.rebreak.org:/srv/rebreak/apps/admin/.output-incoming.tar.gz + - ssh -i ~/.ssh/id_ed25519 root@staging.rebreak.org 'bash /srv/rebreak/scripts/deploy-admin-from-artifact.sh' + depends_on: [build-admin] + when: + - event: push + branch: main