Skip to content

Commit 8e8b015

Browse files
committed
Update GH actions
1 parent c0dd937 commit 8e8b015

File tree

3 files changed

+110
-17
lines changed

3 files changed

+110
-17
lines changed

.github/workflows/build_and_deploy.yml renamed to .github/workflows/deploy_production.yml

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66

77
env:
88
REGISTRY: 'registry.digitalocean.com/first-israel-registry'
9-
IMAGE_TAG: ${{ github.ref_name }}
9+
IMAGE_TAG: lems-${{ github.ref_name }}
1010
DIGITALOCEAN_KEY: ${{ secrets.DIGITALOCEAN_KEY }}
1111
DIGITALOCEAN_SECRET: ${{ secrets.DIGITALOCEAN_SECRET }}
1212
DIGITALOCEAN_ENDPOINT: ${{ vars.DIGITALOCEAN_ENDPOINT }}
@@ -29,6 +29,7 @@ env:
2929
jobs:
3030
build_and_push:
3131
runs-on: ubuntu-latest
32+
environment: production
3233
steps:
3334
- name: Checkout the repo
3435
uses: actions/checkout@v4
@@ -49,21 +50,20 @@ jobs:
4950

5051
- name: Log in to DigitalOcean Container Registry with short-lived credentials
5152
run: doctl registry login --expiry-seconds 600
52-
53-
- name: Remove all old images
54-
run: |
55-
if doctl registry repository list-tags lems-frontend | grep -o "sha.*"; then
56-
doctl registry repository delete-manifest lems-frontend $(doctl registry repository list-tags lems-frontend | grep -o "sha.*") --force
57-
fi
58-
if doctl registry repository list-tags lems-backend | grep -o "sha.*"; then
59-
doctl registry repository delete-manifest lems-backend $(doctl registry repository list-tags lems-backend | grep -o "sha.*") --force
60-
fi
61-
if doctl registry repository list-tags lems-scheduler | grep -o "sha.*"; then
62-
doctl registry repository delete-manifest lems-scheduler $(doctl registry repository list-tags lems-scheduler | grep -o "sha.*") --force
63-
fi
64-
if doctl registry repository list-tags fll-events | grep -o "sha.*"; then
65-
doctl registry repository delete-manifest fll-events $(doctl registry repository list-tags fll-events | grep -o "sha.*") --force
66-
fi
53+
- name: Remove all old images
54+
run: |
55+
if doctl registry repository list-tags lems-frontend | grep -o "lems-.*"; then
56+
doctl registry repository delete-manifest lems-frontend $(doctl registry repository list-tags lems-frontend | grep -o "lems-.*") --force
57+
fi
58+
if doctl registry repository list-tags lems-backend | grep -o "lems-.*"; then
59+
doctl registry repository delete-manifest lems-backend $(doctl registry repository list-tags lems-backend | grep -o "lems-.*") --force
60+
fi
61+
if doctl registry repository list-tags lems-scheduler | grep -o "lems-.*"; then
62+
doctl registry repository delete-manifest lems-scheduler $(doctl registry repository list-tags lems-scheduler | grep -o "lems-.*") --force
63+
fi
64+
if doctl registry repository list-tags lems-portal | grep -o "lems-.*"; then
65+
doctl registry repository delete-manifest lems-portal $(doctl registry repository list-tags lems-portal | grep -o "lems-.*") --force
66+
fi
6767

6868
- name: Push image to DigitalOcean Container Registry
6969
run: docker compose push
@@ -73,6 +73,7 @@ jobs:
7373

7474
deploy:
7575
runs-on: ubuntu-latest
76+
environment: production
7677
needs: build_and_push
7778

