GitLab开发工作流程

root
233
文章
0
评论
2021年9月14日19:17:55 评论 4479字阅读14分55秒

GitLab开发工作流程

特效分支开发

1.基于master主干分支创建版本分支 (release-1.1.1)

2.基于master分支创建特性分支(feature-1,feature-2.。。。)

3.特性分支开发完成后,将特性分支合并到版本分支

4.基于版本 分支进行发布(DEV,UAT,STAG,PROD);

5.版本分支合并到主干分支master;

6.基于master主干分支 创建一个标签tag;

GitLab开发工作流程

关闭gitlab默认的devops功能

设置--ci/cd

 

创建项目组

  • 这个组名最好和jenkins里的文件夹名称对应

配置group名称最好与项目组有关的,例如业务的简称等等。项目组的类型分为 Private、Internal、Public三种类型。

  • Private 私有类型(当group为私有类型,后面组下面的项目都是私有类型)
  • Public 公开类型

创建项目

  • 和jenkins项目名称要一致,规范

在这个页面可以创建一个空的项目、根据一个模板创建项目、导入一个已存在的项目(Gitlab、GitHub等系统)

创建一个 demo-hello-service 项目,私有类型。

将代码导入项目

在执行git 客户端命令之前,可以先设置当前的用户信息,名称和邮箱。(可选、规范化)

git config --global user.name "Administrator"
git config --global user.email "admin@example.com"

下载代码库,并在代码库中创建文件提交。

### 下载项目
# git clone http://192.168.1.200/devops/demo-hello-service.git
Cloning into 'demo-hello-service'...
Username for 'http://192.168.1.200': root
Password for 'http://root@192.168.1.200':
warning: You appear to have cloned an empty repository.

### 查看项目
# ls | grep demo
demo-hello-service
demo-java-service
microservicecicd-demo-service
spinnaker-canary-demo

### 进入项目中
#### 创建文件
# cd demo-hello-service/
# echo devopsdevops >> jenkins.txt
# ls
jenkins.txt


### 提交文件到远程仓库
# git add jenkins.txt
# git commit -m "add jenkins.txt "
[master (root-commit) d74d541] add jenkins.txt
 1 file changed, 1 insertion(+)
 create mode 100644 jenkins.txt
[root@zeyang-nuc-service demo-hello-service]# git push origin master
Username for 'http://192.168.1.200': root
Password for 'http://root@192.168.1.200':
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 221 bytes | 221.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To http://192.168.1.200/devops/demo-hello-service.git
 * [new branch]      master -> master

扩展:将本地已存在的代码提交到远程仓库

cd existing_folder
git init
git remote add origin http://192.168.1.200/devops/demo-hello-service.git
git add .
git commit -m "Initial commit"
git push -u origin master

代码提交后的效果:发现 jenkins.txt 文件已经从本地同步到了远程的gitlab仓库中了。

拉取特性分支

为什么要拉取分支? 一个分支不够吗? 一般我们使用 master 主干分支存放最新的能够发布生产的代码,而单独创建一些特性分支来做项目需求任务的开发分支。 这样的好处是防止主干分支污染,对分支起到了保护的作用。

下面进入 demo-hello-service 项目主页,然后基于主干分支master,创建特性分支feature-1-DEV。操作如下:

特性分支开发与提交

查看当前本地分支,发现没有刚刚远程创建的 feature-1-DEV 分支。

[root@zeyang-nuc-service demo-hello-service]# git branch -a
* master
  remotes/origin/master

`git pull` 同步远程仓库所做的更新到本地, 这样远程的feature-1-DEV 分支就同步到了本地。然后我们使用 git checkout feature-1-DEV 切换到特性分支。

root@zeyang-nuc-service demo-hello-service]# git pull
Username for 'http://192.168.1.200': root
Password for 'http://root@192.168.1.200':
From http://192.168.1.200/devops/demo-hello-service
 * [new branch]      feature-1-DEV -> origin/feature-1-DEV
Already up to date.
[root@zeyang-nuc-service demo-hello-service]# git branch -a
* master
  remotes/origin/feature-1-DEV
  remotes/origin/master
[root@zeyang-nuc-service demo-hello-service]# git checkout feature-1-DEV
Branch 'feature-1-DEV' set up to track remote branch 'feature-1-DEV' from 'origin'.
Switched to a new branch 'feature-1-DEV'
[root@zeyang-nuc-service demo-hello-service]# git branch -a
* feature-1-DEV
  master
  remotes/origin/feature-1-DEV
  remotes/origin/master

我们更改了Jenkins.txt文件内容,并创建一个新的version文件,然后将更改内容提交到远程仓库。

### 更改文件内容
[root@zeyang-nuc-service demo-hello-service]# ls
jenkins.txt
[root@zeyang-nuc-service demo-hello-service]# vi jenkins.txt
[root@zeyang-nuc-service demo-hello-service]# cat jenkins.txt
pipeline {
   agent { label "master"}

   stages{
	stage("Build"){
		steps {
			script {
				echo "hello"
			}
		}
	}
  }
}
[root@zeyang-nuc-service demo-hello-service]# echo 1.1.1 >version
[root@zeyang-nuc-service demo-hello-service]# ls
jenkins.txt  version


### 提交到远程仓库分支
[root@zeyang-nuc-service demo-hello-service]# git add jenkins.txt version
[root@zeyang-nuc-service demo-hello-service]# git commit -m "add pipeline "
[feature-1-DEV 97ae23e] add pipeline
 2 files changed, 14 insertions(+), 1 deletion(-)
 create mode 100644 version
 
 [root@zeyang-nuc-service demo-hello-service]# git push origin feature-1-DEV
Username for 'http://192.168.1.200': root
Password for 'http://root@192.168.1.200':
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 380 bytes | 380.00 KiB/s, done.
Total 4 (delta 0), reused 0 (delta 0)
remote:
remote: To create a merge request for feature-1-DEV, visit:
remote:   http://192.168.1.200/devops/demo-hello-service/-/merge_requests/new?merge_request%5Bsource_branch%5D=feature-1-DEV
remote:
To http://192.168.1.200/devops/demo-hello-service.git
   d74d541..97ae23e  feature-1-DEV -> feature-1-DEV

这样我们就把本地的特性分支开发的代码提交到了远程特性分支中了, 接下来对应该对该特性分支进行测试验证,没问题后合并到主干分支。

特性分支合并操作

将特性分支 feature-1-DEV 代码合并到主干分支master  Merge Request。

在这个页面,选择源分支和目标分支。

在这个页面:

  • 1 指定合并请求的标题
  • 2 描述信息,一般都是变更信息
  • 3 指定主管进行审核(最终该用户决定是否合并)
  • 4 指定进行代码审查的同事
  • 5 合并成功后删除源分支(最后很定要删除源分支,可以先保留一个版本后再删除,此处最好取消勾选)

提交合并后,由管理员审查进行合并。

合并后的效果: 特性分支的更改已经同步到了主干分支。

到此一个基本的项目开发提交代码过程就已经完成了。(多熟悉一下这个过程)

 给合并的版本分支打上一个tag

 

 

继续阅读
weinxin
我的微信
这是我的微信扫一扫
  • 文本由 发表于 2021年9月14日19:17:55
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
GitLab CI语法 [cache|artifacts|dependencies] Gitlab

GitLab CI语法 [cache|artifacts|dependencies]

GitLab CI语法   cache 【缓存文件或者目录,不建议缓存制品】 用来指定需要在job之间缓存的文件或目录。只能使用该项目工作空间内的路径。不要使用缓存在阶段之间传递工件,因为缓...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: