[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

 

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