Files
ever-gauzy/.github/workflows/deploy-do-droplet-pre-demo.yml
T
Ruslan KonviserandClaude Opus 4.8 cbfef991d4 chore(ci): migrate actions to Node 24 runtime + bump Node to 24.17.0 (kill Node 20 deprecation)
GitHub deprecated Node 20 on Actions runners. Bump every action with a node24 release:
checkout v4->v5, github-script v7->v8, cache v4->v5, upload-artifact v3/v4->v7,
docker/login-action v3->v4, build-push-action v6->v7, setup-buildx/setup-qemu v3->v4.
(setup-node@v6 and digitalocean/action-doctl@v2 are already node24.)

Node version -> latest 24.x: setup-node node-version 24.14.0->24.17.0, .nvmrc->24.17.0, Docker
base node:24.14.0-alpine3.23 -> 24.16.0-alpine3.23 (24.17.0's alpine image isn't on Docker Hub
yet; tracks up when published).

No upstream node24 release yet (still warn): ilammy/msvc-dev-cmd@v1 (Windows MSVC, 30x) and
samuelmeuli/action-snapcraft@v2 (node16). Desktop linux/win images use node:buster-slim (EOL
Debian) — left untouched to not disturb the just-fixed desktop builds.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 09:55:49 +02:00

97 lines
4.3 KiB
YAML

name: Deploy to DigitalOcean Droplet Demo Pre
on:
push:
branches:
- droplets
jobs:
deploy:
runs-on: ubicloud-standard-4
timeout-minutes: 300
environment: demo
steps:
- name: checkout out code
uses: actions/checkout@v5
- name: Globalise Ingress certificate type env
run: |
echo "INGRESS_CERT_TYPE=${{ env.INGRESS_CERT_TYPE }}" >> $GITHUB_ENV
env:
INGRESS_CERT_TYPE: 'letsencrypt'
- name: Generate TLS Secrets for DO Droplet
run: |
rm -f $GITHUB_WORKSPACE/.deploy/ssh/with-cloudflare/demo/ingress.api.crt $GITHUB_WORKSPACE/.deploy/ssh/with-cloudflare/demo/ingress.api.key
echo ${{ secrets.INGRESS_API_CERT }} | base64 --decode > $GITHUB_WORKSPACE/.deploy/ssh/with-cloudflare/demo/ingress.api.crt
echo ${{ secrets.INGRESS_API_CERT_KEY }} | base64 --decode > $GITHUB_WORKSPACE/.deploy/ssh/with-cloudflare/demo/ingress.api.key
- name: Copy file via scp - cloudflare
if: ${{ env.INGRESS_CERT_TYPE == 'cloudflare' }}
uses: appleboy/scp-action@master
with:
host: ${{secrets.DO_DROPLET_DEMO_HOST}}
username: ${{secrets.DO_DROPLET_USERNAME}}
key: ${{secrets.DO_DROPLET_KEY}}
source: '.deploy/ssh/with-cloudflare/demo/docker-compose.api.demo.cloudflare.pre.yml,.deploy/ssh/with-cloudflare/demo/nginx.demo.pre.cloudflare.conf,.deploy/ssh/with-cloudflare/demo/ingress.api.crt,.deploy/ssh/with-cloudflare/demo/ingress.api.key'
target: '.'
- name: Copy file via scp - letsencrypt
if: ${{ env.INGRESS_CERT_TYPE == 'letsencrypt' }}
uses: appleboy/scp-action@master
with:
host: ${{secrets.DO_DROPLET_DEMO_HOST}}
username: ${{secrets.DO_DROPLET_USERNAME}}
key: ${{secrets.DO_DROPLET_KEY}}
source: '.deploy/ssh/with-letsencrypt/demo/docker-compose.api.demo.letsencrypt.pre.yml,.deploy/ssh/with-letsencrypt/demo/user_conf.d,.deploy/ssh/with-letsencrypt/demo/nginx-certbot.env'
target: '.'
- name: Install Docker
uses: appleboy/ssh-action@master
with:
host: ${{secrets.DO_DROPLET_DEMO_HOST}}
username: ${{secrets.DO_DROPLET_USERNAME}}
key: ${{secrets.DO_DROPLET_KEY}}
script: |
if ! command -v docker &> /dev/null; then
echo "Docker not installed. Installing..."
sudo apt-get update
sudo apt-get install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
else
echo "Docker is already installed."
fi
- name: Install Docker Compose
uses: appleboy/ssh-action@master
with:
host: ${{secrets.DO_DROPLET_DEMO_HOST}}
username: ${{secrets.DO_DROPLET_USERNAME}}
key: ${{secrets.DO_DROPLET_KEY}}
script: |
if ! command -v docker-compose &> /dev/null; then
echo "Docker Compose not installed. Installing..."
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
else
echo "Docker Compose is already installed."
fi
- name: Deploy to DigitalOcean Droplet
uses: appleboy/ssh-action@master
with:
host: ${{secrets.DO_DROPLET_DEMO_HOST}}
username: ${{secrets.DO_DROPLET_USERNAME}}
key: ${{secrets.DO_DROPLET_KEY}}
script: |
if [ "${{ env.INGRESS_CERT_TYPE }}" = "cloudflare" ]; then
docker-compose -f .deploy/ssh/with-letsencrypt/demo/docker-compose.api.demo.letsencrypt.pre.yml down
docker-compose -f .deploy/ssh/with-cloudflare/demo/docker-compose.api.demo.cloudflare.pre.yml up -d
elif [ "${{ env.INGRESS_CERT_TYPE }}" = "letsencrypt" ]; then
docker-compose -f .deploy/ssh/with-cloudflare/demo/docker-compose.api.demo.cloudflare.pre.yml down
docker-compose -f .deploy/ssh/with-letsencrypt/demo/docker-compose.api.demo.letsencrypt.pre.yml up -d
else
echo "Unknown INGRESS_CERT_TYPE: $INGRESS_CERT_TYPE"
exit 1
fi