使用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}"
                    }
                }
            }
posted @ 2024-12-24 12:02  空心橙子  阅读(60)  评论(0)    收藏  举报