CI/CD流水线实战

这篇具有很好参考价值的文章主要介绍了CI/CD流水线实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

不知道为什么,现在什么技术都想学,因为我觉得我遇到了技术的壁垒,大的项目接触不到,做的项目一个字辣*。所以,整个人心浮气躁,我已经得通过每天的骑行和长跑缓解这种浮躁了。一个周末,我再次宅在了家里,学习了一下CICD

先分享一下shigen的学习视频资源:CICD流水线实战

git

分布式版本控制器。gitlab可以创建私人的仓库,github私有仓库需要付费。

SVN 不推荐!不是喷它,技术的革新,新技术会解决老技术的各种问题。

由于SVN的集中式架构、对离线工作支持较差、分支和合并复杂以及缺乏现代化功能等原因,它已经不再被推荐作为主要的版本控制系统。 目前,Git已成为广泛使用的分布式版本控制系统,并且具有更强大的功能和更好的性能。——来自chatGPT的总结

git原理

再多的概念都没有一张图来的实在和清晰:

CI/CD流水线实战,ci/cd,spring boot,docker,服务器,jenkins

git配置

~/.gitconfig会保存git的全局配置,可以在这里修改git用户的信息,如name email

cat ~/.gitconfig
git在项目中

在项目的根路径下也会存在.git文件夹,里边也有一个config文件,存储的是当前的项目配置。

CI/CD流水线实战,ci/cd,spring boot,docker,服务器,jenkins

查看配置信息
git config --list
设置

通常用来配置name email

git config set name=shigen
查看分支和提交

我本地配置了gitlog, 具体的配置shigen分享在下边啦。

gitlog='git log --graph --abbrev-commit --decorate --format=format:'\''%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'\'\''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset)'\'' --all'

执行命令,就是这样的,是不是很清晰明了:

CI/CD流水线实战,ci/cd,spring boot,docker,服务器,jenkins

shigen更推荐tig。直接在mac上执行brew install tig即可。

CI/CD流水线实战,ci/cd,spring boot,docker,服务器,jenkins

效果非常的炫酷、友好,可以直接在控制台查看文件的改动。

CI/CD流水线实战,ci/cd,spring boot,docker,服务器,jenkins

常用的命令

虽然图像化的操作工具如我常用的idea ugit等都能很好的满足日常所需,但是:底层的原理还是得了解一下。想想,万一只有终端操作咋办。

  • 初始化
git init
  • 文件添加到暂存
git add xxx
  • 提交
git commit -m 'msg'
  • 查看日志
git log
  • 暂存区状态
git status
  • 当前文件与上次提交的差别
git diff
  • 回到某个版本
git reset --hard xxxx
  • 从本地push到主分支

一般的公司,master分支可是不允许直接push代码的,这里只是一个例子哈。

git push -u origin master

gitlab

安装

发现直接安装会有问题,如:找不到镜像源。尝试使用docker安装,发现云服务器的内存不够用,安装的脚本如下:

mkdir -p etc/gitlab var/log/gitlab /var/opt/gitlab 
docker run -d -p 81:80 -p 10011:443 -p 10012:22  \
    --restart no \
    --name gitlab \
    -v $PWD/etc/gitlab:/etc/gitlab \
    -v $PWD/var/log/gitlab:/var/log/gitlab \
    -v $PWD/var/opt/gitlab:/var/opt/gitlab \
    --privileged=true \
    gitlab/gitlab-ce

echo '访问81端口'

参考文章:Gitlab----使用Docker方式安装部署Gitlab

感兴趣的可以看看在M1芯片的电脑上如何的安装:如何在M1的Mac上搭建gitlab

特色:添加用户、使用邮箱、代码合并

Nexus3

maven的仓库,私服。直接下载、解压、启动。和docker的harbor类似。

jenkins

  • 自动的构建
  • 易于安装和配置
  • 分布式构建,多台计算机一起构建
  • 支持的插件很多
容器化CI/CD流程
本地代码---git---jenkins---harbor----docker(k8s)
部署

