本文将介绍GitLab CI/CD以及浅尝实践。
从开发新代码到部署新代码,几乎不需要人工干预,甚至根本不需要干预。该过程涉及到在每次小的迭代中就不断地构建、测试和部署代码更改,从而减少了基于已经存在bug或失败的先前版本开发新代码的机会。
GitLab CI/CD依赖于GitLab平台,所以我部署了一套GitLab CE用于测试。

所有Stages会按照顺序运行,one by one; 所有Stages完成后,构建任务(Pipeline)才会成功; 任何一个Stage失败,后面的Stages不会执行,该构建任务(Pipeline)失败。

相同Stage中的Jobs会并行执行; 相同Stage中的Jobs都执行成功时,该Stage才会成功; 如果任何一个Job失败,那么该Stage失败,即该构建任务(Pipeline)失败。

GitLab CI最大的作用是管理各个项目的构建状态,所以运行构建任务这种浪费资源的事情就交给 GitLab Runner 来做了。因为GitLab Runner可安装到不同的机器上,所以在构建任务运行期间不会影响到GitLab的性能,也可理解为是一种解耦设计。
rpm -i gitlab-runner_amd64.rpm
gitlab-runner register
sudo gitlab-runner register


Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com)
http://example.com:1234/
Please enter the gitlab-ci token for this runner
ASDFGHJKL123456
3. 输入描述
Please enter the gitlab-ci description for this runner
vm-centos7-runner
Please enter the gitlab-ci tags for this runner (comma separated):
my-runner
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
shell
stages:
- build
- deploy
cache:
paths:
- target
build-job:
tags:
- my-runner
stage: build
script:
- mvn -DskipTests=true clean package
artifacts:
name: "jar"
paths:
- target/demo-0.0.1-SNAPSHOT.jar
deploy-job:
tags:
- my-runner
stage: deploy
script:
- cp target/demo-0.0.1-SNAPSHOT.jar usr/local/demo/
- cd /usr/local/demo
- java -jar demo-0.0.1-SNAPSHOT.jar

@Slf4j
@RestController
public class HelloController {
@RequestMapping("/hello")
public String getHello(){
return "hello!";
}
}
修改编译java版本
<properties>
<java.version>1.8</java.version>
</properties>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.9.2</version>
<scope>test</scope>
</dependency>
$ git add .
$ git commit -m "pom-junit"
$ git push

GitLab CI/CD与GitLab平台紧密集成,CI/CD高效和稳定。 GitLab 提供与第三方服务的更多原生集成,包括云提供商、部署平台和监控工具。 GitLab 以其快速可靠的性能而闻名。它具有内置的缓存和并行处理功能,使开发人员能够快速高效地运行他们的管道。 GitLab 具有内置的安全功能,可确保代码在每个管道阶段都是安全的。它提供代码扫描、漏洞管理和容器扫描等功能,可帮助开发人员在将其投入生产之前识别和修复安全问题。

本文作者:史鸿杰(上海新炬中北团队)
本文来源:“IT那活儿”公众号





