jenkins+docker+docker-compose持续集成

拜拜、爱过 提交于 2020-08-05 17:47:24

安装jdk1.8
jenkins+docker+docker-compose持续集成
上传到 /usr/local/java 目录
cd /usr/local/java
tar -zxvf jdk-8u221-linux-x64.tar.gz



#配置环境变量
vi /etc/profile

#将下面的粘贴到 /etc/profile 末尾:

JAVA_HOME=/usr/local/java/jdk1.8.0_221
JRE_HOME=/usr/local/java/jdk1.8.0_221/jre
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME CLASSPATH



#保存关闭后(:wq),执行以下命令,让设置立即生效
source /etc/profile

#输入以下命令,来确认这三个变量是否设成了我们想要的
echo $JAVA_HOME
echo $CLASSPATH
echo $PATH


安装maven
cd /home
wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
#下载maven压缩包
tar -zxvf apache-maven-3.6.3-bin.tar.gz #解压
rm -rf apache-maven-3.6.3-bin.tar.gz #删除压缩包
配置环境变量





vi /etc/profile
把以下内容加到最后

export M2_HOME=/home/apache-maven-3.6.3

export PATH=$PATH:${M2_HOME}/bin
保存后使环境变量生效:

source /etc/profile

修改下载依赖的仓库地址
vi /home/apache-maven-3.6.3/conf/settings.xml

找到<mirrors></mirrors>标签对

添加后的效果为:

<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>;
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>






安装docker
如果有旧版本的docker ,执行这一步,全新安装的跳过
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine










安装所需的包
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 替换源
yum -y install docker-ce # 安装docker-ce(如果有报错)
systemctl start docker #启动docker
systemctl enable docker #开机启动docker
systemctl status docker #查看docker状态





配置镜像加速器
mkdir -p /etc/docker
vim /etc/docker/daemon.json
在文件中加入
{
"registry-mirrors": ["https://br10hqrl.mirror.aliyuncs.com"]
}





:wq #保存/etc/docker/daemon.json
sudo systemctl daemon-reload
sudo systemctl restart docker # 重启生效

安装 docker-compose
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.25.0-rc2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

#检查安装是否完成
docker-compose -v
和jenkins整合还需 弱链接一下
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose


安装jenkins
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.164.3-1.1.noarch.rpm
yum install jenkins-2.164.3-1.1.noarch.rpm
#systemctl enable jenkins --now systemclt 220之后可以使用这个命令设置自启后启动服务
systemctl enable jenkins
systemctl restart jenkins
如果启动报错可以查看具体问题有点端口会冲突,因为默认端口是8080所以你可以根据自己的修改
tail -f /var/log/jenkins/jenkins.log
jenkins+docker+docker-compose持续集成
#这里需要建个软连接
ln -s /usr/local/jdk-12.0.2/bin/java /usr/bin/java
systemctl restart jenkins










vim /etc/sysconfig/jenkins
#监听端口(如果冲突可以休息)
JENKINS_PORT="8080"

为了不因为权限出现各种问题,这里直接使用root
修改用户为root
JENKINS_USER="root"

修改目录权限
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins


还需要更改 jdk的路径

which java # 查看java的安装路径
vi /etc/init.d/jenkins
jenkins+docker+docker-compose持续集成

更改插件的设置
cd /var/lib/jenkins/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


cd ~

vi /var/lib/jenkins/hudson.model.UpdateCenter.xml
修改 https://updates.jenkins.io/update-center.json
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

添加jenkins 到docker用户组
gpasswd -a jenkins docker

查看初始化密码 用于首次登录
在浏览器中打开,初次访问需要使用初始密码,使用以下命令获取
cat /var/lib/jenkins/secrets/initialAdminPassword

systemctl start jenkins.service # 启动 jenkins
systemctl enable jenkins.service # 开机启动
systemctl status jenkins.service # jenkins 状态
systemctl sotp jenkins.service # 停止 jenkins