参考文章:Mac M1 部署 Jenkins

brew install jenkins-lts
brew services restart jenkins-lts 
open 127.0.0.1:8080

获得jenkins的默认密码:

cat /Users/xxxx/.jenkins/secrets/initialAdminPassword

按照教程下载推荐的插件、创建账户、使用默认的URL即可。

配置
  • 中文的配置

参考文章:jenkins设置中文

  • 全局工具的配置

CI/CD流水线实战,ci/cd,spring boot,docker,服务器,jenkins

Java的路径:

/opt/homebrew/opt/openjdk@17/bin
  • 权限的划分,需要使用到插件
  • 部署的过程推荐文章:Mac M1部署jenkins
本地新建项目并上传gitee
git commit -m "first commit"
git remote add origin https://gitee.com/shigen/wx-develop.git
git push -u origin "master"

jenkins的项目面板新建项目,具体的过程参见:jenkins+gitee实现代码自动化部署

在脚本的实现部分,我手写了一个,上传到我自己的harbor。这里仅作为一个测试使用,具体的实际开发、应用场景都是类似。

首先需要知道的是我拉取的代码的位置,shigen电脑上的位置是这样的:

/Users/xxxx/.jenkins/workspace/wx-develop
shell脚本

shigen的脚本是这样的。首先就是通过maven对代码进行编译和打包,之后用docker将java 服务的jar打包进容器,生成的容器推到harbor,本地运行。

#!/bin/bash
# jenkins shell script to deploy the java project

echo '------start deployment--------'
echo "java -version && mvn -version"

mvn clean install -DskipTests

DATE="$(date +%y%m%d-%H%M%S)"
APP_NAME="wx-xxxxx"
APP_PORT="80"
HARBOR_DOMIAN="xxxxxxxx"

TAG="$APP_NAME:$DATE"
docker build -t $TAG -f Dockerfile .

docker login $HARBOR_DOMIAN

NEW_TAG="$HARBOR_DOMIAN/xxxx/$TAG"
docker tag $TAG $NEW_TAG
docker push $NEW_TAG
echo "$TAG uploaded successfully"

docker run -d --name $APP_NAME-$DATE -p $APP_PORT:$APP_PORT $NEW_TAG

echo "Successfully started"

具体的配置如下:

CI/CD流水线实战,ci/cd,spring boot,docker,服务器,jenkins

点击build now会出现一个新的任务:

CI/CD流水线实战,ci/cd,spring boot,docker,服务器,jenkins

具体的日志是这样的:

CI/CD流水线实战,ci/cd,spring boot,docker,服务器,jenkins

本地和harbor上也确实有这个服务和镜像的存在,这里就不再做进一步的验证了。

最后,总结一下jenkins的自动化流程的步骤:

CI/CD流水线实战,ci/cd,spring boot,docker,服务器,jenkins

pipline流水线

参考文章:pipeline流水线

以上就是shigen最近几天学习的成果,关于CICD流水线实战的全部内容。后期也会攻克k8s,期待进一步和大家分享。文章来源地址https://www.toymoban.com/news/detail-650394.html

