1
+ name : Deploy to VM
2
+
3
+ on :
4
+ push :
5
+ branches :
6
+ - main
7
+
8
+ env :
9
+ VM_HOST : ${{ secrets.VM_HOST }}
10
+ CONTAINER_NAME : celestia-web
11
+ IMAGE_NAME : ghcr.io/celestiaorg/celestia.org:latest
12
+
13
+ jobs :
14
+ deploy :
15
+ runs-on : ubuntu-latest
16
+ if : ${{ github.event.workflow_run.conclusion == 'success' || github.event_name == 'workflow_dispatch' }}
17
+
18
+ steps :
19
+ - name : Configure SSH
20
+ run : |
21
+ mkdir -p ~/.ssh/
22
+ echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/deploy_key
23
+ chmod 600 ~/.ssh/deploy_key
24
+ echo "${{ secrets.SSH_KNOWN_HOSTS }}" > ~/.ssh/known_hosts
25
+
26
+ - name : Login to GitHub Container Registry on VM
27
+ run : |
28
+ ssh -i ~/.ssh/deploy_key ${{ secrets.SSH_USER }}@${{ env.VM_HOST }} \
29
+ "echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin"
30
+
31
+ - name : Deploy to VM
32
+ run : |
33
+ ssh -i ~/.ssh/deploy_key ${{ secrets.SSH_USER }}@${{ env.VM_HOST }} "\
34
+ docker pull ${{ env.IMAGE_NAME }} && \
35
+ docker stop ${{ env.CONTAINER_NAME }} || true && \
36
+ docker rm ${{ env.CONTAINER_NAME }} || true && \
37
+ docker run -d \
38
+ --name ${{ env.CONTAINER_NAME }} \
39
+ --restart unless-stopped \
40
+ -p 3000:3000 \
41
+ -e MAILCHIMP_API_KEY='${{ secrets.MAILCHIMP_API_KEY }}' \
42
+ -e MAILCHIMP_LIST_ID='${{ secrets.MAILCHIMP_LIST_ID }}' \
43
+ -e MAILCHIMP_SERVER_PREFIX='${{ secrets.MAILCHIMP_SERVER_PREFIX }}' \
44
+ -e NEXT_PUBLIC_RECAPTCHA_SITE_KEY='${{ secrets.NEXT_PUBLIC_RECAPTCHA_SITE_KEY }}' \
45
+ -e RECAPTCHA_SECRET_KEY='${{ secrets.RECAPTCHA_SECRET_KEY }}' \
46
+ -e NEXT_PUBLIC_SITE_URL='${{ secrets.NEXT_PUBLIC_SITE_URL }}' \
47
+ -e ENV_MODE='${{ github.event.inputs.environment || 'production' }}' \
48
+ ${{ env.IMAGE_NAME }}"
49
+
50
+ - name : Verify Deployment
51
+ run : |
52
+ ssh -i ~/.ssh/deploy_key ${{ secrets.SSH_USER }}@${{ env.VM_HOST }} "\
53
+ if ! docker ps | grep -q ${{ env.CONTAINER_NAME }}; then \
54
+ echo 'Container is not running' && exit 1; \
55
+ fi && \
56
+ echo 'Container is running successfully' && \
57
+ docker logs --tail 50 ${{ env.CONTAINER_NAME }}"
0 commit comments