CI脚本
stages:
- build
- deploy
variables:
PKG: $CI_PROJECT_NAME
install dependencies:
stage: build
tags:
- f2e
only:
- master
except:
changes:
- "*.md"
cache:
key: "${CI_PROJECT_PATH}-${CI_COMMIT_REF_NAME}"
paths:
- node_modules/
policy: pull-push
script:
# - cnpm install --production
- tar zcf ${PKG}-${CI_COMMIT_SHA:0:8}.tar.gz * .eslint* # 打代码包,做为 artifacts
- md5sum ${PKG}-${CI_COMMIT_SHA:0:8}.tar.gz > ${PKG}-${CI_COMMIT_SHA:0:8}.tar.gz.md5
artifacts:
paths:
- ${PKG}-${CI_COMMIT_SHA:0:8}.tar.gz
- ${PKG}-${CI_COMMIT_SHA:0:8}.tar.gz.md5
expire_in: 1 week
# 只有一个环境,test2服务器
deploy to test2 environment:
stage: deploy
tags:
- f2e
only:
- master
except:
changes:
- "*.md"
variables:
GIT_STRATEGY: none
dependencies:
- install dependencies
script:
# - tar xf ${PKG}-${CI_COMMIT_SHA:0:8}.tar.gz
- ./bin/deploy-test.sh ${PKG} ${CI_COMMIT_SHA:0:8}
# 在生产环境(生产机)上部署应用
# deploy-pro to production environment:
# stage: deploy-pro
# tags:
# - f2e
# - bash
# only:
# - master
# - shelltest
# except:
# changes:
# - "*.md"
# variables:
# GIT_STRATEGY: none
# dependencies:
# - install dependencies
# script:
# - mv ${PKG}-${CI_COMMIT_SHA:0:8}.tar.gz* /var/cache/deploy/
# - sudo /opt/bin/deploy-f2e-seo-server ${PKG} ${CI_COMMIT_SHA:0:8}
deploy-test.sh
#!/bin/bash
# 应用运维脚本
PKG=$1
COMMIT_SHA=$2
TARGET_DIR=/var/www/node_project/$PKG
SOURCE_DIR="$(pwd)"
md5sum --status -c ${PKG}-${COMMIT_SHA}.tar.gz.md5
if [ $? -eq 0 ]; then
# 更新代码库
echo "更新代码库"
rm -rf $TARGET_DIR
mkdir $TARGET_DIR
tar xf $SOURCE_DIR/$PKG-$COMMIT_SHA.tar.gz -C $TARGET_DIR
# copy 隐私配置文件
# TODO:需要将隐私配置文件从 /var/lib/$PKG/config/ 移到 $TARGET_DIR/config/ 中
# echo "copy 配置文件"
# cp /var/lib/$PKG/config/core.js $TARGET_DIR/config/
# cp /var/lib/$PKG/config/config.prod.js $TARGET_DIR/config/
# cp /var/lib/$PKG/config/manager.js $TARGET_DIR/config/
echo "打开目标目录"
cd $TARGET_DIR
cnpm install --production
echo "启动项目"
npm run pm2
else 'Verifying Error'
exit 1
fi
遇到的问题
我们使用 shell 作为runner执行者,其实就是服务器当前的环境,所以下载 pm2 之类的依赖直接在服务器下载就好了,但是记住要切换角色,比如你当前登录服务器是你自己(whoami
查询一下),要切到 gitlab-runner 角色(sudo su gitlab-runner
),然后再安装pm2之类的才会生效。