From f87756ee2e06da26df83963fda5a1e4f7cc516bb Mon Sep 17 00:00:00 2001 From: kyu Date: Thu, 28 May 2026 00:08:10 +0900 Subject: [PATCH] ci: add minimal Jenkinsfile (validate-only, no deploy) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stages: checkout info, repo layout, compose syntax validation. No build/deploy yet — used to verify Jenkins ↔ Gitea wiring before adding real deployment stages. Co-Authored-By: Claude Opus 4.7 (1M context) --- Jenkinsfile | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..6eb240d --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,57 @@ +pipeline { + agent any + + options { + timestamps() + buildDiscarder(logRotator(numToKeepStr: '20')) + timeout(time: 10, unit: 'MINUTES') + } + + stages { + stage('Checkout info') { + steps { + script { + echo "Branch: ${env.BRANCH_NAME ?: 'n/a'}" + echo "Commit: ${env.GIT_COMMIT ?: 'n/a'}" + echo "Build : #${env.BUILD_NUMBER} on ${env.NODE_NAME}" + } + sh 'git log -1 --pretty=fuller || true' + } + } + + stage('Repo layout') { + steps { + sh ''' + echo "=== top-level ===" + ls -la | head -30 + echo + echo "=== compose files ===" + ls -la docker-compose*.yml 2>/dev/null || true + ''' + } + } + + stage('Validate compose') { + steps { + sh ''' + if command -v docker >/dev/null 2>&1; then + echo "docker version:" + docker --version + echo + echo "=== compose config (syntax only, no apply) ===" + docker compose -f docker-compose.yml config --quiet \ + && echo "OK: docker-compose.yml is valid" \ + || echo "WARN: compose validation failed (non-fatal for now)" + else + echo "docker not available in this build environment, skipping" + fi + ''' + } + } + } + + post { + success { echo "SUCCESS — no deployment performed (by design)" } + failure { echo "FAILED — check logs" } + } +}