fix: npm publish

This commit is contained in:
David Ali
2026-01-05 22:27:20 +01:00
parent 374843574e
commit a733644d67

116
Jenkinsfile vendored
View File

@@ -54,64 +54,64 @@ pipeline {
// ETAP 2: MAIN (Weryfikacja wersji i Publikacja w Dockerze) // ETAP 2: MAIN (Weryfikacja wersji i Publikacja w Dockerze)
// ========================================================= // =========================================================
stage('CD: Publish to NPM (Main)') { stage('CD: Publish to NPM (Main)') {
when { when {
branch 'main' 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."
}
} }
} steps {
} withCredentials([string(credentialsId: 'npm-token', variable: 'NPM_TOKEN')]) {
post { script {
always { echo '--- [MAIN] Start procedury publikacji ---'
echo '--- [MAIN] Sprzątanie ---'
sh 'rm -f .npmrc' // 1. Pobierz wersję (bez zmian)
sh 'docker compose -f docker-compose.test.yml down -v' 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'
}
}
}
} }
} }