前端 Gitlab 自动部署
根据自己的系统,下载对应二进制安装文件
# Linux x86-64
sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64"
# Linux x86
sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386"
# Linux arm
sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm"
# Linux arm64
sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm64"
# Linux s390x
sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-s390x"
授予执行权限
sudo chmod +x /usr/local/bin/gitlab-runner
创建一个 Gitlab CI 账户
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
安装、运行
# 安装
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
# 启动
sudo gitlab-runner start
此时, gitlab-runner 已经安装完毕了。
然后注册一个 runner:
gitlab-runner register
输入上述命令后,会出现以下内容
# 要输入你的 git 地址
Enter the GitLab instance URL (for example, https://gitlab.com/):
# 输入你项目的 token, 这个 token 在项目的 settings -> CI/CD -> Runner 中可以找到
Enter the registration token:
# 输入你 runner 的简介,主要用于多个 runner 的区分,可不填
Enter a description for the runner:
# 输入你用于部署的 tags
Enter tags for the runner (comma-separated):
# 根据你的环境和部署方式自行选择,我这里使用的是 shell
Enter the executor: parallels, shell, ssh, virtualbox, docker+machine, docker, docker-ssh, docker-ssh+machine, kubernetes:
到此,会出现 Runner registered successfully
说明你已经成功注册一个 runner。
进入项目中找到 Runner settings -> CI/CD -> Runner
你就会看到一个已经整装待发的 runner 了。
项目部署
到项目的个目录创建一个名为 .gitlab-ci.yml
的 jobs 文件,文件内的内容大概如下
image: node # 选用docker镜像
stages: # Stages 表示构建阶段,这里有两个阶段 install, deploy
- install
- deploy
cache:
key: "$CI_COMMIT_REF_SLUG"
paths:
- node_modules
# 开发环境
install-staging:
stage: install
tags:
- primary
only: # 定义了只有在被merge到了如下分支上 才会执行部署脚本。
- dev
- release
- master
script:
- echo "===== start install ======"
- npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/
- npm install --registry=https://registry.npm.taobao.org #安装依赖
- echo "===== end install ======"
deploy-staging:
stage: deploy
tags:
- primary
only:
- dev
- release
- master
script:
- echo "===== start build ======"
- npm run build:beta # 项目打包
- echo "===== end build ======"
- echo "===== start deploy ======"
- npm run deploy # 上传至部署服务器
- echo "===== end deploy ======"
当我们编辑好文件后,push
我们的文件至 dev、release、master
的时候,就会进行自动部署了
遇到的问题
git fetch-pack: expected shallow list
# 这是因为服务器版本过低的原因,通过升级 `git` 版本来解决
yum install -y http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm
# 然后
yum update git
npm command not found
# 虽然我们已经安装了 node,但是当前用户的目录下找不到
n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local
gitlab-runner: command not found
当我使用sudo gitlab-runner install
时, 反馈我的是,gitlab-runner: command not found
找了很久的文档没有解决方案, 后来我是进到gitlab-runner
安装目录直接使用./gitlab-runner install 上面的安装命令
来进行安装的。
其他
如果你的服务器还没有安装 git 和 node
可参考如下文章进行安装
安装 git
yum install -y git
安装完成之后, 使用 git --version
查看是否已成功安装。
安装 nvm、node
至于为什么不直接安装 node,因为我这里对版本有需求,如果没有需求的,可自行百度直接安装即可。
两种安装办法:
1.curl
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
不过这个方法,可能会出现 443连接拒绝。可先通过https://www.ipaddress.com/
查询一下 raw.githubusercontent.com 对应的IP 地址,然后在 /etc/hosts
中添加对应的解析即可
2.git
# 下载 nvm
git clone git://github.com/creationix/nvm.git ~/nvm
# 然后进入到相应目录,执行 install.sh 进行安装 nvm
cd ~/nvm
./install.sh
等待安装结束后, 加入系统环境
source ~/.bashrc
查看所有的 node 版本
nvm list-remote
安装需要的版本
nvm install v10.24.0
查看所有已安装的版本
nvm list
查看 node npm 版本
node -v
npm -v
至此, 已经全部安装完成