# 一文了解 Jenkins
Jenkins 是一个开源的自动化服务器,广泛用于持续集成(CI)和持续交付(CD)。它可以帮助开发者自动化软件开发过程中的各种任务,如代码检查、构建、测试和部署。
# 安装
# Docker 运行
docker run -d \
--name jenkins \
--restart=on-failure \
-p 10010:8080 \
-v jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkins/jenkins:lts-jdk11
docker run -d \
--name jenkins \
--restart=on-failure \
--privileged \
-u root \
-p 10010:8080 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkins/jenkins
# 查看密码
docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
# 下载 War 运行
# 安装 JDK 或 JRE
apt install openjdk-8-jre
# 选择一个目录
cd /docker/jenkins
# 下载 Jenkins
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
# 运行
java -jar jenkins.war --httpPort=10010
# 保持后台运行
nohup java -jar jenkins.war --httpPort=8080 > jenkins.log &
# 找出进程
ps -aux | grep jenkins
# 杀掉
kill [pid]
vim /etc/init.d/jenkins.sh
#!/bin/bash
# 导入环境变量
export JENKINS_HOME = /docker/jenkins
pid=`ps -ef | grep jenkins.war | grep -v 'grep'| awk '{print $2}'`
if [ -n "$pid" ];then
echo 'jenkins is running...'
else
nohup java -jar /docker/jenkins/jenkins.war --httpPort=10010 > /docker/jenkins/jenkins.log &
fi
# /lib/systemd/system/jenkins.service
[Unit]
Description=Jenkins
After=network.target
[Service]
Type=forking
### jenkins.sh的路径
ExecStart=/root/ghyExploit/sh/jenkins.sh start
ExecReload=
ExecStop=/root/ghyExploit/sh/jenkins.sh stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start jenkins.service
systemctl enable jenkins.service
systemctl status jenkins.service
https://www.cnblogs.com/xing1/p/15181289.html
# Pipeline
Jenkins Pipeline(或简称为 "Pipeline")是一套插件,将持续交付的实现和实施集成到 Jenkins 中。
Jenkins Pipeline 自动化的表达了这样一种流程:将基于版本控制管理的软件持续的交付到您的用户和消费者手中。
Jenkins Pipeline 提供了一套可扩展的工具,用于将“简单到复杂”的交付流程实现为“持续交付即代码”。
Jenkins Pipeline 的定义通常被写入到一个文本文件(称为 Jenkinsfile )中,该文件可以被放入项目的源代码控制库中。
pipeline {
agent {
docker {
image 'node:6-alpine'
args '-p 3000:3000'
}
}
stages {
stage('Build') {
steps {
sh 'npm install'
}
}
}
}
# 定时任务
# 语法介绍
表格一共可以书写 5 个* * * * * * 其中每个*之间需要通过空格或者 tab 键进行隔离开
第一个表示分钟,取值 0~59
第二个表示小时,取值 0~23
第三个表示一个月的第几天,取值 1~31
第四个表示第几月,取值 1~12
第五个*表示一周中的第几天,取值 0~7,其中 0 和 7 代表的都是周几
# 举例
H/15 * * * _ : 表示每隔 15 分钟进行构建一次项目
H H/3 _ * _ : 表示每隔 3 小时进行构建一次项目
H 12 _ * _ : 表示每天的 12 点进行构建一次项目
H H(9-18)/2 _ * 1-5 : 表示每个工作日的早上 9 点到 18 点每隔 2 个小时进行构建一次项目