Fool's blog Fool's blog
首页
  • Ansible
  • Jenkins
  • Docker
  • Kubernetes
  • Linux常用命令
  • Git
  • Nginx
  • PVE
  • Samaba
  • Tcpdump
  • Python
  • Go
GitHub (opens new window)

The Fool

运维萌新
首页
  • Ansible
  • Jenkins
  • Docker
  • Kubernetes
  • Linux常用命令
  • Git
  • Nginx
  • PVE
  • Samaba
  • Tcpdump
  • Python
  • Go
GitHub (opens new window)
  • Ansible

  • Jenkins

    • Jenkins基础
      • Docker部署
      • 新建任务
        • 查看可用的环境变量列表
        • WorkSpace
      • nodes
      • pipeline
        • Pipeline script from SCM
      • Maven
        • Publish Over SSH
    • Jenkins实践
  • DevOps
  • Jenkins
The Fool
2025-12-19
目录

Jenkins基础

# Jenkins

# Docker部署

其他部署方式参考官方文档 (opens new window)

version: '3.8'

services:
  jenkins:
    image: jenkins/jenkins:lts
    container_name: jenkins
    restart: unless-stopped
    user: root
    ports:
      - "8082:8080"   # Web UI
      - "50000:50000" # Agent 连接端口
    volumes:
      - /opt/docker/jenkins/data:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock  # 允许 Jenkins 控制宿主机 Docker
1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker compose up -d
1

访问ip:8080

1772156904198.png

#获取初始密码
docker exec cae8e9992019 cat /var/jenkins_home/secrets/initialAdminPassword
1
2

1772156952665.png

# 新建任务

1772157776410.png

填入任务名称,选择第一个item type 确定即可

1772158075840.png

在Build Steps 新增构建步骤,选择

1772158457020.png

1772159148466.png

输入

echo "hello jenkins"
1

点击save后点击立即构建

1772159922302.png

点击下面#1查看构建详情,看控制台输出

1772159988896.png

1772160088824.png

# 查看可用的环境变量列表

点击蓝色字体查看

1772171131355.png

引用

1772171294132.png

保存后构建查看控制台输出

1772171394291.png

# WorkSpace

创建一个test文件

1772171854410.png

1772171929172.png

这个文件在项目的workspace下可以查看对应容器内的(/var/jenkins_home/workspace/my-first-job/目录下)

1772172010847.png

# nodes

先下载Docker相关插件

1772957833884.png

image-20260308162020959

docker run -d --restart=always -p 127.0.0.1:2376:2375 --network jenkins_default -v /var/run/docker.sock:/var/run/docker.sock alpine/socat tcp-listen:2375,fork,reuseaddr unix-connect:/var/run/docker.sock
1
docker inspect <container_id> | grep IPAddress
1

1772958487376.png

在jenkins填写容器的tcp://ip:port,然后测试链接

1772958643607.png

然后添加Docker Agent模板信息

Labels:docker-agent-alpine

Name:docker-agent-alpine

Docker Images:jenkins/inbound-agent

1772959017860.png

在这里可以配置私有的images,save保存。

1772959281344.png

image-20260308164526500

编辑之前job的配置指定项目运行的节点

这里的标签填写之前节点的label即可

1772959641999.png

可以在控制台输出查看对应的日志

1772961035840.png

可以添加多个docker镜像模板,用来运行不同的项目

1773123689588.png

# pipeline

创建一个pipeline项目

1773121292547.png

在流水线出输入脚本内容,save保存构建

1773121377211.png

pipeline {
    agent { 
        node {
            label 'jenkins-agent-goes-here'
            }
      }
    stages {
        stage('Build') {
            steps {
                echo "Building.."
                sh '''
                echo "doing build stuff.."
                '''
            }
        }
        stage('Test') {
            steps {
                echo "Testing.."
                sh '''
                echo "doing test stuff.."
                '''
            }
        }
        stage('Deliver') {
            steps {
                echo 'Deliver....'
                sh '''
                echo "doing delivery stuff.."
                '''
            }
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

可以在此处查看每个阶段的构建日志

1773121538443.png

# Pipeline script from SCM

这种需要项目下建立一个Jenkinsfile文件

pipeline {
    agent { 
        node {
            label 'docker-agent-python'
            }
      }
    triggers {
        pollSCM '* * * * *'
    }
    stages {
        stage('Build') {
            steps {
                echo "Building.."
                sh '''
                cd myapp
                pip install -r requirements.txt --break-system-packages
                '''
            }
        }
        stage('Test') {
            steps {
                echo "Testing.."
                sh '''
                cd myapp
                python3 hello.py
                python3 hello.py --name=Brad
                '''
            }
        }
        stage('Deliver') {
            steps {
                echo 'Deliver....'
                sh '''
                echo "doing delivery stuff.."
                '''
            }
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

1773122601740.png

1773122635256.png

保存后然后构建

1773123649812.png

# Maven

先在主机上安装jdk环境

yum install java-21-openjdk -y
1

然后在下载maven相关插件

1773731242204.png

然后配置maven环境,可以自己下载,也可以自动安装。

1773731474819.png

配置maven镜像,在conf/settings.xml文件中

    <mirror>
      <id>aliyunmaven</id>
      <mirrorOf>*</mirrorOf>
      <name>Aliyun Maven Central</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
1
2
3
4
5
6

然后建一个maven项目

1773731755902.png

配置Git

1773731805303.png

增加后续操作

1773731888085.png

export BUILD_ID=dontKillMe告诉 Jenkins 不要杀死这个任务启动的任何子进程

export BUILD_ID=dontKillMe
nohup java -jar target/*.jar &
1
2

1773732159379.png

# Publish Over SSH

先安装Publish Over SSH插件

配置相关主机信息

1773733976410.png

1773734039980.png

1773734065608.png

1773734694512.png

1773735592032.png

这时在测试机器上发现进程并未启动,查看log.out提示

nohup: 无法运行命令"java": 没有那个文件或目录
nohup: 无法运行命令"java": 没有那个文件或目录

1
2
3

但是在机器上执行

java -version
1

输出

java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
1
2
3

这是因为配置环境变量是在/etc/profile配置的,需要在/etc/bashrc重新配置即可

1773736029543.png

登录 Shell(login shell)

执行的配置文件顺序:

/etc/profile → ~/.bash_profile → ~/.bashrc
1

非登录 Shell(non-login shell):

~/.bashrc → /etc/bashrc
1

Jenkins 执行 shell 脚本时,通常使用的是非登录 shell:所以配置/etc/profile不行

登录 Shell 启动
     ↓
/etc/profile  ← 你的 Java 配置在这里,但 Jenkins 不会执行这里
     ↓
~/.bash_profile
     ↓
~/.bashrc
     ↓
/etc/bashrc  ← Jenkins 会执行这里,所以配置在这里有效
1
2
3
4
5
6
7
8
9
#DevOps
上次更新: 2026/03/12, 14:16:16
Ansible实践
Jenkins实践

← Ansible实践 Jenkins实践→

最近更新
01
tcpdump
1-27
02
viper
12-20
03
Jenkins实践
12-19
更多文章>
Theme by Vdoing | Copyright © 2024-2026 The Fool
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式