gitlab实现cicd,git ci cd
最近发现Gitlab的CI/CD功能也可以实现自动部署,而且用起来还挺简单的!如果您使用Gitlab作为Git存储库,请尝试它的CI/CD功能。本文以SpringBoot的自动部署为例来实践Gitlab的CI/DI功能。
SpringBoot实用电子商务项目商城(50k star)地址:https://github.com/macrozheng/mall
安装
安装Gitlab
使用以下命令运行Gitlab服务。这里需要注意的是,增加了hostname属性,这样我们就可以通过域名访问Gitlab(避免一些不必要的麻烦)。环境变量GITLAB_ROOT_PASSWORD可以直接在GITLAB中设置ROOT帐号的密码;
docker运行-分离\
-主机名git.macrozheng.com \
-发布10443:443 -发布1080:80 -发布1022:22 \
-名称gitlab \
-总是重启\
-volume/my data/git lab/config:/etc/git lab \
-volume/my data/git lab/logs:/var/log/git lab \
-volume/my data/git lab/data:/var/opt/git lab \
-e git lab _ ROOT _ PASSWORD=12345678 \
Gitlab/gitlab-ce:最新我们需要通过git.macrozheng.com的域名访问Gitlab。如果没有域名,可以通过修改本机的主机文件来实现;
162.168.7.134git.macrozheng.com因为我们的Gitlab运行在端口1080上,我们想在不添加端口的情况下访问它,所以我们可以使用Nginx进行反向代理。对Nginx不熟悉的朋友可以看看《Nginx的这些妙用,你肯定有不知道的!》,在Nginx的配置文件夹中添加git.conf配置文件,内容如下:
服务器{
听80;#也支持HTTP
服务器名git.macrozheng.com;#修改域名
位置/{
proxy _ pass http://192 . 168 . 7 . 134:1080;#设置代理服务访问地址
索引index.html index.htm;
}
error _ page 500 502 503 504/50x . html;
location=/50x.html {
root/usr/share/nginx/html;
}
}之后,我们可以通过git.macrozheng.com的域名访问Gitlab。输入账号密码root:12345678登录;
如何解决写爬虫IP受阻的问题?立即使用。
把我们的SpringBoot应用代码上传到Gitlab,这样Gitlab就准备好了!这里需要注意的是,如果在启动Gitlab的时候没有指定主机名,那么你的项目HTTP访问地址将是容器的ID,你将无法用这个地址访问Git仓库!
安装Gitlab Runner
首先下载gitlab-runner的Docker图片,选择alpine-bleeding。这个版本很小!
docker pull git lab/git lab-runner:Alpine-Bleeding使用以下命令运行git lab-runner;
docker run-name git lab-runner-restart always \
-v/var/run/docker . sock:/var/run/docker . sock \
-v/my data/git lab-runner:/etc/git lab-runner \
-d git lab/gitlab-runner:alpine-bleeding此时,如果我们查看git lab-runner的容器日志,会发现如下错误。找不到config.toml文件,所以不用担心这个问题。当我们向gitlab注册gitlab-runner时,会自动生成;
错误:加载config stat/etc/Gitlab-runner/config . toml:没有这样的文件或目录buildings=0接下来,我们需要向git lab注册Gitlab-runner,打开Project-Settings-CI/CD函数,获取地址和token跑步者注册需要;
接下来,使用以下命令进入gitlab-runner容器内部;
docker exec-it git lab-runner/bin/bash用下面的命令在容器中注册运行器;
gitlab-runner注册时会出现交互界面,提示输入注册地址、令牌、执行人类型等信息。ssh executor可以远程执行Linux命令,非常好用。推荐用这个!
注册后,我们可以发现config.toml文件已经生成,内容如下。如果以后想修改runner的配置,直接修改这个文件就可以了。
并发=1
check_interval=0
[会话服务器]
会话超时=1800
[[跑步者]]
name=docker-runner
url=http://192.168.7.134:1080/
token=c2kpV6tX6woL8TMxzBUN
执行者=嘘
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.ssh]
user=root
密码=123456
主机=192.168.7.134
Port=22 在Gitlab的CI/CD设置中,我们可以发现有一个跑者成功注册了!
安装Maven
从https://maven.apache.org/down.下载Maven的Linux安装包.
下载后,使用以下命令解压到指定目录:
cd /mydata
tar-zxvf apache-maven-3.8.1-bin.tar.gz修改/etc/profile文件并添加环境变量配置:
导出MAVEN _ HOME=/my data/Apache-MAVEN-3 . 8 . 1
export path=$ path:$ Maven _ home/bin通过检查Maven版本来测试安装是否成功。
mvn-VM aven home:/my data/Apache-maven-3 . 8 . 1
Java版本:1.8.0_292,厂商:AdoptOpenJDK,运行时:/mydata/java/jdk1.8/jre
默认区域设置:美国,平台编码:UTF-8
OS: Linux ,版本: 3.10.0-957.el7.x86 _ 64 ,Arch: AMD64 ,家族: UNIX:
安装JDK
下载JDK 8,下载地址:https://mirrors.tuna.tsinghua.
下载后将JDK解压到指定目录;
cd /mydata/java
tar-zxvf open JDK 8 u-JDK _ x64 _ Linux _ XXX . tar . gz
MV打开JDK8u-JDK _ x64 _ Linux _ XXX . tar . gzjdk 1.8在/etc/profile文件中添加环境变量JAVA_HOME。
vi /etc/profile
#在配置文件中添加
导出JAVA_HOME=/mydata/java/jdk1.8
导出路径=$PATH:$JAVA_HOME/bin
#使修改后的配置文件生效。/etc/profile
使用
。gitlab-ci.yml文件放在项目的根目录下,并定义两个任务。一个任务将应用程序代码打包成Jar包并复制到指定目录,另一个任务通过运行脚本run.sh将应用程序的Docker镜像打包并运行;
#包任务
构建作业:
阶段:构建
#指定标签,该标签将仅由具有该标签的runner执行。
标签:
-码头工人
脚本:
Maven套装
- mvn清洁包装
#将jar包、Dockerfile和运行脚本复制到指定目录。
-CP target/mall-tiny-git lab-1.0-snapshot . jar/my data/build/mall-tiny-git lab-1.0-snapshot . jar
-CP docker file/my data/build/docker file
- cp run.sh /mydata/build/run.sh
#部署任务
部署-作业:
阶段:部署
标签:
-码头工人
脚本:
#转到指定的目录并执行运行脚本。
- cd /mydata/build
- chmod x run.sh
-./run.sh这里值得一提的是,默认情况下,runner只会执行标签相同的作业。因为我们为作业和运行者设置了标签docker,所以我们可以在这里执行它们。如果不设置标签,需要设置runner的编辑器接口,允许runner执行一个作业;没有标签;
由于我们的Gitlab-runner使用ssh的执行器,它将登录到我们指定的服务器并执行。gitlab-ci.yml在此之前,它还会从git库获取代码,所以我们还是需要在服务器上修改主机文件。
vim /etc/hosts
192 . 168 . 7 . 134 git . macro Zheng . com下一步是将脚本提交到Git仓库。提交后,将在Project-CI/CD-Pipelines中找到正在执行的任务。
打开Pipeline的详细页面,可以发现我们定义的两个任务已经成功执行;
打开作业的详细界面,可以看到任务执行过程中输出的日志信息;
如果要手动执行管道而不是提交触发器,可以单击“管道”页面上的“运行管道”按钮。
操作成功后,您可以通过以下地址访问该项目:http://192.168.7.134:8088/swa。
总结
如果你用Gitlab做Git库,用它的CI/CD功能实现自动部署真的很好!安装一个轻量级的gitlab-runner并编写一个简单的。gitlab-ci.yml脚本文件。其实我们之前介绍过很多种自动化部署方案,比如Jenkins,Gogs Drone,Gitlab CI/CD,可以发现一个共同点,都离不开Linux的命令。所以想玩自动化部署,还是要先玩Linux命令!
相关视频教程推荐:Java视频教程以上是不使用Gitlab的CI/CD功能你会out的详细内容。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。