登陆页面设置
jenkins+docker+docker-compose持续集成
jenkins+docker+docker-compose持续集成
jenkins+docker+docker-compose持续集成
jenkins+docker+docker-compose持续集成
jenkins+docker+docker-compose持续集成
至此,成功在centos7上安装jenkins





配置
jenkins+docker+docker-compose持续集成
jenkins+docker+docker-compose持续集成
jenkins 插件管理中 安装 插件 Docker Compose Build Step、gitlab
丢弃旧的构建(到图里面安装对应的,我这里安装过了)
jenkins+docker+docker-compose持续集成




构建设置
jenkins+docker+docker-compose持续集成
jenkins+docker+docker-compose持续集成

docker-registry 安装

docker pull registry # 拉取镜像

vi /etc/docker/daemon.json # 写入以下内容:
{ "insecure-registries": [
"172.16.77.71:5000" # 172.16.77.71:5000改成你的服务器地址
]
}



systemctl daemon-reload # 重启
systemctl restart docker.service

访问认证
mkdir /home/registry/auth & cd /home/registry/auth # 创建目录
username userpasswd 分别替换成你想设置的用户名和密码
touch htpasswd
docker run --entrypoint htpasswd registry -Bbn username userpasswd > auth/htpasswd
如果有报错,解决
which htpasswd(查看自己相关路径)
/bin/htpasswd






docker run -d -p 5000:5000 --restart=always --name docker-hub -v /home/registry:/var/lib/registry -v /home/registry/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry # 启动

Gitlab -CI(Runner) 服务器的安装
下载配置信息

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
安装

yum install -y gitlab-ci-multi-runner

gpasswd -a gitlab-runner docker # 添加gitlab-runner 到docker用户组

在根目录创建 .gitlab-ci.yml 文件

.gitlab-ci.yml定义阶段
stages:

  • build
  • test
  • deploy
    job1:
    stage: test
    tags:
    • demo
      script:
    • echo "I am job1"
    • echo "I am test stage"
      job2:
      stage: build
      tags:


    • demo
      script:
    • echo "I am job2"
    • echo "I am build stage"
      #部署阶段
      job3:
      stage: deploy
      tags:



    • demo
      script:
    • echo "I am job3"
    • echo "I am deploy stage"



安装gitlab
GitLab的安装及使用教程
配置yum源
vim /etc/yum.repos.d/gitlab-ce.repo
复制以下内容:



