> For AI agents: the complete documentation index is available at https://www.tteam.icu/llms.txt, the full documentation bundle is available at https://www.tteam.icu/llms-full.txt.

# jenkins

Jenkins 是常用的持续集成与自动化发布工具，适合把构建、测试、制品上传和部署脚本串成流水线。

## 启动

这里使用的是自己打包的镜像，[打包地址](https://github.com/ttdockerfile/jenkins-build2/tree/2.492-debian)。部署前需要确认数据目录、插件版本、JDK 版本和构建节点访问权限。


**master**

```sh file="./jenkins/setup.sh"
#!/bin/bash
echo 'Asia/Shanghai' > /etc/timezone

port=8081
jenkins_version=2.492

docker kill jenkins-${port}
docker rm jenkins-${port}
docker run -d --name jenkins-${port} \
-m 4096m \
--network=host \
--restart=always \
--hostname $(hostname) \
-e LC_ALL="zh_CN.UTF-8" \
-e LANG="zh_CN.UTF-8" \
-e PORT="${port}" \
-e JENKINS_VERSION="${jenkins_version}" \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /etc/hosts:/etc/hosts:ro \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
-v ./maven/data:/data/app/maven/data \
-v ./node/data:/data/app/node/data \
-v ./tools:/data/app/tools \
-v ./data-${port}:/data/app/jenkins/data \
registry.cn-hangzhou.aliyuncs.com/buyfakett/jenkins:${jenkins_version}

```


**agent**

```sh file="./jenkins/setup-agent.sh"
#!/bin/bash
echo 'Asia/Shanghai' > /etc/timezone

jenkins_version=2.492
url=""
secret=""
name="test"
workdir="/data/app/jenkins/data/"

docker kill jenkins-agent
docker rm jenkins-agent
docker run -d --name jenkins-agent \
-m 4096m \
--restart=always \
--hostname $(hostname) \
--network=host \
-e LC_ALL="zh_CN.UTF-8" \
-e LANG="zh_CN.UTF-8" \
-e URL="${url}" \
-e SECRET="${secret}" \
-e NAME="${name}" \
-e WORKDIR="${workdir}" \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /etc/hosts:/etc/hosts:ro \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
-v ./maven/data:/data/app/maven/data \
-v ./node/data:/data/app/node/data \
-v ./tools:/data/app/tools \
-v ./data:/data/app/jenkins/data \
registry.cn-hangzhou.aliyuncs.com/buyfakett/jenkins:${jenkins_version}-agent

```


## 备份

备份脚本用于保存 Jenkins Home 中的任务、插件和关键配置。恢复时建议使用相同或接近的 Jenkins 版本，避免插件兼容性问题。

```sh file="./jenkins/backup_jenkins.sh" title="backup_jenkins.sh"
#!/bin/bash

###############
# jenkins 备份
################

set -x

jenkins_data_dir=/data/app/jenkins/data-8081
jenkins_backup_dir=/data/bakjenkins/
jenkins_backup_file=backup_jenkins_$(date +%Y-%m-%d).zip

mkdir -p ${jenkins_backup_dir}
cd ${jenkins_data_dir} && zip -r ${jenkins_backup_file} *.xml jobs users plugins -x "*fileParameters*" && mv ${jenkins_backup_file} ${jenkins_backup_dir}

```