到了这里,关于CI/CD流水线实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • devops-5:从0开始构建一条完成的CI CD流水线

    前文中已经讲述了静态、动态增加agent节点,以动态的k8s cloud为例,下面就以Maven构建Java程序为例,开始构建出一条完整的CI CD流水线。 实现功能目标: 1.分别可以根据分支和tag从源码仓库clone代码 2.拿到源码后开始编译 3.构建image,并push到镜像仓库 4.部署到对应k8s集群 5.部署

    2023年04月20日
    浏览(42)
  • 在 CI/CD流水线中运行自动化单元测试的4个原因

    目录 什么是单元测试? C#中的单元测试示例 我需要在CI/CD 流水线中运行自动化测试吗? 开发人员代码验证反馈循环 预验证 步步为营 减少“另一个开发人员写了这段代码”的问题 单元测试 什么是单元测试? 单元测试是一小段代码,用于测试应用程序编写的代码的逻辑。单

    2024年02月16日
    浏览(56)
  • 你以为搞个流水线每天跑,团队就在使用CI/CD实践了?

    在实践中,很多团队对于DevOps 流水线没有很透彻的理解,要不就创建一大堆流水线,要不就一个流水线通吃。实际上,流水线的设计和写代码一样,需要基于“业务场景”进行一定的设计编排,特别是很多通过“开源工具”搭建的流水线,更需要如此(商业的一体化平台大部

    2024年02月08日
    浏览(41)
  • 【业务功能115】微服务-springcloud-springboot-Kubernetes-k8s集群-Kubesphere实现DevOps流水线-CI/CD-SonarQube- Jenkins

    dev 怎么开发 ops 怎么运维 参考项目链接:https://github.com/kubesphere/devops-maven-sample 持续集成是指软件个人的部分向软件整体部分交付,频繁进行集成以便更快地发现其中错误。 CI需要具备这些: 全面的自动化测试 这是实践持续集成持续部署的基础,同时,选择合适的自动化测

    2024年02月04日
    浏览(57)
  • [Gitlab CI] 自动取消旧流水线

    当某一分支开启 Merge Request 后只要提交一次 commit 就会自动创建一个新的流水线,此时之前的 Pipeline 不会被取消,经过下面的设置后可以实现自动取消旧流水线的功能。 ❗️通过提交(commit)触发的同一分支流水线可以自动冗余取消,但是通过手动触发的同一分支流水线不会

    2024年03月12日
    浏览(60)
  • CI-持续集成 — 软件工业“流水线”技术实现

    持续集成(Continuous Integration)是一种软件开发实践。在本系列文章的前一章节已经对其背景及理论体系进行了介绍。本小节则承接前面提出的理论构想进行具体的技术实现。 《Google软件测试之道》: \\\"每天,Google都要测试和发布数百万个源文件,亿万行代码。数以亿计的构建

    2024年02月12日
    浏览(45)
  • 【测试】自动化测试平台MeterSphere与CI流水线集成配置步骤

    登录 MeterSphere 控制台。访问个人信息下的 API Keys,点击新建来创建 API Keys API Keys 创建好之后,可以进行查看、复制Access Key。 点击 Secret Key 下的显示并复制 Secret Key 在 Jenkins 上安装 MeterSphere 提供的 Jenkins 插件。Jenkins 插件下载地址:https://github.com/metersphere/jenkins-plugin/release

    2023年04月20日
    浏览(35)
  • AWS CI/CD之一:CodeBuild配置(Spring版)

    最近需要在AWS国际云上面配置CI/CD工作流,这里以Spring Boot Java项目为例子进行CodeBuild构建。AWS云的CI/CD工作流主要包括Code Commit,Code Build,Code Deploy, Code Pipeline,主要包括这4个AWS服务。 找到AWS CodeBuild主页,点击创建构建项目,如下图: 设置CodeBuild项目名称,设置源代码来源和

    2024年01月18日
    浏览(33)
  • CI/CD工具中的CI和CD的含义

    CI/CD 是现代软件开发方法中广泛使用的一种方法。其中,CI 代表持续集成(Continuous Integration),CD 则有两层含义,一是持续交付(Continuous Delivery),二是持续部署(Continuous Deployment)。下面是这些术语的详细解释: 持续集成(Continuous Integration):CI 是一种开发实践,开发人

    2024年02月07日
    浏览(32)
  • 【基于 GitLab 的 CI/CD 实践】01、GitLab CI/CD 基础概念

    目录 一、为什么要做 CI/CD ? 1.1 背景-传统的应用开发发布模式 问题 1.2 持续集成与持续交付 持续集成(CI) 持续交付(CD) 持续部署(CD) 1.3 CI/CD 的价值体现 1.4 推荐常用的 CI/CD 工具 Jenkins GitLab 二、GitLab CI/CD 功能简介 2.1 GitLab 内置持续集成功能 持续集成(CI) 连续交付(

    2024年02月16日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包