前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CI/CD流水线实战

CI/CD流水线实战

原创
作者头像
shigen
发布2023-08-15 20:49:47
3820
发布2023-08-15 20:49:47
举报
文章被收录于专栏:shigen的学习笔记

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

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

git

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

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

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

git原理

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

git配置

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

代码语言:shell
复制
cat ~/.gitconfig
git在项目中

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

查看配置信息
代码语言:shell
复制
git config --list
设置

通常用来配置name email

代码语言:shell
复制
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'

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

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

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

常用的命令

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

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

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

代码语言:shell
复制
git push -u origin master

gitlab

安装

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

代码语言:shell
复制
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流程
代码语言:shell
复制
本地代码---git---jenkins---harbor----docker(k8s)
部署

参考文章:Mac M1 部署 Jenkins

代码语言:shell
复制
brew install jenkins-lts
brew services restart jenkins-lts 
open 127.0.0.1:8080

获得jenkins的默认密码:

代码语言:shell
复制
cat /Users/xxxx/.jenkins/secrets/initialAdminPassword

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

配置
  • 中文的配置

参考文章:jenkins设置中文

  • 全局工具的配置

Java的路径:

代码语言:shell
复制
/opt/homebrew/opt/openjdk@17/bin
本地新建项目并上传gitee
代码语言:shell
复制
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电脑上的位置是这样的:

代码语言:shell
复制
/Users/xxxx/.jenkins/workspace/wx-develop
shell脚本

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

代码语言:shell
复制
#!/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"

具体的配置如下:

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

具体的日志是这样的:

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

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

pipline流水线

参考文章:pipeline流水线

以上就是shigen最近几天学习的成果,关于CICD流水线实战的全部内容。后期也会攻克k8s,期待进一步和大家分享。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • git
    • git原理
      • git配置
        • git在项目中
          • 查看配置信息
            • 设置
              • 查看分支和提交
                • 常用的命令
                • gitlab
                  • 安装
                  • Nexus3
                  • jenkins
                    • 容器化CI/CD流程
                      • 部署
                        • 配置
                          • 本地新建项目并上传gitee
                            • shell脚本
                              • pipline流水线
                              相关产品与服务
                              持续部署
                              CODING 持续部署(CODING Continuous Deployment,CODING-CD)用以管理软件在经过构建之后的发布和部署交付过程,可以无缝对接上游 Git 仓库、制品仓库实现全自动化部署,同时支持 Webhook 等外部对接能力,方便集成各种开发、运维工具。在配以合适的技术架构、运维工具的基础上,可以方便地实现蓝绿发布、灰度发布(金丝雀发布)、滚动发布、快速回滚等功能。
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档