自动化部署

大约 2 分钟

自动化部署

作 者: 邹伟

日 期: 2022-08-30

背景

作为简版CI-CD范例,旨在简化部署流程,降低人为失误,实现自动化部署。

依赖环境

  • 基于gitlab-runner实现服务器自动部署
  • 脚本已在Centos7下进行实测过

升级 &安装git

  1. 安装依赖
# 常用编译包
yum -y groupinstall "Development Tools"
# 其他依赖包
yum -y install zlib-devel perl-ExtUtils-MakeMaker asciidoc xmlto openssl-devel
  1. 编译&安装
# 官网下载
wget https://www.kernel.org/pub/software/scm/git/git-2.13.3.tar.gz --no-check-certificate
# 备用下载
wget http://119.28.76.209/files/git-2.13.3.tar.gz
# 解压 &进入
tar -zxvf git-2.13.3.tar.gz & cd git-2.13.3
# 初始化参数
./configure --prefix=/usr/local/git
# 编译安装
make && make install
# 生效git配置
export PATH="/usr/local/git/bin:$PATH"
# 加入到配置文件 /etc/profile
vi /etc/profile
source /etc/profile

配置gitlab-runner

  1. 下载 &安装
# 从S3下载
curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64"
# 从备份下载
curl -L --output /usr/local/bin/gitlab-runner "http://119.28.76.209/files/gitlab-runner-linux-amd64"
# 添加可执行权限
chmod +x /usr/local/bin/gitlab-runner
# 创建runner用户
useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash 
gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner 
gitlab-runner start
# 设置自启动
systemctl enable gitlab-runner
systemctl start gitlab-runner
gitlab-runner start|stop
  1. 注册至git
gitlab-runner register
Enter the GitLab instance URL (for example, https://gitlab.com/):
# 注意为https
https://git.woodare.com/

Enter the registration token:
# 对应git项目的设置runner的token值
YOUR_GIT_RUNNER_TOKEN

Enter a description for the runner:
# 输入当前runner的tag名称
luhe-runner 

Enter tags for the runner (comma-separated):
luhe-runner 
Registering runner... succeeded runner=vauC9sEG 

Enter an executor: custom, docker-ssh, shell, docker+machine, kubernetes, docker, parallels, ssh, virtualbox, docker-ssh+machine:
# 一般情况下,选择shell模式
# 如果设置成功, git上的项目会出现一条luhe-runner的任务
shell
  1. sudo授权
visudo
# docker示例
gitlab-runner ALL=(ALL)   NOPASSWD: /bin/docker
# shell示例
gitlab-runner ALL=(ALL)   NOPASSWD: /bin/bash -c /home/gitlab-runner/deploy*.sh
  • (可选)Java编译
# 下载Maven
wget http://119.28.76.209/files/apache-maven-3.8.6-bin.tar.gz
# 下载JDK
cat <<EOF >> /etc/profile
> MAVEN_HOME=/opt/apache-maven-3.6.3
> JAVA_HOME=/opt/jdk1.8.0_201
> PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH
> export MAVEN_HOME
> export JAVA_HOME
> export PATH="/usr/local/git/bin:$PATH"
> EOF
  • (可选)Node编译
# As root 安装
curl -fsSL https://rpm.nodesource.com/setup_12.x | bash -
# No root privileges
curl -fsSL https://rpm.nodesource.com/setup_12.x | sudo bash -
sudo yum install -y nodejs

# 查询源
yarn config get registry
# 更换国内源
yarn config set registry https://registry.npmmirror.com
# 恢复官方源
yarn config set registry https://registry.yarnpkg.com
# 删除注册表
yarn config delete registry

配置gitlab-ci

工程根目录新建.gitlab-ci.yml, 构建编译与部署脚本配置

  • 前端脚手架项目
stages:
  - deploy
cache:
  paths:
    - node_modules/
部署:
  stage: deploy
  tags:
    - luhe-runner
  variables:
    GIT_STRATEGY: fetch
  script:
    - echo $PATH
    - npm install --registry=https://registry.npmmirror.com
    - node -v
    - npm -v
    - npm run build:prod
    - export work_dir=$PWD
    - cd ${work_dir}/dist
    - tar cvf dist.tar.gz *
    - \cp -rf dist.tar.gz /home/gitlab-runner/files/nginx-dist.tar.gz
    - sudo /bin/bash -c /home/gitlab-runner/deploy-nginx.sh
  when:
    manual
  • 后端Java项目
stages:
  - deploy
############################## CI ##############################
部署:
  stage: deploy
  tags:
    - luhe-runner
  variables:
    GIT_STRATEGY: fetch
  script:
    - echo $PATH
    - export work_dir=$PWD
    - mvn clean package -Dmaven.test.skip=true -f ${PWD}/pom.xml
    - \cp -rf ${work_dir}/photovoltaic-admin/target/photovoltaic-admin.jar /home/gitlab-runner/jarfiles/photovoltaic-admin-1.0.0.jar
    - sudo /bin/bash -c /home/gitlab-runner/deploy-java.sh
  when:
    manual
上次编辑于:
贡献者: lu_feng,luke