搭建GitLab自动部署环境

一、CentOS、Java、Maven、Git

  • 确定是否CentOS 7版本
[root@VM-0-4-centos ~]# cat /etc/redhat-release
  • 下载Java压缩包并解压
[root@VM-0-4-centos ~]# cd /usr/local/src
[root@VM-0-4-centos ~]# mkdir java
[root@VM-0-4-centos ~]# cd java
[root@VM-0-4-centos ~]# tar -xvf ../jdk-8u141-linux-x64.tar.gz
  • 下载Maven压缩包并解压
[root@VM-0-4-centos ~]# cd /usr/local/src
[root@VM-0-4-centos ~]# mkdir maven
[root@VM-0-4-centos ~]# cd maven
[root@VM-0-4-centos ~]# tar -xvf ../apache-maven-3.6.3-bin.tar.gz
  • 修改配置文件
[root@VM-0-4-centos ~]# vim settings.xml

配置本地仓库存储路径

<localRepository>/usr/local/src/maven/repository</localRepository>

配置腾讯云Maven仓库

<mirror>
    <id>nexus-tencentyun</id>
    <mirrorOf>*</mirrorOf>
    <name>Nexus tencentyun</name>
    <url>http://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url>
</mirror>
[root@VM-0-4-centos ~]# vim /etc/profile

文末追加以下内容

# env
export JAVA_HOME=/usr/local/src/java/jdk1.8.0_141
export MAVEN_HOME=/usr/local/src/maven/apache-maven-3.6.3
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin

刷新环境变量并验证是否生效

[root@VM-0-4-centos ~]# source /etc/profile
[root@VM-0-4-centos ~]# java -version
[root@VM-0-4-centos ~]# mvn -version
  • 安装Git并验证是否生效
[root@VM-0-4-centos ~]# yum install git
[root@VM-0-4-centos ~]# git --version

二、Docker

  • 官方文档
  • 设置腾讯云yum仓库,用于安装和更新
[root@VM-0-4-centos lib]# yum install -y yum-utils
[root@VM-0-4-centos ~]# yum-config-manager \
--add-repo https://mirrors.cloud.tencent.com/docker-ce/linux/centos/docker-ce.repo
  • 安装Docker
[root@VM-0-4-centos lib]# yum install docker-ce docker-ce-cli containerd.io
  • 启动Docker
[root@VM-0-4-centos lib]# systemctl start docker
  • 验证Docker安装是否正确
[root@VM-0-4-centos lib]# docker -v
  • 官方文档

  • 设置腾讯云Docker仓库,创建或修改/etc/docker/daemon.json文件

[root@VM-0-4-centos docker]# vim /etc/docker/daemon.json

并写入以下内容

{
   "registry-mirrors": [
       "https://mirror.ccs.tencentyun.com"
  ]
}
  • 依次执行以下命令,重新启动Docker服务
[root@VM-0-4-centos docker]# systemctl daemon-reload
[root@VM-0-4-centos docker]# systemctl restart docker
  • 检查加速器是否生效
[root@VM-0-4-centos docker]# docker info

三、GitLab Runner

  • 官方文档
  • 打开GitLab的group_dev>CI/CD Settings页面,查看Runners信息
  • 添加GitLab的官方仓库
[root@VM-0-4-centos ~]#    curl -L \
https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | \
sudo bash
  • 安装最新版的GitLab Runner
[root@VM-0-4-centos ~]#    export GITLAB_RUNNER_DISABLE_SKEL=true; sudo -E yum \
install gitlab-runner
[root@VM-0-4-centos ~]# sudo gitlab-runner register

并按提示输入信息,runner executor填shell

  • 想要注册多个,可以多次运行注册命令
  • 修改配置文件
[root@VM-0-4-centos ~]# vim /etc/gitlab-runner/config.toml

更新并行数量

concurrent = 3
  • 获取 GitLab Runner 命令的顶级帮助信息
[root@VM-0-4-centos ~]# gitlab-runner --help
  • 将gitlab-runner用户加入docker用户组
[root@VM-0-4-centos ~]# sudo groupadd docker
[root@VM-0-4-centos ~]# sudo gpasswd -a gitlab-runner docker
[root@VM-0-4-centos ~]# newgrp docker
  • 刷新GitLab的group_dev>CI/CD Settings页面,查看Runners信息

四、docker-maven-plugin

            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <imageName>gdjz/ai</imageName>
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

五、Dockerfile

FROM openjdk:8
ADD ai-1.0.0.jar ai-1.0.0.jar
ENTRYPOINT ["java","-jar","ai-1.0.0.jar","--spring.profiles.active=${profiles}","-Dmaven.test.skip=true"]

六、.gitlab-ci.yml

stages:
  - deploy

deploy_dev:
  stage: deploy
  script:
    - if [ $(docker ps --filter name=ai-dev -aq) ]; then docker rm --force $(docker ps --filter name=ai-dev -aq); fi
    - if [ $(docker images --filter reference=gdjz/ai:dev -aq) ]; then docker rmi --force $(docker images --filter reference=gdjz/ai:dev -aq); fi
    - mvn package docker:build -Dmaven.test.skip=true -DdockerImageTags=dev
    - docker run -e profiles="dev" -d -p 1024:1024 -v /usr/local/src/:/usr/local/src/ --privileged=true --name ai-dev gdjz/ai:dev
  only:
    - dev
  tags:
    - runner-dev

deploy_test:
  stage: deploy
  script:
    - if [ $(docker ps --filter name=ai-test -aq) ]; then docker rm --force $(docker ps --filter name=ai-test -aq); fi
    - if [ $(docker images --filter reference=gdjz/ai:test -aq) ]; then docker rmi --force $(docker images --filter reference=gdjz/ai:test -aq); fi
    - mvn package docker:build -Dmaven.test.skip=true -DdockerImageTags=test
    - docker run -e profiles="test" -d -p 1025:1025 -v /usr/local/src/:/usr/local/src/ --privileged=true --name ai-test gdjz/ai:test
  only:
    - test
  tags:
    - runner-test

after_script:
  - if [ $(docker images --filter dangling=true -aq | tr '\n' ',') ]; then docker rmi --force $(docker images --filter dangling=true -aq | tr '\n' ' '); fi
  • 至此,完成简单的GitLab自动部署环境的搭建。

  • 当项目被推送到GitLab时,GitLab将读取.gitlab-ci.yml配置文件,通知注册在远程服务器上的GitLab Runner同步分支代码,按指定的步骤执行相应的脚本,以实现自动化。

  • 打开GitLab的group_dev>ai>Pipelines页面,查看运行过程的详细信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值