docker&git&gitlab-安装/部署/新建
我准备自己要做的事是写一套发布流程方案,然后部署起来,希望能在今年完成并搞到精通,然后然后,然后生活可能就会变得美好起来吧。
利用Tower发布工具从本地代码下载到git服务器,然后提交到第一套gitlab平台上,选择-->发到试运行或者生产-->第二套gitlab做启动容器或者暂停容器-->k8s查询容器状态。
准备工作:
172.23.210.30/16 172.23.255.237 gitlab
4*4g*30g
172.23.210.31/16 172.23.255.237 gitlab2
4*4g*40g
CPU,内存,都是有一定的要求,我这个物理配置已经是比较低配的了,否则最后安装完成还是打不开,有运行不起来的情况。 网关必须是跟物理机上的一致,否则连不上网。
安装各种依赖,常用的先安装好吧,不喜欢中途报错各种花时间找原因,重装等。
--安装gcc yum -y install gcc --安装g++ yum -y install gcc-c++ --安装编译所需的包 yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel yum -y install gcc perl-ExtUtils-MakeMaker
######## 编译安装的git ############
###先卸载旧版git####
find / -name gitlab | xargs rm -rf #删除所有包含git文件
yum remove git #卸载git
###下载安装指定版本git###
https://mirrors.edge.kernel.org/pub/software/scm/git/
yum -y install lrzsz
tar -zxvf git-2.17.1.tar.gz
cd git-2.17.1
./configure --prefix=/usr/local/git
make && make install
vim /etc/profile
export PATH=$PATH:/usr/local/git/bin
source /etc/profile
git --version
./configure --prefix=/usr/local/git --with-config-file-path=/usr/local/git --with-openssl
##测试
mkdir -p /jpdata/project/shengyijia/api-1/ cd /jpdata/project/shengyijia/api-1/
git init #初始化仓库
git config --global user.name "wangzq" #设置用户名
git config --global user.email "wangzq@****.com" #设置邮箱
vim .git/config
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"]
url = http://192.168.1.12:8090/mml/demo/jp-spt-web-1.git
fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master
###### 安装docker ###########
3、卸载旧版本(如果安装过旧版本的话)
$ sudo yum remove docker docker-common docker-selinux docker-engine
4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 #已安装
5、设置yum源
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
6、可以查看所有仓库中所有docker版本,并选择特定版本安装
$ yum list docker-ce --showduplicates | sort -r #已测试
7、安装docker
$ sudo yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0 #安装错误 $ sudo yum install <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce #已安装成功
8、启动并加入开机启动
$ sudo systemctl start docker
$ sudo systemctl enable docker
9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
$ docker version #已验证
systemctl status docker #已验证
######docker 安装gitlab #######建议本地安装包安装,配置和权限等就会少很多麻烦 ####
[root@nginx ~]# docker pull gitlab/gitlab-ce:11.11.4-ce.0
1、通常会将 GitLab 的配置 (etc) 、 日志 (log) 、数据 (data) 放到容器之外, 便于日后升级, 因此请先准备这三个目录。
mkdir -p /mnt/gitlab/etc
mkdir -p /mnt/gitlab/log
mkdir -p /mnt/gitlab/data
[root@nginx ~]# docker run -d \
--hostname 172.23.210.30 \
-p 8443:443 \
-p 80:80 \
-p 2222:22 \
-p 9090:9090 \
--name gitlab \
--restart always \
-v /mnt/gitlab/etc:/etc/gitlab \
-v /mnt/gitlab/log:/var/log/gitlab \
-v /mnt/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:11.11.4-ce.0
netstat -tnl #再查看本机端口状态
1、修改/mnt/gitlab/etc/gitlab.rb
vim /mnt/gitlab/etc/gitlab.rb #把external_url改成部署机器的域名或者IP地址
external_url 'http://172.23.210.30'
2、修改/mnt/gitlab/data/gitlab-rails/etc/gitlab.yml #将host的值改成映射的外部主机ip地址和端口,这里会显示在gitlab克隆地址
vim /mnt/gitlab/data/gitlab-rails/etc/gitlab.yml
port: 80
打开浏览器测试,我用的是谷歌 http://172.23.210.31/
#### 使用 docker 安装 runner 并且配置 runner 服务 ###
#先关闭防火墙,不然后面会报错
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
docker pull gitlab/gitlab-runner:v11.11.3 启动 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:v11.11.3 将gitlab上的项目注册到gitlab-runner中,注册步骤参考方式一: sudo docker exec -it gitlab-runner gitlab-ci-multi-runner register
1、gitlab ci的地址以及token,管理中心-->Rrunner-->shared Runner URL: http:172.23.210.31/ #shared Runner,对所有工程开放使用
2. 填写令牌:HjkxCccWSDweAkTeXGUa
3. ssh 4.test-runner 5.test-runner 6.直接回车 7.直接回车
如图:
编辑打钩(否则build一直提示卡住,等待):
成功后,可以看到gitlab->你的项目->settings -> CI/CD ->Runners settings 页面下面有以下内容:
创建 gitlab用户
useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
gpasswd -a gitlab-runner root #给gitlab-runner的权限跟root一样
su gitlab-runner #登陆gitlab-runner账号
mkdir /home/gitlab-runner/ #创建gitlab-runner目录
chown -R gitlab-runner:gitlab-runner gitlab-runner #该目录所属gitlab-runner组
chmod -R 700 gitlab-runner #该目录权限设置
ssh-keygen -t rsa #生成gitlab-runner专属秘钥
cat /home/gitlab-runner/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys #让本机能够访问gitlab-runner目录
docker ps
docker exec -it gitlab-runner bash #进入gitlab-runner容器
cd /home/gitlab-runner/ #查看容器内有没有秘钥,没有也要生成秘钥
ssh-keygen -t rsa
cat /home/gitlab-runner/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys #让容器也能够访问gitlab-runner目录
修改gitlab-runner 配置文件:
vim /etc/gitlab-runner/config.toml
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "test-runner"
url = "http://172.23.210.30/"
token = "MzxnakxkYjQ4xT7Soy4y"
executor = "ssh"
builds_dir = "/jpdata/backup/gitlabrunner/"
[runners.custom_build_dir]
[runners.ssh]
user = "root"
host = "172.23.210.30"
port = "22"
identity_file = "/home/gitlab-runner/.ssh/id_rsa"
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
docker restart gitlab.runner #docker的方式重启gitlab-runner
sudo gitlab-runner start #本地方式启动gitlab-runner
在gitlab项目根目录创建.gitlab-ci.yml
文件,填写runner规则,具体语法课参考官方文档:https://docs.gitlab.com/ee/ci/yaml/
git 设置免密推送
git config --global credential.helper store
#git clone不需要输入账号,密码设置
cd ~ vim .git-credentials http://root:SaRRvfvy8LdcGjXktzt9@172.23.210.30 http://root:UusSrDih2y95sYzuYJzC@172.23.210.31 :wq! git config --global credential.helper store cat ~/.gitconfig [credential] helper = store ##以上这样就可以了
回退版本:
可以使用命令“git log”查看:
2. 使用“git reset --hard 目标版本号”命令将版本回退
3.再用“git log”查看版本信息,此时本地的HEAD已经指向之前的版本:
4.3. 使用“git push -f”提交更改:
所以我们要用“git push -f”强制推上去,就可以了:
git push origin master --force
![](https://img2018.cnblogs.com/blog/1250981/201909/1250981-20190904094651829-573425023.png)
##不允许把项目强推上去, 需要修改对该项目的权限:
再查看下:
#撤销某次git提交:
git reflog
git revert 提交号
git reflog
git push origin HEAD --force
发布时所遇到的坑:
git不支持空目录, 可以增加一个空文件 .gitkeep
.删除可以用 find -name .gitignore| xargs rm -rf
git add --all
git commit -m "删除.gitignore"
git push -u origin master