zoukankan      html  css  js  c++  java
  • gitlab持续集成,自动部署

    写这篇文章的目的是,实现提交代码到gitlab上的一个项目时,自动打包,并将包发布到另一台服务器上,重启tomat。如有问题,可以联系本人QQ:409838567
    gitlab-ci,是基于gitlab和gitlab-runner实现持续集成。
    gitlab、gitlab-runner安装在192.168.3.166上,需要将war包发布到192.168.3.167上。
     
    1.安装gitlab
    yum install gitlab-ce
    注:如果用的是虚拟机,物理内存要大于1G,不然经常报502错误
    如果不会可以百度怎么安装gitlab
    1.1配置端口
    vi /etc/gitlab/gitlab.rb 
    #修改gitlab的访问ip和端口,ip用本机
    external_url 'http://192.168.3.166:8099'
    #重启gitlab
    gitlab-ctl reconfigure
     
    2.安装gitlab-runner
    2.1 下载执行文件
    sudo wget -O/usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
    2.2 设置执行权限
    sudo chmod +x /usr/local/bin/gitlab-runner
    2.3 创建 GitLab CI 用户
    useradd --comment 'GitLab Runner'--create-home gitlab-runner --shell /bin/bash
    2.4 运行服务
    gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
    gitlab-runner start
     
    3.gitlab-runner 注册
    打开 gitlab 项目 -> Settings -> CI / CD -> Runners settings
     
    可以看到gitLab URL和token,在下面注册会用到
    运行注册
    sudo gitlab-runner register
    输入你的 GitLab URL
    Please enter the gitlab-ci coordinator URL(e.g. https://gitlab.com )
    https://192.168.3.166:8099(输入上图的url)
    输入 注册令牌 来注册 Runner
    Please enter the gitlab-ci token forthis runner
    xxx(输入上图的token)
    输入 Runner 说明
    Please enter the gitlab-ci description forthis runner
    [hostame] my-runner
    输入 Runner 的 tags
    Please enter the gitlab-ci tags forthisrunner(comma separated):
    my-tag,another-tag
    输入 Runner 执行方式,这里选择shell
    Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
    shell
     
    到这一步gitlab和gitlab-runner就配置好了
     
    4. 创建一个web项目,上传到gitlab,新建一个.gitlab-ci.yml
    .gitlab-ci.yml文件内容如下
    stages:
    - build
    build:
      stage: build
      script:
      #mvn 打包
    - mvn clean package-Dmaven.test.skip=true
      #将war包拷贝到另外一台服务器
    - scp /home/gitlab-runner/builds/f0e79179/0/root/demo/target/demo-0.0.1-SNAPSHOT.war root@192.168.3.167:/data/www/demo-0.0.1-SNAPSHOT.war
      #连接tomcat的服务器,执行deploy.sh,将war包拷贝到webapps下面,重启tomcat
    - ssh root@192.168.3.167"sh /apps/shell/deploy.sh"
      only:
    - test
    - master
    当代码提交到test或master分支时,会执行script内的脚本。
     
    deploy.sh
    根据需求自己修改
    #!/bin/bash
    #defined
    exportJAVA_HOME="/usr/local/jdk1.8.0_231/"
    exportTOMCAT_HOME="/apps/apache-tomcat-8.5.43/"
     
    PID=`ps -ef | grep java | grep apache-tomcat-8.5.43 | awk '{print $2}'`
    echo $PID
    echo "kill tomcat"
    kill -9 $PID
    echo "remover jarfile"
    cd "$TOMCAT_HOME"/webapps
    rm -rf demo*
    echo "copy jar to tomcat webapp"
    cp /data/www/demo*.war "$TOMCAT_HOME"/webapps/demo.war
    cd "$TOMCAT_HOME"/bin
    echo "start tomcat"
    ./startup.sh
     
    问题:gitlab-runner 无法 scp到远程服务器的问题,scp时,需要输入目标主机的密码,所以要将当前机器的公钥,加入到目标机器的keys里面
    1). 连接3.166
    2). 切换到gitlab-runner用户
        su gitlab-runner
    3). 生成公私钥
        ssh-keygen
    4). 复制3.166的公钥到3.167
        scp /home/gitlab-runner/.ssh/id_rsa.pub root@192.168.3.167:/home/id_rsa.pub
    5). 连接3.167
    6). 将公钥追加到keys后面
        cat /home/id_rsa.pub >>~/.ssh/authorized_keys

  • 相关阅读:
    joblib to implement multi-progress
    python排序
    回归评估:R2
    评估曲线
    模型融合:Stacking
    排列重要性
    单点登陆
    特征漂移检测
    python数组切片
    docker -ti
  • 原文地址:https://www.cnblogs.com/fengxf/p/11866016.html
Copyright © 2011-2022 走看看