- Complete Jenkins package with Java 17 and WAR file download - Proper CloudronManifest.json with correct metadata - Custom start.sh script with Jenkins configuration - Health check endpoint configured for /login - Follows KNELCloudron- naming convention - Added comprehensive packaging shortlist with 56 applications prioritized by phase
78 lines
2.5 KiB
Bash
78 lines
2.5 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
log() { echo "[start] $(date -Is) $*"; }
|
|
abort() { echo "[start] ERROR: $*" >&2; exit 1; }
|
|
|
|
# Defaults
|
|
: "${APP_PORT:=8080}"
|
|
: "${JENKINS_HOME:=/app/data/jenkins_home}"
|
|
|
|
log "Starting Jenkins CI/CD on port ${APP_PORT}"
|
|
|
|
# Ensure Jenkins home directory exists and is writable
|
|
mkdir -p "${JENKINS_HOME}"
|
|
chown -R cloudron:cloudron /app/data || true
|
|
|
|
# Set Jenkins environment variables
|
|
export JENKINS_HOME="${JENKINS_HOME}"
|
|
export JENKINS_OPTS="--httpPort=${APP_PORT} --httpListenAddress=0.0.0.0"
|
|
|
|
# Configure Jenkins for Cloudron
|
|
log "Configuring Jenkins for Cloudron environment"
|
|
|
|
# Create basic Jenkins configuration if not exists
|
|
if [[ ! -f "${JENKINS_HOME}/config.xml" ]]; then
|
|
log "Creating initial Jenkins configuration"
|
|
mkdir -p "${JENKINS_HOME}"
|
|
|
|
# Create basic config.xml for Jenkins
|
|
cat > "${JENKINS_HOME}/config.xml" <<'XML'
|
|
<?xml version='1.1' encoding='UTF-8'?>
|
|
<hudson>
|
|
<version>2.450</version>
|
|
<numExecutors>2</numExecutors>
|
|
<mode>NORMAL</mode>
|
|
<useSecurity>true</useSecurity>
|
|
<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy"/>
|
|
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
|
|
<disableSignup>true</disableSignup>
|
|
</securityRealm>
|
|
<disableRememberMe>false</disableRememberMe>
|
|
<projectNamingStrategy class="jenkins.model.ProjectNamingStrategy$DefaultProjectNamingStrategy"/>
|
|
<workspaceDir>${JENKINS_HOME}/workspace/${ITEM_FULLNAME}</workspaceDir>
|
|
<buildsDir>${JENKINS_HOME}/builds/${ITEM_FULLNAME}</buildsDir>
|
|
<markupFormatter class="hudson.markup.RawHtmlMarkupFormatter" plugin="antisamy-markup-formatter@3.1"/>
|
|
<jdks/>
|
|
<viewsTabBar class="hudson.views.DefaultViewsTabBar"/>
|
|
<myViewsTabBar class="hudson.views.DefaultMyViewsTabBar"/>
|
|
<clouds/>
|
|
<slaves/>
|
|
<scm class="hudson.scm.NullSCM"/>
|
|
<views>
|
|
<hudson.model.AllView>
|
|
<owner class="hudson" reference="../../.."/>
|
|
<name>all</name>
|
|
<filterExecutors>false</filterExecutors>
|
|
<filterQueue>false</filterQueue>
|
|
<properties class="hudson.model.View$PropertyList"/>
|
|
</hudson.model.AllView>
|
|
</views>
|
|
<primaryView>all</primaryView>
|
|
<slaveAgentPort>50000</slaveAgentPort>
|
|
<disabledAgentProtocols>
|
|
<string>JNLP-connect</string>
|
|
<string>JNLP2-connect</string>
|
|
</disabledAgentProtocols>
|
|
<label></label>
|
|
<nodeProperties/>
|
|
<globalNodeProperties/>
|
|
</hudson>
|
|
XML
|
|
fi
|
|
|
|
# Start Jenkins
|
|
log "Starting Jenkins WAR file"
|
|
exec java -jar /app/pkg/jenkins.war ${JENKINS_OPTS}
|
|
|