安装Docker

Docker拉取Jenkins镜像

1
2
3
# docker pull jenkins/jenkins:2.319.1
docker pull jenkins/jenkins:lts
docker images

Docker-compose构建Jenkins容器

创建Jenkins目录

1
2
3
4
mkdir -p /data/app/jenkins/jenkins_home/
chown -R 1000:1000 /data/app/jenkins/jenkins_home/

# /data/app/jenkins/jenkins_home // Jenkins挂载卷

编写docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# vim /data/docker-compose.yml
version: "3"
services:
jenkins:
user: root
restart: "always"
image: jenkins/jenkins:lts
container_name: jenkins
privileged: true
ports:
- 8080:8080
- 50000:50000
environment:
JAVA_OPTS: -Duser.timezone=Asia/Shanghai
volumes:
- /etc/localtime:/etc/localtime
- /data/app/jenkins/jenkins_home/:/var/jenkins_home
- /usr/local/jdk:/usr/local/jdk
- /data/app/jenkins/maven:/usr/local/maven
- /data/app/jenkins/node:/usr/local/node
- /var/run/docker.sock:/var/run/docker.sock
- /root/.ssh:/root/.ssh #(可选)免密配置时,公钥可以直接在本地配置
- /root/.nvm:/root/.nvm # 提前宿主机安装好nvm,上面的node可以不用了

宿主机安装jdk

1
2
3
4
5
6
7
8
9
10
# 下载或上传jdk包
cd /usr/local/src
tar xf /usr/local/src/jdk.tar.gz -C /usr/local/
cat >> /etc/profile <<EOF

# ---> JDK <---
export JAVA_HOME=/usr/local/java
export PATH=\$PATH:\$JAVA_HOME/bin
# ---> JDK <---
EOF

宿主机安装maven

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mvn_url="https://dlcdn.apache.org/maven/maven-4/4.0.0-alpha-13/binaries/apache-maven-4.0.0-alpha-13-bin.tar.gz"
cd /usr/local/src
curl -L ${mvn_url} -o /usr/local/src/maven.tar.gz
tar xf ./maven.tar.gz -C /usr/local/
mv /usr/local/apache-maven* /usr/local/maven
cat >> /etc/profile <<EOF

# ---> Maven <---
export MAVEN_HOME=/usr/local/maven/
export PATH=\$PATH:\$MAVEN_HOME/bin
# ---> Maven <---
EOF
source /etc/profile
mvn -v

宿主机安装node或nvm工具

1
2
3
4
5
6
7
8
9
10
11
12
# yum install -y gcc gcc-c++
# 下载或上传安装包
cd /usr/local/src
tar xf ./node-* -C /usr/local/
mv /usr/local/node-* /usr/local/node
cat >> /etc/profile <<EOF

# ---> Node <---
export NODE_HOME=/usr/local/node/
export PATH=\$PATH:\$NODE_HOME/bin
# ---> Node <---
EOF

宿主机安装nvm: Node版本管理工具,可不安装node

1
2
3
4
5
6
7
8
9
10
11
12
13
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

# 用法
# 列出可用版本ls-remote
nvm ls-remote
# 安装最新版node
nvm install node
# 安装指定版本node
nvm install 14.7.0
# 使用已安装的版本
nvm use node
# 安装的第一个版本将成为默认版本

容器使用expect命令(可选)
1
-v /usr/bin/expect:/usr/bin/expect

启动容器环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# vim docker-compose.yml 
[root@localhost deploy]# docker-compose -f /data/app/deploy/docker-compose.yml up -d
WARN[0000] /data/app/deploy/docker-compose.yml: `version` is obsolete
[+] Running 1/0
✘ Network deploy_default Error 0.0s
failed to create network deploy_default: Error response from daemon: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER -i br-3ee41a2982b1 -j RETURN: iptables: No chain/target/match by that name.
(exit status 1))

[root@localhost deploy]# systemctl restart docker
[root@localhost deploy]# docker-compose -f /data/app/deploy/docker-compose.yml up -d
WARN[0000] /data/app/deploy/docker-compose.yml: `version` is obsolete
[+] Running 2/2
✔ Network deploy_default Created 0.1s
✔ Container jenkins Started

# 查看容器
docker ps

浏览器访问

1
2
3
URL:https://服务器IP:2080
初始账号:admin
初始密码:cat /data/app/jenkins/jenkins_home/secrets/initialAdminPassword

安装插件

  • 更新插件源
1
2
3
4
5
#jenkins默认
https://updates.jenkins.io/update-center.json

#国内镜像源地址
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
  • 安装Publish Over SSHSSH plugin
    • Publish Over SSH: 用于连接远程服务器的全局配置
    • SSH plugin: 用于连接远程服务器的上传文件配置,在项目里配置

jenkins 添加构建(已完成)

新建任务–输入一个任务名称,选择构建一个自由风格的软件项目
源码管理–选择git,仓库URL从gitlab上获取
添加凭据,类型(SSH Username with private key)
将jenkins容器私钥添加到此,应用 – 保存,公钥添加到gitlab

添加webhooks (已完成)

  • Jenkins添加插件 GibLab Plugin 与 generic Webhook Trigger、GitLab Authentication
    任务–配置–构建触发器–Build when a change is pushed to GitLab. GitLab webhook URL: http://xxx
    高级–生成Secret token