持续集成 jenkins

安装java环境及tomcat

下载jenkins war包,放在tomcat的app目录

wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

启动tomcat

— 设置为后台运行并修改端口

nohup java -jar jenkins.war --httpPort=8888 >/dev/null 2>&1 &

官网

wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

brew install jenkins-lts

dcoker

To use the latest LTS: docker pull jenkins/jenkins:lts
To use the latest weekly: docker pull jenkins/jenkins
docker run -itd --name jenkins -v jenkins_home:/var/jenkins_home -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts

volume ls
docker volume inspect jenkins_home
"Mountpoint": "/var/lib/docker/volumes/jenkins_home/_data",

docker volume create my-vol

enkins配置文件备份:
docker cp focused_bhaskara:/var/jenkins_home ./jenkins_home
其中focused_bhaskara为当前运行的jenkins容器名字,通过docker ps查看names即可得到。

docker run \
--name jenkins \
  -itd \
  -p 8080:8080 \
  -p 50000:50000 \
  -v jenkins-data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v $(which git):/usr/bin/git \
  -v /apache-maven-3.5.4:/usr/bin/maven \
  -v $JAVA_HOME:/usr/bin/jdk \
  jenkinsci/blueocean
or
mkdir /opt/jenkins/jenkins_home
sudo chown -R 1000 /opt/jenkins/jenkins_home

docker run -itd --name my_jenkins -p 800:8080 -v /opt/jenkins/jenkins_home:/var/jenkins_home -v /opt/jenkins/war:/usr/local/tomcat/webapps/ -v /usr/bin/git:/usr/bin/git -v /opt/java/jdk1.8.0_231:/opt/java/jdk1.8.0_231 -v /opt/maven/maven3:/opt/maven/maven3 -v /var/lib/docker:/var/lib/docker tomcat:9.0.30-jdk8

安装插件:SSH /Publish Over SSH /Git Parameter/Maven Integration/Rebuilder/Safe Restart/Generic Webhook Trigger/Gitlab Plugin/Docker Compose Build Step/Docker

配制全局安全属性-配制管理员,

系统管理-添加用户,同上授权

echo $JAVA_HOME

which git

echo $M2_HOME

应用部署服务器配制:内网测试环境可以关闭防火墙

service iptables stop

service iptables status

设置jenkins到K8s master ssh 免密登陆

ssh-keygen -t rsa 生成密钥 ssh-genkey -t rsa

ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.10.10.45

插件安装不成功

jenkins->系统管理->管理插件->高级 替换最下方【升级站点】中的URL

将http://updates.jenkins-ci.org/update-center.json
https://updates.jenkins.io/update-center.json

替换为http://mirror.esuni.jp/jenkins/updates/update-center.json

或手动安装,下载Jenkins的插件的地址:https://plugins.jenkins.io/
进入Jenkins,进入系统管理,进入管理插件,进入高级,上传插件文件,开始上传

自动化构建

  1. 丢弃旧的构建 保持构建的天数2 保持构建的最大个数 2
  2. 参数化构建过程 name:Branch Parameter Type:Branch or tag Default Value:origin/master
  3. Repository URL: Credentials:
  4. 构建触发器
    1. 设置GitLab的webhook
    2. jenkins中,在 系统管理 -> 全局安全管理中, 勾选 匿名用户具有可读权限
    3. 在工程中,点击 构建触发器中选中的Build When a change is pushed右下角的高级选项,有一个Secret token,点击 Generate,会生成一个安全代码,复制到GitLab webhook中的url下面
  5. Build
    1. Root POM: pom.xml
    2. Goals and options:
  6. Post Steps
    1. Run regardless of build result
    2. 执行shell code

ERROR

  1. valid crumb -> 在安全设置中,不勾选 CSRF
  2. 找不到docker-compose -> sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
  3. 无docker权限 Got permission denied while trying to connect to the Docker daemon socket at unix://var…
    sudo gpasswd -a jenkins docker #将用户加入到docker用户组中
    sudo newgrp – docker #更新用户组
    sudo service jenkins restart #重启Jenkins服务

备份恢复

FYI