From a733644d67d98ed2ecc7642978e81669f98a3f5a Mon Sep 17 00:00:00 2001 From: David Ali Date: Mon, 5 Jan 2026 22:27:20 +0100 Subject: [PATCH] fix: npm publish --- Jenkinsfile | 116 ++++++++++++++++++++++++++-------------------------- 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 1ffcc9a..c252fb0 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -54,64 +54,64 @@ pipeline { // ETAP 2: MAIN (Weryfikacja wersji i Publikacja w Dockerze) // ========================================================= stage('CD: Publish to NPM (Main)') { - when { - branch 'main' - } - steps { - withCredentials([string(credentialsId: 'npm-token', variable: 'NPM_TOKEN')]) { - script { - echo '--- [MAIN] Start procedury publikacji ---' - - // 1. Pobierz wersję (bez zmian) - def localVersion = sh(script: "grep '\"version\":' package.json | cut -d\\\" -f4", returnStdout: true).trim() - echo "Lokalna wersja w package.json: ${localVersion}" - - // 2. Utwórz plik .npmrc lokalnie - sh 'echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > .npmrc' - - // UWAGA: Nie musimy robić 'docker compose build', bo używamy obrazu z testów - // Jeśli chcesz mieć pewność, że obraz jest świeży, możesz zostawić build, - // ale kluczowe jest mapowanie w następnych krokach. - - // 3. Sprawdź wersję w NPM - def versionExists = false - try { - // Dodajemy flagę -w (workdir) aby npm widział package.json - sh "docker compose -f docker-compose.test.yml run --rm -w /app/wc-timer app npm view wc-timer@${localVersion} version" - versionExists = true - } catch (err) { - versionExists = false - } - - if (versionExists) { - echo "❌ BŁĄD: Wersja ${localVersion} jest już opublikowana w NPM!" - error("Przerwano publikację: Wersja ${localVersion} już istnieje.") - } else { - echo "🚀 Wersja ${localVersion} jest nowa. Publikuję z kontenera..." - - // NAPRAWA GŁÓWNA: - // -w /app/wc-timer : wchodzimy do folderu z plikiem package.json - // -v $(pwd)/.npmrc:/app/wc-timer/.npmrc : montujemy plik z tokenem - sh """ - docker compose -f docker-compose.test.yml run --rm \ - -w /app/wc-timer \ - -v \$(pwd)/.npmrc:/app/wc-timer/.npmrc \ - app \ - npm publish --access public - """ - - echo "✅ SUKCES: Wersja ${localVersion} została opublikowana." - } + when { + branch 'main' } - } - } - post { - always { - echo '--- [MAIN] Sprzątanie ---' - sh 'rm -f .npmrc' - sh 'docker compose -f docker-compose.test.yml down -v' - } - } - } + steps { + withCredentials([string(credentialsId: 'npm-token', variable: 'NPM_TOKEN')]) { + script { + echo '--- [MAIN] Start procedury publikacji ---' + + // 1. Pobierz wersję (bez zmian) + def localVersion = sh(script: "grep '\"version\":' package.json | cut -d\\\" -f4", returnStdout: true).trim() + echo "Lokalna wersja w package.json: ${localVersion}" + + // 2. Utwórz plik .npmrc lokalnie + sh 'echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > .npmrc' + + // UWAGA: Nie musimy robić 'docker compose build', bo używamy obrazu z testów + // Jeśli chcesz mieć pewność, że obraz jest świeży, możesz zostawić build, + // ale kluczowe jest mapowanie w następnych krokach. + + // 3. Sprawdź wersję w NPM + def versionExists = false + try { + // Dodajemy flagę -w (workdir) aby npm widział package.json + sh "docker compose -f docker-compose.test.yml run --rm -w /app/wc-timer app npm view wc-timer@${localVersion} version" + versionExists = true + } catch (err) { + versionExists = false + } + + if (versionExists) { + echo "❌ BŁĄD: Wersja ${localVersion} jest już opublikowana w NPM!" + error("Przerwano publikację: Wersja ${localVersion} już istnieje.") + } else { + echo "🚀 Wersja ${localVersion} jest nowa. Publikuję z kontenera..." + + // NAPRAWA GŁÓWNA: + // -w /app/wc-timer : wchodzimy do folderu z plikiem package.json + // -v $(pwd)/.npmrc:/app/wc-timer/.npmrc : montujemy plik z tokenem + sh """ + docker compose -f docker-compose.test.yml run --rm \ + -w /app/wc-timer \ + -v \$(pwd)/.npmrc:/app/wc-timer/.npmrc \ + app \ + npm publish --access public + """ + + echo "✅ SUKCES: Wersja ${localVersion} została opublikowana." + } + } + } + } + post { + always { + echo '--- [MAIN] Sprzątanie ---' + sh 'rm -f .npmrc' + sh 'docker compose -f docker-compose.test.yml down -v' + } + } + } } } \ No newline at end of file