1
1
# A pipeline is composed of independent jobs that run scripts, grouped into stages.
2
2
# Stages run in sequential order, but jobs within stages run in parallel.
3
3
#
4
- # For more information, see: https://docs.github .com/ee/ci/
4
+ # For more information, see: https://docs.gitlab .com/ee/ci/
5
5
6
6
stages :
7
- - test
8
7
- deploy
9
8
10
- variables :
11
- NODE_VERSION : 18.17.0
12
-
13
9
deploy-job :
14
10
stage : deploy
15
- image : alpine:latest
11
+ image : node:20.15.0
16
12
before_script :
17
13
- " command -v ssh-agent >/dev/null || ( apk add --update openssh )"
18
14
- eval $(ssh-agent -s)
@@ -21,16 +17,30 @@ deploy-job:
21
17
- chmod 700 ~/.ssh
22
18
- ssh-keyscan -p $SSH_PORT $SSH_IP >> ~/.ssh/known_hosts
23
19
- chmod 644 ~/.ssh/known_hosts
20
+ - echo "Installing dependencies..."
21
+ - apt-get update -qq && apt-get install -y -qq sshpass
22
+ - apt-get install -y -qq rsync
23
+ - echo "Setup..."
24
+ - git clone https://gitlab.com/kiwilan/feedrender.git
25
+ - cd feedrender
26
+ - scp -P $SSH_PORT $SSH_USER@$SSH_IP:/var/www/$CI_PROJECT_NAME/.env .env
27
+ - npm install -g pnpm
28
+ - pnpm i
29
+ - echo "Building..."
30
+ - pnpm build
31
+ - echo "Deploying..."
24
32
script :
33
+ - rsync -azPhhr -e "ssh -p $SSH_PORT" dist $SSH_USER@$SSH_IP:/var/www/$CI_PROJECT_NAME/dist-$CI_JOB_ID
25
34
- ssh -p $SSH_PORT $SSH_USER@$SSH_IP "
26
35
. ~/.zshrc &&
27
- cd /home/$SSH_USER /www/$CI_PROJECT_NAME &&
36
+ cd /var /www/$CI_PROJECT_NAME &&
28
37
git pull &&
29
- /home/$SSH_USER/.nvm/versions/node/v$NODE_VERSION/bin/pnpm i &&
30
- /home/$SSH_USER/.nvm/versions/node/v$NODE_VERSION/bin/pnpm build &&
31
- docker compose build --no-cache &&
32
- docker compose down &&
33
- docker compose up -d &&
38
+ docker cp dist-$CI_JOB_ID $DOCKER_CONTAINER:/usr/src/app/ &&
39
+ docker exec $DOCKER_CONTAINER rm -rf dist &&
40
+ docker exec $DOCKER_CONTAINER mv dist-$CI_JOB_ID/dist dist &&
41
+ docker exec $DOCKER_CONTAINER rm -rf dist-$CI_JOB_ID &&
42
+ docker restart $DOCKER_CONTAINER &&
43
+ rm -rf dist-$CI_JOB_ID &&
34
44
notifier discord '$CI_PROJECT_TITLE deployed'"
35
45
only :
36
46
- main
0 commit comments