66 - " main"
77
88env :
9+ ENV_KEYS : >-
10+ MONGO_URI
11+ DISCORD_CLIENT_ID
12+ DISCORD_CLIENT_SECRET
13+ DISCORD_BOT_TOKEN
14+ DISCORD_GUILD_MEMBER_ROLE_ID
15+ DISCORD_GUILD_ID
16+ JWT_SECRET
17+ SPACE_ELECTRICITY_TRACKER_SLUG
18+
19+ # Application environment variables
20+ GIT_COMMIT_SHA : ${{ github.sha }}
21+ MONGO_URI : ${{ secrets.MONGO_URI }}
22+ DISCORD_CLIENT_ID : ${{ vars.DISCORD_CLIENT_ID }}
23+ DISCORD_CLIENT_SECRET : ${{ secrets.DISCORD_CLIENT_SECRET }}
24+ DISCORD_BOT_TOKEN : ${{ secrets.DISCORD_BOT_TOKEN }}
25+ DISCORD_GUILD_MEMBER_ROLE_ID : ${{ vars.DISCORD_GUILD_MEMBER_ROLE_ID }}
26+ DISCORD_GUILD_ID : ${{ vars.DISCORD_GUILD_ID }}
27+ JWT_SECRET : ${{ secrets.JWT_SECRET }}
28+ SPACE_ELECTRICITY_TRACKER_SLUG : ${{ vars.SPACE_ELECTRICITY_TRACKER_SLUG }}
29+
30+ # Docker image configuration
31+ IMAGE_NAME : nu31hackerspace/space
32+ DOCKER_STACK_NAME : nu31space
933 REGISTRY : ghcr.io
10- DOCKER_STACKE_NAME : nu31space
34+
35+ # Deployment configuration
1136 DEPLOY_USER : deploy
12- HOST : 167.235.52.168
37+ HOST : ${{ vars.HOST }}
38+ DEPLOY_SSH_PRIVATE_KEY : ${{ secrets.DEPLOY_SSH_PRIVATE_KEY }}
1339
1440jobs :
1541 build-and-push-image :
16- strategy :
17- matrix :
18- include :
19- - name : space
20- context : .
21- image : space
22-
2342 runs-on : ubuntu-latest
2443 permissions :
2544 contents : read
2645 packages : write
46+ attestations : write
2747 id-token : write
2848
2949 steps :
@@ -39,16 +59,16 @@ jobs:
3959 username : ${{ github.actor }}
4060 password : ${{ secrets.GITHUB_TOKEN }}
4161
42- - name : Build and push main app image
62+ - name : Build and push Docker image
4363 uses : docker/build-push-action@v6
4464 with :
45- context : ${{ matrix.context }}
65+ context : .
4666 push : true
4767 tags : |
48- ${{ env.REGISTRY }}/nu31hackerspace/ ${{ matrix.image }}:latest
49- ${{ env.REGISTRY }}/nu31hackerspace/ ${{ matrix.image }}:${{ github.sha }}
68+ ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
69+ ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
5070 build-args : |
51- GIT_COMMIT_SHA=${{ github.sha }}
71+ GIT_COMMIT_SHA=${{ env.GIT_COMMIT_SHA }}
5272
5373 deploy :
5474 runs-on : ubuntu-latest
@@ -58,24 +78,25 @@ jobs:
5878 - name : Checkout repository
5979 uses : actions/checkout@v4
6080
61- - name : Create env file
81+ - name : Create . env file for Docker Stack
6282 run : |
63- echo "GIT_COMMIT_HASH='${{ github.sha }}'" >> ./envfile
64- echo "MONGO_URI='${{ secrets.MONGO_URI }}'" >> ./envfile
65- echo "DISCORD_CLIENT_ID='${{ vars.DISCORD_CLIENT_ID }}'" >> ./envfile
66- echo "DISCORD_CLIENT_SECRET='${{ secrets.DISCORD_CLIENT_SECRET }}'" >> ./envfile
67- echo "DISCORD_BOT_TOKEN='${{ secrets.DISCORD_BOT_TOKEN }}'" >> ./envfile
68- echo "DISCORD_GUILD_MEMBER_ROLE_ID='${{ vars.DISCORD_GUILD_MEMBER_ROLE_ID }}'" >> ./envfile
69- echo "DISCORD_GUILD_ID='${{ vars.DISCORD_GUILD_ID }}'" >> ./envfile
70- echo "JWT_SECRET='${{ secrets.JWT_SECRET }}'" >> ./envfile
71- echo "SPACE_ELECTRICITY_TRACKER_SLUG='${{ vars.SPACE_ELECTRICITY_TRACKER_SLUG }}'" >> ./envfile
83+ echo "IMAGE_NAME='$IMAGE_NAME'" >> .env
84+ echo "GIT_COMMIT_SHA='$GIT_COMMIT_SHA'" >> .env
85+ for key in $ENV_KEYS; do
86+ echo "$key='${!key}'" >> .env
87+ done
7288
7389 - name : Docker Stack Deploy
7490 uses : cssnr/stack-deploy-action@v1
7591 with :
76- name : ${{ env.DOCKER_STACKE_NAME }}
92+ name : ${{ env.DOCKER_STACK_NAME }}
7793 file : docker-stack.yml
7894 host : ${{ env.HOST }}
95+ port : 22
7996 user : ${{ env.DEPLOY_USER }}
80- ssh_key : ${{ secrets.DEPLOY_SSH_PRIVATE_KEY }}
81- env_file : ./envfile
97+ ssh_key : ${{ env.DEPLOY_SSH_PRIVATE_KEY }}
98+ env_file : .env
99+ detach : false
100+ prune : true
101+ resolve_image : ' always'
102+ summary : true
0 commit comments