{
  "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowJob",
  "actions" : [
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction"
    },
    {
      "_class" : "com.cloudbees.plugins.credentials.ViewCredentialsAction"
    }
  ],
  "description" : "Frontend pipeline restored on 2026-04-01.",
  "displayName" : "zoumh-frontend",
  "displayNameOrNull" : None,
  "fullDisplayName" : "zoumh-frontend",
  "fullName" : "zoumh-frontend",
  "name" : "zoumh-frontend",
  "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/",
  "buildable" : True,
  "builds" : [
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 28,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/28/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 27,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/27/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 26,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/26/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 25,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/25/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 24,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/24/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 23,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/23/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 22,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/22/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 21,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/21/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 20,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/20/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 19,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/19/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 18,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/18/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 17,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/17/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 16,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/16/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 15,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/15/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 14,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/14/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 13,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/13/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 12,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/12/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 11,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/11/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 10,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/10/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 9,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/9/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 8,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/8/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 7,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/7/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 6,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/6/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 5,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/5/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 4,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/4/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 3,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/3/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 2,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/2/"
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "number" : 1,
      "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/1/"
    }
  ],
  "color" : "blue",
  "firstBuild" : {
    "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
    "number" : 1,
    "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/1/"
  },
  "healthReport" : [
    {
      "description" : "Build stability: 1 out of the last 5 builds failed.",
      "iconClassName" : "icon-health-60to79",
      "iconUrl" : "health-60to79.png",
      "score" : 80
    }
  ],
  "keepDependencies" : False,
  "lastBuild" : {
    "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
    "number" : 28,
    "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/28/"
  },
  "lastCompletedBuild" : {
    "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
    "number" : 28,
    "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/28/"
  },
  "lastFailedBuild" : {
    "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
    "number" : 27,
    "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/27/"
  },
  "lastStableBuild" : {
    "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
    "number" : 28,
    "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/28/"
  },
  "lastSuccessfulBuild" : {
    "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
    "number" : 28,
    "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/28/"
  },
  "lastUnstableBuild" : None,
  "lastUnsuccessfulBuild" : {
    "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
    "number" : 27,
    "url" : "https://zoumh.com/jenkins/view/all/job/zoumh-frontend/27/"
  },
  "nextBuildNumber" : 29,
  "property" : [
    {
      "_class" : "hudson.model.ParametersDefinitionProperty",
      "parameterDefinitions" : [
        {
          "_class" : "hudson.model.StringParameterDefinition",
          "defaultParameterValue" : {
            "_class" : "hudson.model.StringParameterValue",
            "name" : "NODE_BUILD_CMD",
            "value" : "npm install --cache \"$NPM_CACHE_DIR\" --prefer-offline && npm run build:prod"
          },
          "description" : "Frontend build command",
          "name" : "NODE_BUILD_CMD",
          "type" : "StringParameterDefinition"
        },
        {
          "_class" : "hudson.model.BooleanParameterDefinition",
          "defaultParameterValue" : {
            "_class" : "hudson.model.BooleanParameterValue",
            "name" : "DEPLOY",
            "value" : True
          },
          "description" : "Deploy to remote server",
          "name" : "DEPLOY",
          "type" : "BooleanParameterDefinition"
        },
        {
          "_class" : "hudson.model.ChoiceParameterDefinition",
          "defaultParameterValue" : {
            "_class" : "hudson.model.StringParameterValue",
            "name" : "DEPLOY_MODE",
            "value" : "local"
          },
          "description" : "Deploy to local Jenkins server or remote SSH host",
          "name" : "DEPLOY_MODE",
          "type" : "ChoiceParameterDefinition",
          "choices" : [
            "local",
            "ssh"
          ]
        },
        {
          "_class" : "hudson.model.StringParameterDefinition",
          "defaultParameterValue" : {
            "_class" : "hudson.model.StringParameterValue",
            "name" : "HOST_JENKINS_DIR",
            "value" : "/zoumh/data/jenkins"
          },
          "description" : "Host path mounted as JENKINS_HOME",
          "name" : "HOST_JENKINS_DIR",
          "type" : "StringParameterDefinition"
        },
        {
          "_class" : "hudson.model.StringParameterDefinition",
          "defaultParameterValue" : {
            "_class" : "hudson.model.StringParameterValue",
            "name" : "NODE_IMAGE",
            "value" : "node:20-bullseye"
          },
          "description" : "Container image used for frontend builds",
          "name" : "NODE_IMAGE",
          "type" : "StringParameterDefinition"
        },
        {
          "_class" : "hudson.model.StringParameterDefinition",
          "defaultParameterValue" : {
            "_class" : "hudson.model.StringParameterValue",
            "name" : "DEPLOY_DIR",
            "value" : "/zoumh/java/zmh/frontend"
          },
          "description" : "Remote frontend artifact directory",
          "name" : "DEPLOY_DIR",
          "type" : "StringParameterDefinition"
        },
        {
          "_class" : "hudson.model.StringParameterDefinition",
          "defaultParameterValue" : {
            "_class" : "hudson.model.StringParameterValue",
            "name" : "NGINX_HTML_DIR",
            "value" : "/zoumh/data/nginx/www/zoumh.com"
          },
          "description" : "Frontend static html directory",
          "name" : "NGINX_HTML_DIR",
          "type" : "StringParameterDefinition"
        },
        {
          "_class" : "hudson.model.StringParameterDefinition",
          "defaultParameterValue" : {
            "_class" : "hudson.model.StringParameterValue",
            "name" : "NGINX_CONF_DIR",
            "value" : "/zoumh/java/zmh/frontend/nginx"
          },
          "description" : "Frontend nginx config directory",
          "name" : "NGINX_CONF_DIR",
          "type" : "StringParameterDefinition"
        },
        {
          "_class" : "hudson.model.StringParameterDefinition",
          "defaultParameterValue" : {
            "_class" : "hudson.model.StringParameterValue",
            "name" : "DEPLOY_SCRIPT_DIR",
            "value" : "/zoumh/java/zmh/frontend/bin"
          },
          "description" : "Remote frontend script directory",
          "name" : "DEPLOY_SCRIPT_DIR",
          "type" : "StringParameterDefinition"
        },
        {
          "_class" : "hudson.model.StringParameterDefinition",
          "defaultParameterValue" : {
            "_class" : "hudson.model.StringParameterValue",
            "name" : "SSH_HOST",
            "value" : "156.225.28.110"
          },
          "description" : "Deploy host when DEPLOY_MODE=ssh",
          "name" : "SSH_HOST",
          "type" : "StringParameterDefinition"
        },
        {
          "_class" : "hudson.model.StringParameterDefinition",
          "defaultParameterValue" : {
            "_class" : "hudson.model.StringParameterValue",
            "name" : "SSH_USER",
            "value" : "root"
          },
          "description" : "Deploy user when DEPLOY_MODE=ssh",
          "name" : "SSH_USER",
          "type" : "StringParameterDefinition"
        },
        {
          "_class" : "hudson.model.StringParameterDefinition",
          "defaultParameterValue" : {
            "_class" : "hudson.model.StringParameterValue",
            "name" : "SSH_CREDENTIALS_ID",
            "value" : "zoumh-ssh"
          },
          "description" : "SSH credentials id in Jenkins",
          "name" : "SSH_CREDENTIALS_ID",
          "type" : "StringParameterDefinition"
        },
        {
          "_class" : "hudson.model.StringParameterDefinition",
          "defaultParameterValue" : {
            "_class" : "hudson.model.StringParameterValue",
            "name" : "NPM_CACHE_DIR",
            "value" : "/zoumh/data/jenkins/caches/npm"
          },
          "description" : "Persistent npm cache directory",
          "name" : "NPM_CACHE_DIR",
          "type" : "StringParameterDefinition"
        },
        {
          "_class" : "hudson.model.StringParameterDefinition",
          "defaultParameterValue" : {
            "_class" : "hudson.model.StringParameterValue",
            "name" : "NGINX_IMAGE",
            "value" : "nginx:1.27-alpine"
          },
          "description" : "Frontend nginx image",
          "name" : "NGINX_IMAGE",
          "type" : "StringParameterDefinition"
        },
        {
          "_class" : "hudson.model.StringParameterDefinition",
          "defaultParameterValue" : {
            "_class" : "hudson.model.StringParameterValue",
            "name" : "NGINX_CONTAINER_NAME",
            "value" : "ruoyi-nginx"
          },
          "description" : "Frontend container name",
          "name" : "NGINX_CONTAINER_NAME",
          "type" : "StringParameterDefinition"
        },
        {
          "_class" : "hudson.model.StringParameterDefinition",
          "defaultParameterValue" : {
            "_class" : "hudson.model.StringParameterValue",
            "name" : "FRONTEND_PROXY_PASS",
            "value" : "http://127.0.0.1:8080/"
          },
          "description" : "Backend gateway proxy target",
          "name" : "FRONTEND_PROXY_PASS",
          "type" : "StringParameterDefinition"
        },
        {
          "_class" : "hudson.model.StringParameterDefinition",
          "defaultParameterValue" : {
            "_class" : "hudson.model.StringParameterValue",
            "name" : "POST_DEPLOY_CMD",
            "value" : ""
          },
          "description" : "Optional command after frontend files are extracted",
          "name" : "POST_DEPLOY_CMD",
          "type" : "StringParameterDefinition"
        }
      ]
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.properties.DisableConcurrentBuildsJobProperty"
    }
  ],
  "concurrentBuild" : False,
  "disabled" : False,
  "inQueue" : False,
  "queueItem" : None,
  "resumeBlocked" : False
}