使用http请求触发jenkins构建
我的需求:
每当有一个post请求发送,触发我jenkins的一个构建,生成一个新docker实例。
安装jenkins
使用docker构建
镜像:
https://docker.unsee.tech
docker pull jenkins/jenkins:lts
mkdir -p ~/jenkins_home
sudo chown 1000:1000 ~/jenkins_home
启动
docker run -d -p 8080:8080 -p 50000:50000 \
--name jenkins \
-v ~/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkins/jenkins:lts
解锁 Jenkins
初次输入需要密码 密码位于
/var/jenkins_home/secrets/initialAdminPassword
因为在docker里 所以
1.进入 Jenkins 容器
2.查看初始管理员密码
3.复制
4.退出容器
docker exec -it jenkins /bin/bash
cat /var/jenkins_home/secrets/initialAdminPassword
exit
========================================================
进入jenkins凭据 =>Manage Jenkins =>凭据=>点击system=>点击 全局凭据 (unrestricted)=>右上角add credentials
创建gitlab的用户名密码
Manage Jenkins => tool 配置git 地址 /usr/bin/git
which git 看git位置
X 远程URL触发构建
X https://blog.csdn.net/qq_45400167/article/details/138073498
X 触发构建url: http://192.168.200.100:16060/job/leadnews-admin/build?token=88888888
√ 我更多的希望是自定义脚本构建。
使用Pipeline
最终效果类似
SERVICE_NAME=demo01 docker-compose --project-name demo01 up -d
SERVICE_NAME=demo02 docker-compose --project-name demo02 up -d
version: '3'
services:
zzz_aaa:
container_name: ${SERVICE_NAME}
image: xxx-yyy
build:
context: ./
dockerfile: ./Dockerfile
volumes:
- /etc/localtime:/etc/localtime:ro
extra_hosts:
- "host.docker.internal:host-gateway"
networks:
- app_network
networks:
app_network:
driver: bridge
新建job 选择pipeline流水线
https://blog.51cto.com/u_16099271/11672963
完了,docker对不上硬盘 只能重新安装
https://www.jenkins.io/doc/book/installing/linux/
卸载JDK11 安装17 不能装旧版本否则社区插件拉不下来
pipeline {
agent any
parameters {
choice(name: 'ACTION', choices: ['start', 'stop'], description: '选择启动或停止服务')
string(name: 'SERVICE_NAME', defaultValue: 'demo05', description: '服务名称')
}
environment {
PROJECT_DIR = '/client/cluster-guguremote/guguremote-client' // 本地项目目录
}
stages {
stage('Start/Stop Service') {
steps {
script {
def serviceName = params.SERVICE_NAME
def action = params.ACTION
try {
dir("${env.PROJECT_DIR}") {
if (action == 'start') {
sh "docker-compose --project-name ${serviceName} up -d"
} else if (action == 'stop') {
sh "docker-compose --project-name ${serviceName} down --rmi all"
} else {
error "无效的操作: ${action}"
}
}
} catch (Exception e) {
error "操作服务 ${serviceName} 失败: ${e.message}"
}
}
}

浙公网安备 33010602011771号