[Gitlab] 使用Gitlab进行自动部署之配置自动部署脚本

 

一、环境说明

当前Gitlab Runner与需要进行自动部署服务的目标机器是同一台机器,环境说明如下

Gitlab Runner宿主机、目标机器

  • 系统:CentOS Linux release 7.4.1708 (Core)
  • IP:172.50.13.11

Gitlab Runner 环境

  • Docker环境
  • Docker镜像:gitlab/gitlab-runner:latest

二、配置ssh密钥进行免登录

进入Gitlab Runner容器内,使用gitlab-runner用户生产公钥,并将公钥拷贝到目标机器上,配置到目标服务器的授权密钥列表中,后续远程操作时可以免输入密码。

查看当前Gitlab Runner容器

fac5a3deb2b7        gitlab/gitlab-runner:latest   "/usr/bin/dumb-init …"   16 hours ago        Up 16 hours                                             gitlab-runner

进入容器

docker exec -it fac5a3deb2b7 /bin/bash

查看确认当前用户

cat /etc/passwd

确认有gitlab-runner,如下红色部分

 

 

 切换到gitlab-runner用户,生成密钥

su gitlab-runner
ssh-keygen

直接回车,自动生成密钥到/home/gitlab-runner/.ssh/id_rsa目录下

 拷贝密钥到目标机器

ssh-copy-id -i /home/gitlab-runner/.ssh/id_rsa.pub  -p22 [email protected]

测试面密钥登录

 

 退出当前容器

exit

  此时,gitlab-ruuner中的gitlab-runner用户可以免登录进行远程操作目标机器

三、配置自动部署脚本

当前时后端服务项目,添加了mvn仓库的缓存配置,加快打包速度

 

variables:
  MAVEN_OPTS: "-Djava.awt.headless=true -Dmaven.repo.local=./.m2/repository"
  MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version"

cache:
  key: "$CI_BUILD_REF_NAME"
  paths:
    - ./.m2/repository

stages:
    - build
    - package
    
build-job:
  stage: build
  script:
    - echo "###################BUILD_STARTED###################"

build-talk-train-jar-dev:
  image: maven:3-jdk-8
  stage: package
  script:
    - mvn clean
    - "mvn clean package -Dmaven.test.skip=true $MAVEN_CLI_OPTS"
    - mkdir -p talk-train-dist/talktrain && mkdir -p talk-train-dist/auth && mkdir -p talk-train-dist/gateway && mkdir -p talk-train-dist/eureka && mkdir -p talk-train-dist/rule
    - cp -r dicfin-talk-train-api/target/dicfin-talk-train-api-0.0.1-SNAPSHOT.jar  talk-train-dist/talk-train
    - cp -r dicfin-train-auth-api/target/dicfin-train-auth-api-0.0.1-SNAPSHOT.jar  talk-train-dist/auth-train
    - cp -r dicfin-train-zuul-gateway/target/dicfin-train-zuul-gateway-0.0.1-SNAPSHOT.jar  talk-train-dist/zuul
    - cp -r dicfin-train-eureka/target/dicfin-train-eureka-0.0.1-SNAPSHOT.jar  talk-train-dist/eureka
    - cp -r dicfin-talk-train-rule/target/dicfin-talk-train-rule-0.0.1-SNAPSHOT.jar  talk-train-dist/rule
    - du -h --max-depth=1 dicfin-talk-train-api
    - scp -r talk-train-dist/* [email protected]:/home/
    - ssh [email protected] "sh /home/eureka/reload.sh"
    - ssh [email protected] "sh /home/zuul/reload.sh"
    - ssh [email protected] "sh /home/rule/reload.sh"
    - ssh [email protected] "sh /home/auth-train/shutdown.sh"
    - ssh [email protected] "sh /home/auth-train/start.sh"
    - ssh [email protected] "sh /home/talk-train/shutdown.sh"
    - ssh [email protected] "sh /home/talk-train/start.sh"
  only:
    - dev
  artifacts:
      name:  "DEV_${CI_JOB_NAME}_${CI_JOB_ID}"
      paths:
        - talk-train-dist/*
      expire_in: 1 day

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章