[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1



更新本地yum缓存
sudo yum makecache
安装GitLab社区版
sudo yum install gitlab-ce #自动安装最新版
sudo yum install gitlab-ce-x.x.x #安装指定版本



GitLab常用命令
sudo gitlab-ctl start # 启动所有 gitlab 组件;
sudo gitlab-ctl stop # 停止所有 gitlab 组件;
sudo gitlab-ctl restart # 重启所有 gitlab 组件;
sudo gitlab-ctl status # 查看服务状态;
sudo gitlab-ctl reconfigure # 启动服务;
sudo vim /etc/gitlab/gitlab.rb # 修改默认的配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace # 检查gitlab;
sudo gitlab-ctl tail # 查看日志;







gitlab重装出现:ruby_block[supervise_redis_sleep] action run
解决方案:
按住CTRL+C强制结束;
运行:sudo systemctl restart gitlab-runsvdir;
再次执行:sudo gitlab-ctl reconfigure



gitlab修改默认端口
部署gitlab的时候,发现8080端口被tomcat给占用了,遂修改gitlab默认端口。

版本查看
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
12.10.3

gitlab.rb 修改
配置文件在 /opt/gitlab/etc/gitlab.rb 。这个文件用于gitlab如何调用80和8080的服务等。

Advanced settings
unicorn['listen'] = '127.0.0.1'
unicorn['port'] = 8082
nginx['listen_addresses'] = ['*']
nginx['listen_port'] = 82 # override only if you use a reverse proxy: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md#setting-the-nginx-listen-port
gitlab-rails 修改
配置文件 /var/opt/gitlab/gitlab-rails/etc/unicorn.rb





What ports/sockets to listen on, and what options for them.
#listen "127.0.0.1:8080", :tcp_nopush => true
listen "127.0.0.1:8082", :tcp_nopush => true
listen "/var/opt/gitlab/gitlab-rails/sockets/gitlab.socket", :backlog => 1024


  1. gitlab nginx 修改
    配置文件 /var/opt/gitlab/nginx/conf/gitlab-http.conf。这个文件是gitlab内置的nginx的配置文件,里面可以影响到nginx真实监听端口号。

server {
listen *:82;

server_name gitlab.123.123.cn;
server_tokens off; ## Don't show the nginx version number, a security best practice

giltab-shell修改
配置文件:/var/opt/gitlab/gitlab-shell 修改成:
GitLab user. git by default
user: git


Url to gitlab instance. Used for api calls. Should end with a slash.
gitlab_url: "http://127.0.0.1:8080"
gitlab_url: "http://127.0.0.1:8082" ## 关键是这个地方

http_settings:

  1. 重启gitlab
    修改完成后,重启下,就可以访问82端口的gitlab了。
    gitlab-ctl restart
    登录GitLab。
    在浏览器的地址栏中,输入ECS服务器的公网IP即可进入GitLab的登录界面,首次登录使用用户名root,密码为首次访问GitLab时设置的新密码。
    jenkins+docker+docker-compose持续集成
    创建Project。
    使用Linux自带的软件源安装Git工具。
    yum install git
    生成密钥文件。
    使用如下命令生成密钥文件.ssh/id_rsa。
    ssh-keygen
    jenkins+docker+docker-compose持续集成
    配置文件中。
    cat .ssh/id_rsa.pub
    jenkins+docker+docker-compose持续集成














在GitLab的主页中新建一个Project。
jenkins+docker+docker-compose持续集成

添加ssh key,导入步骤2中生成的密钥文件内容。
jenkins+docker+docker-compose持续集成
jenkins+docker+docker-compose持续集成
jenkins+docker+docker-compose持续集成


jenkins+docker+docker-compose持续集成

简单配置。
配置使用Git仓库的人员姓名。
git config --global user.name "testname"
配置使用Git仓库的人员email,填写自己的公司邮箱。
git config --global user.email "abc@example.com"
克隆项目,在本地生成同名目录,并且目录中会有所有的项目文件。
git clone git@iZxxxxxxxxxxxxxxxxx3Z:root/test.git





上传文件。
进入到项目目录。
cd test/
创建需要上传到GitLab中的目标文件。
echo "test" > /root/test.sh
将目标文件或者目录复制到项目目录下。
cp /root/test.sh ./
jenkins+docker+docker-compose持续集成
将test.sh文件加入到索引中。
git add test.sh
将test.sh提交到本地仓库。
git commit -m "test.sh"
将文件同步到GitLab服务器上。
git push -u origin master
jenkins+docker+docker-compose持续集成
在网页中查看上传的test.sh文件已经同步到GitLab中。
jenkins+docker+docker-compose持续集成
到此gitlab安装结束
















Jenkins构建配置
##打包
mvn clean install -Dmaven.test.skip=true
echo "maven 执行完毕"
cur=$(pwd)
echo "当前路径$cur"
dockerpids1=$(docker ps -f name="crawler-" | awk '{print $1}' )
for dockerpid in $dockerpids1
do
echo "被删除的容器 $dockerpid"
docker stop $dockerpid
docker rm $dockerpid
done
dockerpids2=$(docker ps -f name="






-service" | awk '{print $1}' )
for dockerpid in $dockerpids2
do
echo "被删除的容器 $dockerpid"
docker stop $dockerpid
docker rm $dockerpid
done
echo "容器已删除完毕!"
ipids=$(docker images | grep "springcloud/*" | awk '{print $3}')
for imagesid in $ipids
do
echo "被删除的image $imagesid"
docker rmi $imagesid
done
echo "旧的docker docker-demo 容器和镜像已删除"
sh build-image.sh
echo "docker打包完成"
docker-compose up -d
echo "容器启动完成,结束."























标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!