CICD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1.jenkins服务的部署 2.gitlab的服务的部署 3.仓库连接方式和网址的连接方式 4.构建的方式,普通构建和流水线构建 5.自动化流程的构建,钩子wevhook的搭建 1.publish-over-ssh 2.git-plugin 3.Kubernetes CLI Plugin 4.Generic Webhook Trigger 5.git lab 6.Parameterized Trigger 7.Git Parameter 8.Extended Choice Parameter 9.Pipeline 10.gitlab Hook plugin 11.gitlab plugin
1.jenkins服务的部署 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1.上传jenkins2.375.war安装包 2.运行Jenkinsnohup java -jar /root/jenkins2.375.3.war --httpPort=8080 -Djava.awt.headless=true & 3.查看日志cat nohup.out 4.打开浏览器进入链接 10.0.9.247:8080 5.填写初始密码,激活系统 找到页面对应密码输入 6.安装推荐插件 7.设置初始用户和密码 8.进入系统,安装完成
1.出现模板错误
https://updates.jenkins.io/download/plugins/workflow-basic-steps/
2.下载插件
3.点击进入导入插件
4.下载导入的插件
选择文件导入,让他加载重启登录就可以了
如果这里有重新加载登录,就点一下,就没问题了
2.gitlab的服务部署 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 安装gitlab 2C/4G 1. 关闭seliux、firewalld、iptables 2. !!!停止其他服务 80 3306 3. 配置yum源 1.wget http://10.3.148.241/gz2204/soft/gitlab-ce-15.8.0-ce.0.el7.x86_64.rpm -- 下载gitlab rpm包 2.yum localinstall -y gitlab-ce-15.8.0-ce.0.el7.x86_64.rpm -- 安装gitlab软件包 3.head -1 /opt/gitlab/version-manifest.txt -- 查看gitlab版本 4.修改配置文件 external_url 'http://192.168.160.129' -- 修改成本地的ip 5.初始化 Gitlab (第一次使用配置时间较长) gitlab-ctl reconfigure Username: root Password: You didn't opt-in to print initial root password to STDOUT. Password stored to /etc/gitlab/initial_root_password. This file will be cleaned up in first reconfigure run after 24 hours. # 这个密码将在24小时消失,所以得赶快改密码 NOTE: Because these credentials might be present in your log files in plain text, it is highly recommended to reset the password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password. gitlab Reconfigured! 6.启动 Gitlab 服务 gitlab-ctl start 7.登录gitlab web页面(192.168.168.129) user: root pass: 查看改文件 # cat /etc/gitlab/initial_root_password 因为系统给出的初始化密码只能使用24小时,所以需要修改密码 # web界面 修改密码--> 用户设置 --->密码 Xiaocai@123 8.如果忘记密码 # 打开控制台 gitlab-rails console -e production # 找到用户,输入密码,确认密码,保存 user = User.find_by(username: ' root') -- 修改的用户 user.password = ' Xiaocai@123' -- 修改的密码 user.password_confirmation = ' Xiaocai@123' -- 再次确认密码 user.save! -- 保存密码 9.gitlab的常用命令 gitlab命令管理 gitlab-ctl start # 启动所有 gitlab 组件; gitlab-ctl stop # 停止所有 gitlab 组件; gitlab-ctl restart # 重启所有 gitlab 组件; gitlab-ctl status # 查看服务状态; gitlab-ctl reconfigure # 重新配置服务; vim /etc/gitlab/gitlab.rb # 修改默认的配置文件; gitlab-ctl tail # 查看日志; git push --force origin master # 改变默认分支上传 git remote set-url origin git@10.0.9.234:jenkins/test.git # 另一种连接远程仓库的方法 ssh-keygen -- 生成密钥
2.1–git本地仓库的搭建和连接 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1.yum -y install git 2.配置git git config --global user.name "username" -- 配置git使用用户 git config --global user.name xiaocai git config --global user.email "email@mail.com" -- 配置git使用邮箱 git config --global color.ui true -- 语法高亮 git config --list -- 查看全局配置cat ~/.gitconfig -- 查看全局配置 代码仓库 [初始化之后目录] 本地仓库[git] 远程仓库[gitlab] 本地仓库工作区分为三种 [目录] 工作[编辑] 、 暂存[追踪]、本地仓库
2.2–本地仓库(目录)的使用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 1.创建目录mkdir -pv /code/gzcloud cd /code/gzcloud git init git status 2.工作区: touch 、cp 、mv 、mkdir touch index.html 3.暂存区 git add . 4.本地仓库 git commit -m '提交信息说明' git commit -m 'filename index.html id:1103' 5.查看本地仓库 git log git reflog git log --pretty=oneline 6.代码回退 git reset --hard commit-id git reset --hard 4397d533 git reset --hard HEAD^ //默认回滚到上一个版本 [git log 中的版本关系] git reset --hard HEAD^^ //默认回滚到上两个版本 git reset --hard HEAD^^^ //默认回滚到上三个版本 git reset --hard HEAD^^^^ //默认回滚到上四个版本 删除工作区的内容 删除暂存区的内容 暂存区文件重命名
2.3–git标签和分支的使用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 git tag git tag tagname git tag tagname -m "标签的详细信息" git show tagname git tag -d tagname 对比数据 git diff可以对比当前文件与仓库已保存文件的区别,知道了对README作了什么修改 git diff --name-only HEAD HEAD^ git diff --name-only head_id head_id2 git stash使用 前提:必须是处于git下的文件,未add到git的文件无法使用。在暂存区的内容进行保存进度 git stash //保存当前工作进度 git stash save message // message为此次进度保存的说明。 git stash list //查看所有的进度 git stash pop stash@{num} //恢复工作进度 stash恢复后被删除 git stash apply stash@{num} //恢复工作进度 stash恢复后依旧存在 git stash drop stash@{num} //删除某个工作进度 git stash clear //清空所有的保存 1.查看分支 git branch 2.创建分支 git branch branch_name git checkout -b branch_name 3.切换分支 git checkout branch_name 4.删除分支 git branch --no-merged git branch -d testing git branch -D gz2204 git merge branch_name(分支名称) 5.示例 1.1 创建并切换到分支gz2204 1.2 查看当前所处分支 * gz2204 gzcloud master 1.3 编辑文件 1.4 添加到暂存区 1.5 提交到本地仓库[仅在分支gz2204] 1.6 查看日志 1.7 切回到master分支 1.8查看日志,并没有发现分支gz2204的提交 git log --pretty=oneline 1.9把gz2204分支的提交合并到当前分支 2.0 查看日志,发现分支gz2204的提交已经到了master分支
3.仓库连接方式和网址的连接方式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 git switch -m name(main) 1.创建一个公有的群组和项目, 2.ssh-keygen 3.密钥认证:cat /root/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoRyov+SeAfemEL2w/MQdWVtsBZmBEgRWKr4dwCJF4EzurHcAEhtSWJO3L/DxqMoVNzXkWe3BZry3RXphcFA4vcg+o8zzUrv384y9SA1Z92M42F0DpNVmQx3QqQxN6GDX6OXVgNmA1a+KFhxb75ijVA/NxX0F0Na1IWE1qItBCNaMR8xrYsmkjeoksQ2ukAmvLJv3WA347+ypdVcC23Ggkzznmh9UkmPdEulz9gkpObHQXK8/XG1lZvbOMp5OE58zL5WHM210HmOsZMjp+n9MDBtr9MZXajTcGDrYQZzcoE2BZMkapwaCU2HZzb/P/denF9pTII9EQLqXU8sXFssOH root@localhost.localdomain 5.git clone git@192.168.160.129:test /web1.git cd /web1 git remote set-url origin git@10.0.9.234:jenkins/test.git 6.vim README.md -- 部署简单项目,添加到本地仓库 ``` centos7.6 nginx:1.16 java1.8+ mysql5.6+ ``` ``` yum -y install nginx ``` :Wq 7.git push git branch git push -u origin main 8.git remote -v origin git@192.168.160.129:test /web1.git (fetch) origin git@192.168.160.129:test /web1.git (push) 9.git remote add origin git@192.168.160.129:test /web3.git 10.git push -u origin --all git push -u origin --tags 11.git pull 12.创建新的用户,修改密码,并开启另一台机器下载git branch master dev user admin dev [group:gz2204] [角色:developer] 129 128 13.其他机器拷贝远程仓库 git clone git@192.168.160.129:test /web3.git -- 其他机器拷贝远程cd web3/ git checkout -b dev git config --global user.name dev -- 创建新的角色 git config --global user.email "dev@xiaocai.com" vim test.txt git add . git commit -m 'fielname test' 11.创建分支上传远程 git branch -- 查看当前分支,在main主分支的前提下创建分支 * dev main git push 12.合并分支 需要管理员进行批准合并,并是否保留分支
3.1网址连接 1 2 3 4 5 6 7 8 9 1.配置http凭证 这里配置的是gitlab的用户名和密码-作为Jenkins的凭证 点击生产流水线语句 1.git拉取gitlab的语句类型为这个 2.gitlab的网址 3.gitlab的用户凭证
4.构建的方式,普通构建和流水线构建 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 第一张图片:创建流水线 第二张图片:点击This project is parameterized。添加参数,选择String Parameter,填入变量参数信息 第三张图片:同第二张 第三张图片:选择流水线 Pipeline script,并将变量参数添加到流水线中 流水线实例: pipeline { agent any stages { stage('pull code' ) { steps { checkout scmGit(branches: [[name: '*/${branch}' ]], extensions: [], userRemoteConfigs: [[credentialsId: '2' , url: 'https://ip地址/framework/仓库地址' ]]) } } stage('build projeck' ) { steps { sh ' cd /root/.jenkins/workspace/jenkins项目目录/ && npm install ' sh ' cd /root/.jenkins/workspace/jenkins项目目录/ && npm run build:test ' sh ' ssh root@${ip} " ls /etc/nginx/html/构建后项目的目录/ && rm -rf /etc/nginx/html/构建后项目的目录/ || ls " ' sh ' scp -r /root/.jenkins/workspace/jenkins项目目录/构建后项目的目录/ ${ip}:/etc/nginx/html/' } } } }
5.自动化流程的构建,钩子wevhook的搭建 1 2 3 4 5 6 7 8 第一张图片:打开gitlab的设置 第二张图片:打开网络设置,允许访问 第三张图片:Build when a change is pushed to GitLab. GitLab webhook URL:进行自动构建 第四张图片:选择Poll,scm 第五张图片:选择gitlab的某一个项目设置,将第三张图片jenkins的项目网址粘贴gitlab中,默认选项然后添加,即可成功 第六张图片:添加信息如下 第七张图片:Dashboard-》Manage Jenkins-》Configure System,找到gitlab的设置,取消gitlab的身份验证 第八张图片:回到gitlab点击test 测试,发现测试成功,自动化流程构建完成,至此cicd流程全部解释