<hudson _class='hudson.model.Hudson'><assignedLabel><busyExecutors>0</busyExecutors><idleExecutors>2</idleExecutors><loadStatistics _class='hudson.model.Label$1'></loadStatistics><name>built-in</name><node _class='hudson.model.Hudson'><nodeName></nodeName></node><offline>false</offline><totalExecutors>2</totalExecutors></assignedLabel><mode>NORMAL</mode><nodeDescription>the Jenkins controller's built-in node</nodeDescription><nodeName></nodeName><numExecutors>2</numExecutors><job _class='org.jenkinsci.plugins.workflow.job.WorkflowJob'><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>Backend pipeline restored on 2026-04-01.</description><displayName>zoumh-backend</displayName><fullDisplayName>zoumh-backend</fullDisplayName><fullName>zoumh-backend</fullName><name>zoumh-backend</name><url>https://zoumh.com/jenkins/job/zoumh-backend/</url><buildable>true</buildable><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>23</number><url>https://zoumh.com/jenkins/job/zoumh-backend/23/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>22</number><url>https://zoumh.com/jenkins/job/zoumh-backend/22/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>21</number><url>https://zoumh.com/jenkins/job/zoumh-backend/21/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>20</number><url>https://zoumh.com/jenkins/job/zoumh-backend/20/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>19</number><url>https://zoumh.com/jenkins/job/zoumh-backend/19/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>18</number><url>https://zoumh.com/jenkins/job/zoumh-backend/18/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>17</number><url>https://zoumh.com/jenkins/job/zoumh-backend/17/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>16</number><url>https://zoumh.com/jenkins/job/zoumh-backend/16/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>15</number><url>https://zoumh.com/jenkins/job/zoumh-backend/15/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>14</number><url>https://zoumh.com/jenkins/job/zoumh-backend/14/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>13</number><url>https://zoumh.com/jenkins/job/zoumh-backend/13/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>12</number><url>https://zoumh.com/jenkins/job/zoumh-backend/12/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>11</number><url>https://zoumh.com/jenkins/job/zoumh-backend/11/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>10</number><url>https://zoumh.com/jenkins/job/zoumh-backend/10/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>9</number><url>https://zoumh.com/jenkins/job/zoumh-backend/9/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>8</number><url>https://zoumh.com/jenkins/job/zoumh-backend/8/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>7</number><url>https://zoumh.com/jenkins/job/zoumh-backend/7/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>6</number><url>https://zoumh.com/jenkins/job/zoumh-backend/6/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>5</number><url>https://zoumh.com/jenkins/job/zoumh-backend/5/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>4</number><url>https://zoumh.com/jenkins/job/zoumh-backend/4/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>3</number><url>https://zoumh.com/jenkins/job/zoumh-backend/3/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>2</number><url>https://zoumh.com/jenkins/job/zoumh-backend/2/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>1</number><url>https://zoumh.com/jenkins/job/zoumh-backend/1/</url></build><color>red</color><firstBuild _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>1</number><url>https://zoumh.com/jenkins/job/zoumh-backend/1/</url></firstBuild><healthReport><description>Build stability: 4 out of the last 5 builds failed.</description><iconClassName>icon-health-00to19</iconClassName><iconUrl>health-00to19.png</iconUrl><score>20</score></healthReport><keepDependencies>false</keepDependencies><lastBuild _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>23</number><url>https://zoumh.com/jenkins/job/zoumh-backend/23/</url></lastBuild><lastCompletedBuild _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>23</number><url>https://zoumh.com/jenkins/job/zoumh-backend/23/</url></lastCompletedBuild><lastFailedBuild _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>23</number><url>https://zoumh.com/jenkins/job/zoumh-backend/23/</url></lastFailedBuild><lastStableBuild _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>19</number><url>https://zoumh.com/jenkins/job/zoumh-backend/19/</url></lastStableBuild><lastSuccessfulBuild _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>19</number><url>https://zoumh.com/jenkins/job/zoumh-backend/19/</url></lastSuccessfulBuild><lastUnsuccessfulBuild _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>23</number><url>https://zoumh.com/jenkins/job/zoumh-backend/23/</url></lastUnsuccessfulBuild><nextBuildNumber>24</nextBuildNumber><property _class='hudson.model.ParametersDefinitionProperty'><parameterDefinition _class='hudson.model.ChoiceParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>BUILD_PROFILE</name><value>prod</value></defaultParameterValue><description>Maven profile</description><name>BUILD_PROFILE</name><type>ChoiceParameterDefinition</type><choice>prod</choice><choice>local</choice></parameterDefinition><parameterDefinition _class='hudson.model.ChoiceParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>BUILD_SCOPE</name><value>all</value></defaultParameterValue><description>Build target</description><name>BUILD_SCOPE</name><type>ChoiceParameterDefinition</type><choice>all</choice><choice>gateway</choice><choice>auth</choice><choice>system</choice></parameterDefinition><parameterDefinition _class='hudson.model.BooleanParameterDefinition'><defaultParameterValue _class='hudson.model.BooleanParameterValue'><name>DEPLOY</name><value>true</value></defaultParameterValue><description>Deploy to remote server</description><name>DEPLOY</name><type>BooleanParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.ChoiceParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>DEPLOY_MODE</name><value>local</value></defaultParameterValue><description>Deploy to local Jenkins server or remote SSH host</description><name>DEPLOY_MODE</name><type>ChoiceParameterDefinition</type><choice>local</choice><choice>ssh</choice></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>HOST_JENKINS_DIR</name><value>/zoumh/data/jenkins</value></defaultParameterValue><description>Host path mounted as JENKINS_HOME</description><name>HOST_JENKINS_DIR</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>MAVEN_IMAGE</name><value>maven:3.9.9-eclipse-temurin-21</value></defaultParameterValue><description>Container image used for Maven builds</description><name>MAVEN_IMAGE</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>DEPLOY_DIR</name><value>/zoumh/java/zmh/backend</value></defaultParameterValue><description>Remote backend artifact directory</description><name>DEPLOY_DIR</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>ROOT_DOC_PATH</name><value>/zoumh/java/zmh/README-ops.md</value></defaultParameterValue><description>Root ops readme path</description><name>ROOT_DOC_PATH</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>DOCS_DIR</name><value>/zoumh/java/zmh/backend/docs</value></defaultParameterValue><description>Remote backend docs directory</description><name>DOCS_DIR</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>LOG_DIR</name><value>/zoumh/java/zmh/backend/logs</value></defaultParameterValue><description>Remote backend log directory</description><name>LOG_DIR</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>PUBLIC_NGINX_DIR</name><value>/zoumh/java/zmh/backend/nginx</value></defaultParameterValue><description>Remote public nginx config directory</description><name>PUBLIC_NGINX_DIR</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>PUBLIC_NGINX_CONF_TARGET</name><value></value></defaultParameterValue><description>Live public nginx config path, leave empty to skip sync</description><name>PUBLIC_NGINX_CONF_TARGET</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>DEPLOY_SCRIPT_DIR</name><value>/zoumh/java/zmh/backend/bin</value></defaultParameterValue><description>Remote backend script directory</description><name>DEPLOY_SCRIPT_DIR</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>SSH_HOST</name><value>156.225.28.110</value></defaultParameterValue><description>Deploy host when DEPLOY_MODE=ssh</description><name>SSH_HOST</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>SSH_USER</name><value>root</value></defaultParameterValue><description>Deploy user when DEPLOY_MODE=ssh</description><name>SSH_USER</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>SSH_CREDENTIALS_ID</name><value>zoumh-ssh</value></defaultParameterValue><description>SSH credentials id in Jenkins</description><name>SSH_CREDENTIALS_ID</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>MAVEN_REPO</name><value>/zoumh/data/jenkins/caches/maven</value></defaultParameterValue><description>Persistent Maven dependency cache</description><name>MAVEN_REPO</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>POST_DEPLOY_CMD</name><value></value></defaultParameterValue><description>Optional command after backend containers are recreated</description><name>POST_DEPLOY_CMD</name><type>StringParameterDefinition</type></parameterDefinition></property><property _class='org.jenkinsci.plugins.workflow.job.properties.DisableConcurrentBuildsJobProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><inQueue>false</inQueue><resumeBlocked>false</resumeBlocked></job><job _class='org.jenkinsci.plugins.workflow.job.WorkflowJob'><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>Frontend pipeline restored on 2026-04-01.</description><displayName>zoumh-frontend</displayName><fullDisplayName>zoumh-frontend</fullDisplayName><fullName>zoumh-frontend</fullName><name>zoumh-frontend</name><url>https://zoumh.com/jenkins/job/zoumh-frontend/</url><buildable>true</buildable><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>28</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/28/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>27</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/27/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>26</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/26/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>25</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/25/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>24</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/24/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>23</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/23/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>22</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/22/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>21</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/21/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>20</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/20/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>19</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/19/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>18</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/18/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>17</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/17/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>16</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/16/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>15</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/15/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>14</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/14/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>13</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/13/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>12</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/12/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>11</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/11/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>10</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/10/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>9</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/9/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>8</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/8/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>7</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/7/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>6</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/6/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>5</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/5/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>4</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/4/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>3</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/3/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>2</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/2/</url></build><build _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>1</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/1/</url></build><color>blue</color><firstBuild _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>1</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/1/</url></firstBuild><healthReport><description>Build stability: 1 out of the last 5 builds failed.</description><iconClassName>icon-health-60to79</iconClassName><iconUrl>health-60to79.png</iconUrl><score>80</score></healthReport><keepDependencies>false</keepDependencies><lastBuild _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>28</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/28/</url></lastBuild><lastCompletedBuild _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>28</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/28/</url></lastCompletedBuild><lastFailedBuild _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>27</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/27/</url></lastFailedBuild><lastStableBuild _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>28</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/28/</url></lastStableBuild><lastSuccessfulBuild _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>28</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/28/</url></lastSuccessfulBuild><lastUnsuccessfulBuild _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><number>27</number><url>https://zoumh.com/jenkins/job/zoumh-frontend/27/</url></lastUnsuccessfulBuild><nextBuildNumber>29</nextBuildNumber><property _class='hudson.model.ParametersDefinitionProperty'><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>NODE_BUILD_CMD</name><value>npm install --cache "$NPM_CACHE_DIR" --prefer-offline &amp;&amp; npm run build:prod</value></defaultParameterValue><description>Frontend build command</description><name>NODE_BUILD_CMD</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.BooleanParameterDefinition'><defaultParameterValue _class='hudson.model.BooleanParameterValue'><name>DEPLOY</name><value>true</value></defaultParameterValue><description>Deploy to remote server</description><name>DEPLOY</name><type>BooleanParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.ChoiceParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>DEPLOY_MODE</name><value>local</value></defaultParameterValue><description>Deploy to local Jenkins server or remote SSH host</description><name>DEPLOY_MODE</name><type>ChoiceParameterDefinition</type><choice>local</choice><choice>ssh</choice></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>HOST_JENKINS_DIR</name><value>/zoumh/data/jenkins</value></defaultParameterValue><description>Host path mounted as JENKINS_HOME</description><name>HOST_JENKINS_DIR</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>NODE_IMAGE</name><value>node:20-bullseye</value></defaultParameterValue><description>Container image used for frontend builds</description><name>NODE_IMAGE</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>DEPLOY_DIR</name><value>/zoumh/java/zmh/frontend</value></defaultParameterValue><description>Remote frontend artifact directory</description><name>DEPLOY_DIR</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>NGINX_HTML_DIR</name><value>/zoumh/data/nginx/www/zoumh.com</value></defaultParameterValue><description>Frontend static html directory</description><name>NGINX_HTML_DIR</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>NGINX_CONF_DIR</name><value>/zoumh/java/zmh/frontend/nginx</value></defaultParameterValue><description>Frontend nginx config directory</description><name>NGINX_CONF_DIR</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>DEPLOY_SCRIPT_DIR</name><value>/zoumh/java/zmh/frontend/bin</value></defaultParameterValue><description>Remote frontend script directory</description><name>DEPLOY_SCRIPT_DIR</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>SSH_HOST</name><value>156.225.28.110</value></defaultParameterValue><description>Deploy host when DEPLOY_MODE=ssh</description><name>SSH_HOST</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>SSH_USER</name><value>root</value></defaultParameterValue><description>Deploy user when DEPLOY_MODE=ssh</description><name>SSH_USER</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>SSH_CREDENTIALS_ID</name><value>zoumh-ssh</value></defaultParameterValue><description>SSH credentials id in Jenkins</description><name>SSH_CREDENTIALS_ID</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>NPM_CACHE_DIR</name><value>/zoumh/data/jenkins/caches/npm</value></defaultParameterValue><description>Persistent npm cache directory</description><name>NPM_CACHE_DIR</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>NGINX_IMAGE</name><value>nginx:1.27-alpine</value></defaultParameterValue><description>Frontend nginx image</description><name>NGINX_IMAGE</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>NGINX_CONTAINER_NAME</name><value>ruoyi-nginx</value></defaultParameterValue><description>Frontend container name</description><name>NGINX_CONTAINER_NAME</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>FRONTEND_PROXY_PASS</name><value>http://127.0.0.1:8080/</value></defaultParameterValue><description>Backend gateway proxy target</description><name>FRONTEND_PROXY_PASS</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>POST_DEPLOY_CMD</name><value></value></defaultParameterValue><description>Optional command after frontend files are extracted</description><name>POST_DEPLOY_CMD</name><type>StringParameterDefinition</type></parameterDefinition></property><property _class='org.jenkinsci.plugins.workflow.job.properties.DisableConcurrentBuildsJobProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><inQueue>false</inQueue><resumeBlocked>false</resumeBlocked></job><overallLoad><availableExecutors></availableExecutors><busyExecutors></busyExecutors><connectingExecutors></connectingExecutors><definedExecutors></definedExecutors><idleExecutors></idleExecutors><onlineExecutors></onlineExecutors><queueLength></queueLength><totalExecutors></totalExecutors><totalQueueLength></totalQueueLength></overallLoad><primaryView _class='hudson.model.AllView'><job _class='org.jenkinsci.plugins.workflow.job.WorkflowJob'><name>zoumh-backend</name><url>https://zoumh.com/jenkins/job/zoumh-backend/</url><color>red</color></job><job _class='org.jenkinsci.plugins.workflow.job.WorkflowJob'><name>zoumh-frontend</name><url>https://zoumh.com/jenkins/job/zoumh-frontend/</url><color>blue</color></job><name>all</name><url>https://zoumh.com/jenkins/</url></primaryView><quietingDown>false</quietingDown><slaveAgentPort>50000</slaveAgentPort><unlabeledLoad _class='jenkins.model.UnlabeledLoadStatistics'><availableExecutors></availableExecutors><busyExecutors></busyExecutors><connectingExecutors></connectingExecutors><definedExecutors></definedExecutors><idleExecutors></idleExecutors><onlineExecutors></onlineExecutors><queueLength></queueLength><totalExecutors></totalExecutors></unlabeledLoad><useCrumbs>true</useCrumbs><useSecurity>true</useSecurity><view _class='hudson.model.AllView'><job _class='org.jenkinsci.plugins.workflow.job.WorkflowJob'><name>zoumh-backend</name><url>https://zoumh.com/jenkins/job/zoumh-backend/</url><color>red</color></job><job _class='org.jenkinsci.plugins.workflow.job.WorkflowJob'><name>zoumh-frontend</name><url>https://zoumh.com/jenkins/job/zoumh-frontend/</url><color>blue</color></job><name>all</name><url>https://zoumh.com/jenkins/</url></view></hudson>