-
Notifications
You must be signed in to change notification settings - Fork 0
59 lines (47 loc) · 1.81 KB
/
Copy pathdeploy.yaml
File metadata and controls
59 lines (47 loc) · 1.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
name: Deploy
on:
push:
branches:
- main
- dev
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
environment: ${{ github.ref == 'refs/heads/main' && 'prod' || 'dev' }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: "1.22"
- name: Build
run: go build -o comprezo main.go
- name: Setup SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H ${{ secrets.REMOTE_HOST }} >> ~/.ssh/known_hosts
- name: Deploy
run: |
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
RELEASE_DIR="${{ secrets.REMOTE_PATH }}/releases/$TIMESTAMP"
CURRENT_LINK="${{ secrets.REMOTE_PATH }}/current"
ssh ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }} << EOF
mkdir -p $RELEASE_DIR
EOF
rsync -avz --delete \
./comprezo ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }}:$RELEASE_DIR/comprezo
ssh ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }} << EOF
chmod +x $RELEASE_DIR/comprezo
ln -sfn $RELEASE_DIR $CURRENT_LINK
systemctl --user restart ${{ github.ref == 'refs/heads/main' && 'api.comprezo.io' || 'dev-api.comprezo.io' }}
EOF
- name: Cleanup Old Releases
run: |
ssh ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }} << EOF
cd ${{ secrets.REMOTE_PATH }}/releases
ls -dt */ | tail -n +51 | xargs rm -rf --
EOF