分享交流
合作共赢!

DevOps的实现方法总结【一】——Gitlab

一、Git/Github/Gitlab简介

Git由Linux之父Linus Torvalds(林纳斯*托瓦兹)于2005年开发的一个分布式持续集成工具,设计之初就具有以下优点:

  • 可靠性:数据的上传和下载必须是安全的、一致的,所有行为都要进行验证,数据的变更通过不同的版本尽心逻辑隔离;
  • 分布式:Linus Torvalds认为之前的集中式版本控制系统性能太差,于是git的代码恢复不依赖于中央服务器,而是每个开发电脑都是一个本地仓库,可用于代码提交与回滚;
  • 高效:Git基于分布式的功能实现代码的快捷提交与秒级回滚;

Github是基于Git的一个共有代码仓库,GitHub与2008年4月市场上线,2018年6月微软宣布通过75亿美元的股票交易收购GitHub。

Gitlab是基于Git的一个私有代码仓库。

二、Gitlab安装部署

官方网站介绍:https://docs.gitlab.com

安装Gitlab环境要求:https://docs.gitlab.com/ce/install/requirements.html

Git客户端官方下载:https://git-scm.com/

1.下载gitlab安装包

阿里云下载地址:https://mirrors.aliyun.com/gitlab-ce/yum/el7/

清华大学下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

或Ubuntu:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/bionic/main/g/gitlab-ce/

[root@master1 package]# wget --no-check-certificate  https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.11.8-ce.0.el7.x86_64.rpm
[root@master1 package]# ls -hl
total 634M
drwxr-xr-x 2 root root  145 May 23 22:36 bare-metal
drwxr-xr-x 2 root root   32 May 16 10:53 flannel
-rw-r--r-- 1 root root 634M Aug 13  2019 gitlab-ce-11.11.8-ce.0.el7.x86_64.rpm
-rw-r--r-- 1 root root 1.1K May 14 16:30 k8s.bak
-rw-r--r-- 1 root root  15K May 14 17:24 kube-flannel.yaml

2.安装

Centos系统可以通过yum或rpm安装

[root@master1 package]# rpm -i gitlab-ce-11.11.8-ce.0.el7.x86_64.rpm 
warning: gitlab-ce-11.11.8-ce.0.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID f27eab47: NOKEY

gitlab: GitLab now ships with a newer version of PostgreSQL (10.7), but it is not yet
gitlab: enabled by default. To upgrade, RUN THE FOLLOWING COMMAND:

sudo gitlab-ctl pg-upgrade

gitlab: Note: This command does not support Geo instances yet. So we don't
gitlab: recommend running this command on Geo nodes. It will be supported
gitlab: in GitLab 12.0.

gitlab: For more details, please see:
gitlab: https://docs.gitlab.com/omnibus/settings/database.html#upgrade-packaged-postgresql-server
gitlab: 
It looks like GitLab has not been configured yet; skipping the upgrade script.

       *.                  *.
      ***                 ***
     *****               *****
    .******             *******
    ********            ********
   ,,,,,,,,,***********,,,,,,,,,
  ,,,,,,,,,,,*********,,,,,,,,,,,
  .,,,,,,,,,,,*******,,,,,,,,,,,,
      ,,,,,,,,,*****,,,,,,,,,.
         ,,,,,,,****,,,,,,
            .,,,***,,,,
                ,*,.
  


     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/
  

Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
  sudo gitlab-ctl reconfigure

For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md

3.配置

编辑文件/etc/gitlab/gitlab.rb,

配置访问地址, 修改external_url参数为本机ip地址或者域名。

external_url 'http://192.168.222.150'

配置邮箱server信息

### GitLab email server settings
###! Docs: https://docs.gitlab.com/omnibus/settings/smtp.html
###! **Use smtp instead of sendmail/postfix.**
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.server"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "smtp user"
gitlab_rails['smtp_password'] = "smtp password"
gitlab_rails['smtp_domain'] = "example.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false

Email Setting

### Email Settings
# gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'example@example.com'
# gitlab_rails['gitlab_email_display_name'] = 'Example'
# gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'
# gitlab_rails['gitlab_email_subject_suffix'] = ''

GitLab User Settings

