mirror of
https://github.com/ever-co/ever-gauzy.git
synced 2026-10-02 01:54:50 +08:00
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>
97 lines
4.3 KiB
YAML
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
|