前言:github是自己许久许久之前学习的笔记。github和gitlab其实大同小异,因为很久没接触了github,所以gitlab搭的也吃力,也遇到一些问题,然后记录下来了,gitlab那节也是最近自己学习cicd的时候做的笔记。github相当于是公网的仓库,gitlab是自己本地的仓库。
github
下面的是创建自己的仓库
下面的是配置Ubuntu和GitHub进行连接
现在Ubuntu下进行如下操作:
详见《git使用教程》中的 “注册账户以及创建仓库”这一个部分
然后就在Ubuntu下配置Git
记得在下面的位置使用这个命令,方便得到key命令,方便拷贝和粘贴
拷贝完之后(也就是在Ubuntu下配置完),来到github网站的下面位置,进行如下步骤,可以进行连接了。。
验证连接成功的步骤,在使用教程有写到。。。。
Git云协作步骤:
1、初始化本地工作空间
git init
2、获取源码(得到一个文件夹):
git clone https://github.com/123leechm/whoami.git
3、修改工作空间文件
cd repositoryname(这是自己下载的文件夹名)
vi test.c 写自己的文件
4、添加到本地索引(二选一)
git add . (添加当前目录下所有文件,我们也可以指定添加 把 . 变成 文件
名,如下的)
git add filename (添加指定文件)
5、提交代码到本地仓库
git commit -m "修改的文件信息--随便写,就是解释自己添加的是啥"
6、推送到远程(二选一):
git push origin master (这个master就是下面的截图所示)
git push origin 分支名字(master ---features_x 是自己命名的)
(上面两个命令是一样的)
Username for 'https://github.com': 自己的名字 123leechm
Password for 'https://123leechm@github.com': 自己密码 liqi********
分支操作
1、创建分支:
git branch develop(分支的名字)
2、查询分支:
git branch
3、切换分支:
git checkout 分支名称(master 等等)
4、添加到本地索引
写自己的文件
git add . (添加当前目录下所有文件)
git add filename (添加指定文件)
5、提交代码到本地仓库
git commit -m "修改的文件信息--随便写"
6、推送到远程:
git push origin 分支名字(master ---features_x 自己命名)
拉取远程的代码-同步更新本地:
git pull
下面是显示结果:
下面的是步骤:
合并分支
首先切换到master分支 ------> git checkout master
git merge 分支名字
然后再拉取远程的代码-同步更新本地:
git pull
gitlab
gitlab-ce仓库搭建
这里我们使用docker的方式搭建,跑gitlab对机器还有点要求,我的虚拟机是4C8G,我刚开始用的是2C4G,跑着跑着就死机了。
docker run --detach --hostname master1.gitlab.cn --publish 443:443 --publish 80:80 --publish 222:22 --name gitlab --restart always --volume /srv/gitlab/config:/etc/gitlab --volume /srv/gitlab/logs:/var/log/gitlab --volume /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest
像这里的话,首次登陆会要求更改密码,但是我在实际搭建中,直接让我输入账号密码,可能是测试机器当时先用源码包安装过,环境有影响,如果你跟我一样,那么接下来需要手动更改一下密码,重置root密码,首先docker exec -it xxxx bash 进入容器,然后按照下面的步骤即可
root@master1:/# gitlab-rails console
irb(main):012:0> user=User.where(id:1).first
=> #<User id:1 @root>
irb(main):013:0> user.password='qwe123qwe'
=> "qwe123qwe"
irb(main):014:0> fd9302e48810^C
irb(main):014:0> user.password_confirmation='qwe123qwe'
=> "qwe123qwe"
irb(main):015:0> user.save!
Enqueued ActionMailer::MailDeliveryJob (Job ID: 094eafb0-2e1b-4c90-8dab-2ca86a581453) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", {:args=>[#<GlobalID:0x00007f26251bce50 @uri=#<URI::GID gid://gitlab/User/1>>]}
=> true
irb(main):016:0> exit
root@master1:/#
gitlab-runner安装注册
安装gitlab runner
docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
注册gitlab runner
docker run --rm -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \
--non-interactive \
--executor "docker" \
--docker-image alpine:latest \
--url "http://192.168.64.150/" \
--registration-token "vF8S_QjRQH8NxvN2GryZ" \
--description "first-register-runner" \
--tag-list "test-cicd1,dockercicd1" \
--run-untagged="true" \
--locked="false" \
--access-level="not_protected"
url和token获取如下截图
上传代码到gitlab
这里其实跟上传到github大同小异,这里我着重记录不一样或者是我搭建过程中遇到的问题
添加SSH KEY之后,可以使用ssh -T git@master1.gitlab.cn命令连接一下仓库,要求输入账号密码表示秘钥可以连接到远程仓库,若有报错可以看看/var/log/secure这个log信息,像我刚开始的时候一直报错,原来是使用gitlab部署需要设置一下git这个账户的密码,这个就很坑。
然后就可以创建项目了
接下来导入项目仓库到宿主机,通过HTTP啊
第一步检查仓库(后期熟悉了直接clone导入即可)
[root@master1 ~]# git clone http://master1.gitlab.cn/root/gitlab_ci_demo.git
正克隆到 'gitlab_ci_demo'...
warning: 您似乎克隆了一个空版本库。
[root@master1 ~]# cd gitlab_ci_demo/
[root@master1 gitlab_ci_demo]# git status
# 位于分支 master
#
# 初始提交
#
无文件要提交(创建/拷贝文件并使用 "git add" 建立跟踪)
[root@master1 gitlab_ci_demo]# git remote -v
origin http://master1.gitlab.cn/root/gitlab_ci_demo.git (fetch)
origin http://master1.gitlab.cn/root/gitlab_ci_demo.git (push)
[root@master1 gitlab_ci_demo]#
因为这个是我们新建的仓库,所以里面啥都没有,此时我们想要把我们的代码加入进来,可以这样操作。
第二步 拷贝代码到仓库目录
我们的源码在demo目录下,把demo下面的代码拷贝到我们clone下来的目录下
[root@master1 gitlab_ci_demo]# cp ../demo/* . -af
[root@master1 gitlab_ci_demo]# cp ../demo/.gitlab-ci.yml . -af
[root@master1 gitlab_ci_demo]# ls -al
总用量 24
drwxr-xr-x 4 root root 112 7月 26 17:27 .
dr-xr-x---. 27 root root 4096 7月 26 17:25 ..
-rw-r--r-- 1 root root 969 7月 26 16:50 build.gradle
drwxr-xr-x 7 root root 119 7月 26 17:26 .git
-rw-r--r-- 1 root root 1544 7月 26 16:50 .gitlab-ci.yml
-rw-r--r-- 1 root root 11 7月 26 16:50 README.md
-rw-r--r-- 1 root root 3551 7月 26 16:50 sonarqube.gradle
drwxr-xr-x 4 root root 30 7月 26 16:50 src
[root@master1 gitlab_ci_demo]#
第三步 得到我们的代码之后,接下来就是push到远程仓库了
[root@master1 gitlab_ci_demo]# git init
重新初始化现存的 Git 版本库于 /root/gitlab_ci_demo/.git/
[root@master1 gitlab_ci_demo]# git status
# 位于分支 master
#
# 初始提交
#
# 未跟踪的文件:
# (使用 "git add <file>..." 以包含要提交的内容)
#
# .gitlab-ci.yml
# README.md
# build.gradle
# sonarqube.gradle
# src/
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
[root@master1 gitlab_ci_demo]# git add .
[root@master1 gitlab_ci_demo]# git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
# (使用 "git rm --cached <file>..." 撤出暂存区)
#
# 新文件: .gitlab-ci.yml
# 新文件: README.md
# 新文件: build.gradle
# 新文件: sonarqube.gradle
# 新文件: src/main/java/org/virtuex/GitlabCiCdSpringBoot.java
# 新文件: src/main/java/org/virtuex/controler/HelloController.java
# 新文件: src/main/java/org/virtuex/controler/StudentController.java
# 新文件: src/main/java/org/virtuex/dao/StudentRepository.java
# 新文件: src/main/java/org/virtuex/pojo/Student.java
# 新文件: src/main/java/org/virtuex/service/IStudentService.java
# 新文件: src/main/java/org/virtuex/service/impl/StudentServiceImpl.java
# 新文件: src/main/resources/application-test.yml
# 新文件: src/main/resources/application.yml
# 新文件: src/test/bin/create_database.sh
# 新文件: src/test/java/org/virtuex/GitlabCiCdSpringBootTest.java
# 新文件: src/test/java/org/virtuex/service/impl/StudentServiceImplTest.java
#
[root@master1 gitlab_ci_demo]# git commit -m "first commit"
[master(根提交) 5bafa52] first commit
16 files changed, 444 insertions(+)
create mode 100644 .gitlab-ci.yml
create mode 100644 README.md
create mode 100644 build.gradle
create mode 100644 sonarqube.gradle
create mode 100644 src/main/java/org/virtuex/GitlabCiCdSpringBoot.java
create mode 100644 src/main/java/org/virtuex/controler/HelloController.java
create mode 100644 src/main/java/org/virtuex/controler/StudentController.java
create mode 100644 src/main/java/org/virtuex/dao/StudentRepository.java
create mode 100644 src/main/java/org/virtuex/pojo/Student.java
create mode 100644 src/main/java/org/virtuex/service/IStudentService.java
create mode 100644 src/main/java/org/virtuex/service/impl/StudentServiceImpl.java
create mode 100644 src/main/resources/application-test.yml
create mode 100644 src/main/resources/application.yml
create mode 100644 src/test/bin/create_database.sh
create mode 100644 src/test/java/org/virtuex/GitlabCiCdSpringBootTest.java
create mode 100644 src/test/java/org/virtuex/service/impl/StudentServiceImplTest.java
[root@master1 gitlab_ci_demo]# git push origin master
Username for 'http://master1.gitlab.cn': root
Password for 'http://root@master1.gitlab.cn':
Counting objects: 36, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (28/28), done.
Writing objects: 100% (36/36), 7.22 KiB | 0 bytes/s, done.
Total 36 (delta 2), reused 0 (delta 0)
To http://master1.gitlab.cn/root/gitlab_ci_demo.git
* [new branch] master -> master
[root@master1 gitlab_ci_demo]#
这里简单的分析几个注意事项
- 可以通过git stats查看是否有更新
- 第一次仓库push的话,记住是master
- push成功的关键在于git remote -v仓库是否正确,这个我们其实git clone的时候就会自动生成。
上面的话,简单用到的命令有
git remote -v 查看仓库
git status 查看本地仓库状态,是否有更新
git add 把更新的部分放到暂存区
git commit 放到本地库,并添加changlog
git push origin master 推送到master分支
补充命令:
git remote rm origin 删除origin本地仓库(这个本地仓库可以通过git remote -v 看到)