7879
steps:
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
name: Deploy LEMS
2+
3+
on: workflow_dispatch
4+
5+
env:
6+
REGISTRY: 'registry.digitalocean.com/first-israel-registry'
7+
IMAGE_TAG: staging-${{ github.ref_name }}
8+
DIGITALOCEAN_KEY: ${{ secrets.DIGITALOCEAN_KEY }}
9+
DIGITALOCEAN_SECRET: ${{ secrets.DIGITALOCEAN_SECRET }}
10+
DIGITALOCEAN_ENDPOINT: ${{ vars.DIGITALOCEAN_ENDPOINT }}
11+
DIGITALOCEAN_SPACE: ${{ vars.DIGITALOCEAN_SPACE }}
12+
JWT_SECRET: ${{ secrets.JWT_SECRET }}
13+
DASHBOARD_JWT_SECRET: ${{ secrets.DASHBOARD_JWT_SECRET }}
14+
MONGODB_URI: ${{ secrets.MONGODB_URI }}
15+
MONGO_CA_CERTIFICATE: ${{ secrets.MONGO_CA_CERTIFICATE }}
16+
LEMS_DOMAIN: ${{ vars.LEMS_DOMAIN }}
17+
SCHEDULER_URL: ${{ vars.SCHEDULER_URL }}
18+
BASE_URL: ${{ vars.BASE_URL }}
19+
NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL }}
20+
WS_URL: ${{ vars.WS_URL }}
21+
NEXT_PUBLIC_WS_URL: ${{ vars.NEXT_PUBLIC_WS_URL }}
22+
RECAPTCHA: ${{ vars.RECAPTCHA }}
23+
NEXT_PUBLIC_RECAPTCHA_SITE_KEY: ${{ secrets.RECAPTCHA_SITE_KEY }}
24+
25+
jobs:
26+
build_and_push:
27+
runs-on: ubuntu-latest
28+
environment: staging
29+
steps:
30+
- name: Checkout the repo
31+
uses: actions/checkout@v4
32+
33+
- name: Install Node Modules
34+
run: npm ci
35+
36+
- name: LEMS Build
37+
run: npm run build
38+
39+
- name: Build container image
40+
run: docker compose build
41+
42+
- name: Install doctl
43+
uses: digitalocean/action-doctl@v2
44+
with:
45+
token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }}
46+
47+
- name: Log in to DigitalOcean Container Registry with short-lived credentials
48+
run: doctl registry login --expiry-seconds 600
49+
- name: Remove all old staging images
50+
run: |
51+
if doctl registry repository list-tags lems-frontend | grep -o "staging-.*"; then
52+
doctl registry repository delete-manifest lems-frontend $(doctl registry repository list-tags lems-frontend | grep -o "staging-.*") --force
53+
fi
54+
if doctl registry repository list-tags lems-backend | grep -o "staging-.*"; then
55+
doctl registry repository delete-manifest lems-backend $(doctl registry repository list-tags lems-backend | grep -o "staging-.*") --force
56+
fi
57+
if doctl registry repository list-tags lems-scheduler | grep -o "staging-.*"; then
58+
doctl registry repository delete-manifest lems-scheduler $(doctl registry repository list-tags lems-scheduler | grep -o "staging-.*") --force
59+
fi
60+
if doctl registry repository list-tags lems-portal | grep -o "staging-.*"; then
61+
doctl registry repository delete-manifest lems-portal $(doctl registry repository list-tags lems-portal | grep -o "staging-.*") --force
62+
fi
63+
64+
- name: Push image to DigitalOcean Container Registry
65+
run: docker compose push
66+
67+
- name: Run garbage collection
68+
run: doctl registry garbage-collection start --force
69+
70+
deploy:
71+
runs-on: ubuntu-latest
72+
environment: staging
73+
needs: build_and_push
74+
75+
steps:
76+
- name: Deploy to Digital Ocean droplet via SSH action
77+
uses: appleboy/ssh-action@v1.0.0
78+
with:
79+
host: ${{ secrets.HOST }}
80+
username: ${{ secrets.USERNAME }}
81+
key: ${{ secrets.SSHKEY }}
82+
passphrase: ${{ secrets.PASSPHRASE }}
83+
envs: REGISTRY,IMAGE_TAG,DASHBOARD_JWT_SECRET,LEMS_DOMAIN,SCHEDULER_URL,DIGITALOCEAN_KEY,DIGITALOCEAN_SECRET,DIGITALOCEAN_ENDPOINT,DIGITALOCEAN_SPACE,JWT_SECRET,MONGODB_URI,MONGO_CA_CERTIFICATE,BASE_URL,NEXT_PUBLIC_BASE_URL,WS_URL,NEXT_PUBLIC_WS_URL,RECAPTCHA,{{ secrets.DIGITALOCEAN_ACCESS_TOKEN }}
84+
script: |
85+
docker login -u ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }} -p ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }} registry.digitalocean.com
86+
cd lems
87+
docker compose down
88+
docker compose rm
89+
docker rmi $(docker images | grep 'lems-')
90+
git reset --hard origin/main
91+
git pull origin main
92+
docker compose up -d

compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ services:
6565
args:
6666
BASE_URL: ${BASE_URL}
6767
NEXT_PUBLIC_BASE_URL: ${NEXT_PUBLIC_BASE_URL}
68-
image: ${REGISTRY}/fll-events:${IMAGE_TAG}
68+
image: ${REGISTRY}/lems-portal:${IMAGE_TAG}
6969
ports:
7070
- '3000:3000'
7171
networks:

0 commit comments

Comments
 (0)