文章目录
一、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
-
pom.xml文件添加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
-
添加ai/src/main/docker/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
-
添加ai/.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页面,查看运行过程的详细信息。