#!/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' 2.450 2 NORMAL true true false ${JENKINS_HOME}/workspace/${ITEM_FULLNAME} ${JENKINS_HOME}/builds/${ITEM_FULLNAME} all false false all 50000 JNLP-connect JNLP2-connect XML fi # Start Jenkins log "Starting Jenkins WAR file" exec java -jar /app/pkg/jenkins.war ${JENKINS_OPTS}