jenkins gitlab hook (笔记)

一、docker 安装 gitlab

1.pull中文版镜像:
docker pull beginor/gitlab-ce

2.创建目录:
通常会将 GitLab 的配置 (etc) 、 日志 (log) 、数据 (data) 放到容器之外, 便于日后升级, 因此请先准备这三个目录。

mkdir -p /opt/gitlab/etc
mkdir -p /opt/gitlab/log
mkdir -p /opt/gitlab/data

3.修改目录权限:
chmod 777 /opt/gitlab -R

4.运行:
准备好这三个目录之后, 就可以开始运行 Docker 镜像了:

docker run --detach --publish 8443:443 --publish 8888:80 --publish 8222:22 --name gitlab --restart unless-stopped --volume /opt/gitlab/etc:/etc/gitlab --volume /opt/gitlab/log:/var/log/gitlab --volume /opt/gitlab/data:/var/opt/gitlab --privileged=true beginor/gitlab-ce
--publish 8443:443:将http:443映射到外部端口8443
--publish 8888:80:将web:80映射到外部端口8888
--publish 8222:22:将ssh:22映射到外部端口8222
--name gitlab 运行容器名
--restart unless-stopped 重启策略
--volume /opt/gitlab/etc:/etc/gitlab 挂载目录
--volume /opt/gitlab/log:/var/log/gitlab 挂载目录
--volume /opt/gitlab/data:/var/opt/gitlab 挂载目录
--privileged=true 使得容器内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限

5.访问:
稍等片刻,初始化完毕,再打开浏览器:ip地址:8888 (http://192.168.2.212:8888/)

6.配置

# gitlab.rb文件内容默认全是注释
$ vim /home/gitlab/config/gitlab.rb

# 配置http协议所使用的访问地址,不加端口号默认为80
external_url 'http://192.168.199.231'

# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = '192.168.199.231'
gitlab_rails['gitlab_shell_ssh_port'] = 222 # 此端口是run时22端口映射的222端口
:wq #保存配置文件并退出

 

二、docker 安装  jenkins

firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload && iptables -L --line-numbers|grep ACCEPT

安装容器

mkdir /opt/jenkins

docker run -d -u root --name jenkins --restart unless-stopped -p 8080:8080 -p 50000:50000 -v /opt/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts

docker images && docker ps -a

进入容器

docker exec -it jenkins bash

容器内安装vim

apt-get update && apt-get install vim

安装组件及升级加速

cd jenkins_home
sed -i 's#https://updates.jenkins.io/update-center.json#http://mirror.xmission.com/jenkins/updates/update-center.json#g' hudson.model.UpdateCenter.xml

cd jenkins_home/updates/
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json
sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

 

 *************************************************************************

安装包普通安装 jenkins

yum install epel-release nginx java git

rpm -ivh jenkins-2.204.5-1.1.noarch.rpm


/usr/lib/jenkins/jenkins.war WAR包 
/etc/sysconfig/jenkins 配置文件
/var/lib/jenkins/ 默认的JENKINS_HOME目录
/var/log/jenkins/jenkins.log Jenkins日志文件

vim /etc/sysconfig/jenkins
JENKINS_USER="root"
JENKINS_PORT="8080"

service jenkins restart

 *************************************************************************

 docker 命令

拉取、运行 镜像
docker pull hello-world
docker run hello-world

镜像
docker pull 镜像名称[:版本] 拉取镜像,如果版本为空,则拉取最新的版本
docker run 镜像名称或ID 运行镜像,创建容器
docker run -it 镜像名称或ID 运行镜像,创建并进入容器。(-i 交互模式,-t 分配伪输入终端)
docker inspect [name/id] 查看容器详细内容
docker rmi 镜像名称或ID 根据名称或ID删除镜像
docker rmi `docker images -q` 删除所有镜像

容器
docker ps 列出容器 (a显示所有的容器,包括未运行的,-q 静默模式,只显示容器编号)
docker start 容器名称或ID 根据名称或者ID启动容器
docker stop 容器名称或ID 根据名称或者ID停止容器
docker attach 容器ID 进入某个容器(使用exit退出后容器也跟着停止运行)
docker logs 容器名称或ID 查看容器日志
docker rm  容器名称或ID 根据名称或者ID删除容器,参数-f,表示强制删除正在运行的容器
docker rm `docker ps -aq` -f  删除所有容器

 

 

docker exec -it mywebapi bash

docker exec -it mywebapi bash /root/runoob.sh

-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端

 

 

问题:

--------------------------------------------------------------------------------------------------------------------------------------

1.一直提示Jenkins正在启动,请稍后...

vim hudson.model.UpdateCenter.xml
修改成  http://mirror.xmission.com/jenkins/updates/update-center.json

sed -i 's#https://updates.jenkins.io/update-center.json#http://mirror.xmission.com/jenkins/updates/update-center.json#g' hudson.model.UpdateCenter.xml

 

Jenkins对离线和插件安装慢解决方法(运行一次后才会生成updates目录)
cd /var/jenkins_home/updates/
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json
sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

 

系统上的时间不正确问题

打开 【系统管理】->【脚本命令行】运行下面的命令
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')

 --------------------------------------------------------------------------------------------------------------------------------------

 三、GIT HOOK

#!/bin/sh
#set -e
#git-update-server-info
#gitosis-run-hook update-mirrors

zero_commit="0000000000000000000000000000000000000000"
excludeExisting="--not --all"
refnames="rxmall"
branch=$(git branch | grep "*")
currentBranch=${branch:2}
while read oldrev newrev refname; do
# branch or tag get deleted
if [ "$newrev" = "$zero_commit" ]; then
continue
fi

# Check for new branch or tag
if [ "$oldrev" = "$zero_commit" ]; then
span=`git rev-list $newrev $excludeExisting`
else
span=`git rev-list $oldrev..$newrev $excludeExisting`
fi

for COMMIT in $span;
do
AUTHOR_USER=`git log --format=%an -n 1 ${COMMIT}`
AUTHOR_EMAIL=`git log --format=%ae -n 1 ${COMMIT}`
COMMIT_USER=`git log --format=%cn -n 1 ${COMMIT}`
COMMIT_EMAIL=`git log --format=%ce -n 1 ${COMMIT}`

#cho "AUTHOR_USER>>>"$AUTHOR_USER
#cho "AUTHOR_EMAIL>>>"$AUTHOR_EMAIL
#cho "COMMIT_USER>>>"$COMMIT_USER
#cho "COMMIT_EMAIL>>>"$COMMIT_EMAIL
#cho "COMMIT>>>"$COMMIT_EMAIL
#cho "refname>>>"$refname
refnames=$refname
done
done

echo "origin/"${refnames##*/}>>/data/hook.log

posted @ 2020-03-25 10:37  vicowong  阅读(756)  评论(0)    收藏  举报