##! Modify default git user.
##! Docs: https://docs.gitlab.com/omnibus/settings/configuration.html#changing-the-name-of-the-git-user-group
user['git_user_email'] = "gitlab@#{node['fqdn']}"

实例如下:

此内容查看价格2立即购买

三、Gitlab使用

1.web访问

配置完毕后执行gitlab命令重载配置文件即可通过配置的url地址进行访问。

# 载入配置初始化或重置配置
[root@master1 ~]# gitlab-ctl reconfigure

2.常用命令

Part1:

git config --global user.email "you@example.com" # 设置全局邮箱 
git config --global user.name "Your Name" # 设置全局用户名
git config --global --list # 列出用户全局设置
git clone URL # 克隆项目到本地
git clone -b BRANCH-NAME URL # 克隆指定分支的项目到本地
git add FILE ./ # 添加指定文件、目录或当前目录下所有数据到暂存区
git commit -m "V1" # 提交文件到本地工作区(本地仓库)
git status # 查看本地工作区和暂存区状态
git push # 提交代码到服务器
git pull # 从gitlab服务器更新代码到本地

创建并编辑.gitignore文件,可以添加定义不需要上传到gitlab的文件或目录

Part2:

git log # 查看操作日志
git log --pretty=oneline # 按单行简介显示日志信息
git reset --hard HEAD^ # git版本回滚,HEAD为当前版本,加一个^表示上一个版本,加两个^^表示上上个版本
git reflog # 获取每次提交的ID,可以使用--hard根据提交的ID进行版本回滚
git reset --hard xxxxxx # 回滚到指定ID的版本(一般使用id的前7位标识某个版本)
git revert xxxxxx : (回退线上线下版本推荐方法)表示撤销上次的操作,并重新comit,然后重新git push即可正常回退

版本回退参考:DevOps的实现方法总结【二】——Gitlab

Part3:

git branch # 查看当前所处的分支
git checkout -b develop # 创建并切换到一个新的分支(若分支不存在会自动创建)
git checkout develop # 切换分支
git merge origin/develop && git push # 合并分支

四、Gitlab重置管理员密码

连接到gitlab安装的服务器,输入su – git 切换到git用户,切换之后默认的当前目录就可以ls查看到gitlab的命令文件,如下所示可以看到gitlab-rails文件,下一步会使用此文件进入控制台

root@iZad705ziue25txnr4sv5lZ:~# su - git
$ ls
alertmanager gitaly gitlab-monitor gitlab-workhorse node-exporter prometheus trusted-certs-directory-hash
backups git-data gitlab-rails logrotate postgres-exporter public_attributes.json
bootstrapped gitlab-ci gitlab-shell nginx postgresql redis

输入gitlab-rails console production进入gitlab控制台,只有进入到控制台之后,才可以输入gitlab的查询语句,才会被解析

$ gitlab-rails console production
-------------------------------------------------------------------------------------
GitLab: 11.9.12 (bbb9720ea4a)
GitLab Shell: 8.7.1
postgresql: 9.6.11
-------------------------------------------------------------------------------------
Loading production environment (Rails 5.0.7.2)
irb(main):001:0>

输入user = User.where(id:1).first查询id为1的用户对象,因为超级管理员用户默认都是1,也可以更加username来查询用户对象,管理员账户对象查询到之后,可以从返回的信息中看到admin为true,username为root

irb(main):002:0> user = User.where(id:1).first
=> #<User id:1 @root>

输入user.password=’YOUR PASSWORD’,密码位置填写您新的密码,在此输入user.password_confirmation=”YOUR PASSWORD”进行密码确认。然后再输入user.save!保存用户对象,此时密码已重置成功!

irb(main):003:0> user.password='Pj@xxx'
=> "Pj@xxx"
irb(main):010:0> user.password_confirmation="Zqjsyl1992"
=> "Pj@xxx"
irb(main):004:0> user.save!
Enqueued ActionMailer::DeliveryJob (Job ID: f745447c-4e73-4cdd-a611-5558c2d7ddb0) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", #<GlobalID:0x00007fe3a091a3f8 @uri=#<URI::GID gid://gitlab/User/1>>
=> true
赞(0) 打赏
未经允许不得转载:琼杰笔记 » DevOps的实现方法总结【一】——Gitlab

评论 抢沙发

评论前必须登录!

 

分享交流,合作共赢!

联系我们加入QQ群

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

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册