1
+ name : TestBuildAndDeploy
2
+
3
+ on :
4
+ push :
5
+ branches : [development]
6
+ release :
7
+ types : [created]
8
+
9
+ env :
10
+ DOCKER_USERNAME : ${{ secrets.DOCKER_USERNAME }}
11
+ DOCKER_PASSWORD : ${{ secrets.DOCKER_PASSWORD }}
12
+ SERVER_HOST : ${{ secrets.SSH_HOST }}
13
+ SERVER_USERNAME : ${{ secrets.SSH_USERNAME }}
14
+ SERVER_PASSWORD : ${{ secrets.SSH_PASSWORD }}
15
+ SERVER_KEY : ${{ secrets.SSH_KEY }}
16
+ CLIENT_ID : ${{ secrets.CLIENT_ID }}
17
+ GUILD_ID : ${{ secrets.GUILD_ID }}
18
+ MONGO_CONNECTION_LINK : ${{ secrets.MONGO_CONNECTION_LINK }}
19
+ TOKEN : ${{ secrets.TOKEN }}
20
+
21
+ jobs :
22
+ build-and-deploy :
23
+ runs-on : ubuntu-latest
24
+
25
+ steps :
26
+ - name : Checkout code
27
+ uses : actions/checkout@v3
28
+
29
+ - name : Install dependencies
30
+ run : npm ci
31
+
32
+ - name : Lint code
33
+ run : npm run lint
34
+
35
+ - name : Lint Dockerfile
36
+ run : docker run --rm -i hadolint/hadolint < Dockerfile
37
+
38
+ - name : Set up Docker Buildx
39
+ if : success() && startsWith(github.ref, 'refs/tags/')
40
+ uses : docker/setup-buildx-action@v2
41
+
42
+ - name : Login to Docker Hub
43
+ if : success() && startsWith(github.ref, 'refs/tags/')
44
+ uses : docker/login-action@v2
45
+ with :
46
+ username : ${{ env.DOCKER_USERNAME }}
47
+ password : ${{ env.DOCKER_PASSWORD }}
48
+
49
+ - name : Build and push Docker image
50
+ if : success() && startsWith(github.ref, 'refs/tags/')
51
+ uses : docker/build-push-action@v4
52
+ with :
53
+ push : true
54
+ context : .
55
+ file : ./Dockerfile
56
+ tags : uwrksi/ksicius:latest
57
+ build-args : |
58
+ MONGO_CONNECTION_LINK=${{ env.MONGO_CONNECTION_LINK }}
59
+ CLIENT_ID=${{ env.CLIENT_ID }}
60
+ GUILD_ID=${{ env.GUILD_ID }}
61
+ TOKEN=${{ env.TOKEN }}
62
+
63
+ - name : SSH into server and deploy
64
+ if : success() && startsWith(github.ref, 'refs/tags/')
65
+
66
+ env :
67
+ USERNAME : ${{ env.DOCKER_USERNAME }}
68
+ PASSWORD : ${{ env.DOCKER_PASSWORD }}
69
+ with :
70
+ host : ${{ env.SERVER_HOST }}
71
+ username : ${{ env.SERVER_USERNAME }}
72
+ password : ${{ env.SERVER_PASSWORD }}
73
+ key : ${{ env.SERVER_KEY }}
74
+ envs : USERNAME, PASSWORD
75
+ script : |
76
+ docker login -u $USERNAME -p $PASSWORD
77
+ docker pull uwrksi/ksicius:latest
78
+ docker stop ksicius || true
79
+ docker rm ksicius || true
80
+ docker run -d --restart=always --name ksicius uwrksi/ksicius:latest
0 commit comments