Files
ljwx-health/docker/compose/jenkins/scripts/create-pipeline-job.sh
T
bruno 8c3881bf89 🚀 feat: 企业级CI/CD基础设施完整部署方案
✨ 新功能:
- 一键自动化部署脚本 (build-infra.sh)
- 统一端口配置 (3开头端口,避免冲突)
- 多平台Docker构建支持 (AMD64 + ARM64)
- Jenkins Configuration as Code (零手动配置)
- 完整的服务验证和健康检查

🏗️ 核心组件:
- Jenkins LTS + JDK21 (端口38080)
- Gitea 1.21 (端口33000, SSH: 32222)
- Docker Registry + UI (端口35001/35002)
- 统一cicd-network网络

📋 管理工具:
- 自动化部署和验证脚本
- 健康检查和日志管理工具
- 完整的文档和故障排查指南

🎯 已验证功能:
- 所有服务正常启动和运行
- API和Web界面完全可访问
- 多平台构建环境就绪
- 完整的CI/CD流水线支持

适用环境: Mac Studio M2 + Docker Desktop
2025-08-23 22:11:50 +08:00

84 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
# Pipeline作业生成器
set -e
# 参数
JOB_NAME="$1"
REPO_URL="$2"
PIPELINE_TYPE="$3"
BRANCH="$4"
if [[ -z "$JOB_NAME" || -z "$REPO_URL" ]]; then
echo "用法: $0 <作业名称> <仓库URL> [Pipeline类型] [分支]"
echo ""
echo "Pipeline类型:"
echo " webapp - Web应用 (默认)"
echo " microservice - 微服务"
echo " docker - Docker构建"
echo " multistage - 多阶段构建"
echo ""
echo "示例:"
echo " $0 my-webapp http://gitea:3000/user/repo.git webapp main"
exit 1
fi
PIPELINE_TYPE=${PIPELINE_TYPE:-webapp}
BRANCH=${BRANCH:-main}
# 生成作业配置XML
cat > "/tmp/${JOB_NAME}.xml" << EOF
<?xml version='1.1' encoding='UTF-8'?>
<flow-definition plugin="workflow-job">
<actions/>
<description>自动生成的${PIPELINE_TYPE} Pipeline作业</description>
<keepDependencies>false</keepDependencies>
<properties>
<org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty>
<triggers>
<org.jenkinsci.plugins.gwt.GenericTrigger plugin="generic-webhook-trigger">
<spec></spec>
<genericVariables>
<org.jenkinsci.plugins.gwt.GenericVariable>
<expressionType>JSONPath</expressionType>
<key>GITEA_REPO</key>
<value>\$.repository.name</value>
</org.jenkinsci.plugins.gwt.GenericVariable>
<org.jenkinsci.plugins.gwt.GenericVariable>
<expressionType>JSONPath</expressionType>
<key>GITEA_BRANCH</key>
<value>\$.ref</value>
</org.jenkinsci.plugins.gwt.GenericVariable>
</genericVariables>
<regexpFilterText>\$GITEA_REPO</regexpFilterText>
<regexpFilterExpression>$JOB_NAME</regexpFilterExpression>
<printContributedVariables>true</printContributedVariables>
<printPostContent>true</printPostContent>
</org.jenkinsci.plugins.gwt.GenericTrigger>
</triggers>
</org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty>
</properties>
<definition class="org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition" plugin="workflow-cps">
<scm class="hudson.plugins.git.GitSCM" plugin="git">
<configVersion>2</configVersion>
<userRemoteConfigs>
<hudson.plugins.git.UserRemoteConfig>
<url>$REPO_URL</url>
</hudson.plugins.git.UserRemoteConfig>
</userRemoteConfigs>
<branches>
<hudson.plugins.git.BranchSpec>
<name>*/$BRANCH</name>
</hudson.plugins.git.BranchSpec>
</branches>
<doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
<submoduleCfg class="empty-list"/>
<extensions/>
</scm>
<scriptPath>Jenkinsfile</scriptPath>
<lightweight>true</lightweight>
</definition>
<triggers/>
<disabled>false</disabled>
</flow-definition>