Compare commits

...

4 Commits

Author SHA1 Message Date
Jenkins Bot
2e5415ad55 Release: Merge develop to main 2026-01-05 21:44:30 +00:00
David Ali
0e5316c88b increment version 2026-01-05 22:43:05 +01:00
David Ali
39c3aa5000 fix: copy README.md too 2026-01-05 22:42:45 +01:00
David Ali
d314aab25d format Jenkinsfile 2026-01-05 22:42:25 +01:00
3 changed files with 54 additions and 52 deletions

View File

@@ -6,6 +6,7 @@ WORKDIR /app/wc-timer
# Kopiowanie plików manifestu i instalacja zależności # Kopiowanie plików manifestu i instalacja zależności
COPY package.json ./ COPY package.json ./
COPY README.md ./
RUN npm install RUN npm install
# Kopiowanie reszty plików projektu (kod źródłowy) # Kopiowanie reszty plików projektu (kod źródłowy)

96
Jenkinsfile vendored
View File

@@ -51,59 +51,59 @@ 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ę
def localVersion = sh(script: "grep '\"version\":' package.json | cut -d\\\" -f4", returnStdout: true).trim()
echo "Lokalna wersja w package.json: ${localVersion}"
// 2. Sprawdź wersję (tu używamy -w, ale bez tokenu, bo view jest publiczne)
def versionExists = false
try {
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
} }
steps {
withCredentials([string(credentialsId: 'npm-token', variable: 'NPM_TOKEN')]) {
script {
echo '--- [MAIN] Start procedury publikacji ---'
// 1. Pobierz wersję if (versionExists) {
def localVersion = sh(script: "grep '\"version\":' package.json | cut -d\\\" -f4", returnStdout: true).trim() echo "❌ BŁĄD: Wersja ${localVersion} jest już opublikowana w NPM!"
echo "Lokalna wersja w package.json: ${localVersion}" error("Przerwano publikację: Wersja ${localVersion} już istnieje.")
} else {
echo "🚀 Wersja ${localVersion} jest nowa. Publikuję..."
// 2. Sprawdź wersję (tu używamy -w, ale bez tokenu, bo view jest publiczne) // 3. PUBLIKACJA "INJECTION METHOD"
def versionExists = false // Nie montujemy pliku (-v).
try { // Przekazujemy token przez zmienną (-e).
sh "docker compose -f docker-compose.test.yml run --rm -w /app/wc-timer app npm view wc-timer@${localVersion} version" // Tworzymy plik wewnątrz kontenera i publikujemy w jednej komendzie (sh -c).
versionExists = true sh """
} catch (err) { docker compose -f docker-compose.test.yml run --rm \
versionExists = false -w /app/wc-timer \
} -e NPM_TOKEN=${NPM_TOKEN} \
app \
sh -c "echo '//registry.npmjs.org/:_authToken=\${NPM_TOKEN}' > .npmrc && npm publish --access public"
"""
if (versionExists) { echo "✅ SUKCES: Wersja ${localVersion} została opublikowana."
echo "❌ BŁĄD: Wersja ${localVersion} jest już opublikowana w NPM!"
error("Przerwano publikację: Wersja ${localVersion} już istnieje.")
} else {
echo "🚀 Wersja ${localVersion} jest nowa. Publikuję..."
// 3. PUBLIKACJA "INJECTION METHOD"
// Nie montujemy pliku (-v).
// Przekazujemy token przez zmienną (-e).
// Tworzymy plik wewnątrz kontenera i publikujemy w jednej komendzie (sh -c).
sh """
docker compose -f docker-compose.test.yml run --rm \
-w /app/wc-timer \
-e NPM_TOKEN=${NPM_TOKEN} \
app \
sh -c "echo '//registry.npmjs.org/:_authToken=\${NPM_TOKEN}' > .npmrc && npm publish --access public"
"""
echo "✅ SUKCES: Wersja ${localVersion} została opublikowana."
}
}
}
}
post {
always {
echo '--- [MAIN] Sprzątanie ---'
sh 'docker compose -f docker-compose.test.yml down -v'
}
} }
}
} }
}
post {
always {
echo '--- [MAIN] Sprzątanie ---'
sh 'docker compose -f docker-compose.test.yml down -v'
}
}
}
} }
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "wc-timer", "name": "wc-timer",
"version": "1.0.0", "version": "1.0.1",
"description": "A lightweight, dependency-free countdown timer Web Component.", "description": "A lightweight, dependency-free countdown timer Web Component.",
"type": "module", "type": "module",
"main": "src/wc-timer.js", "main": "src/wc-timer.js",
@@ -8,7 +8,8 @@
".": "./src/wc-timer.js" ".": "./src/wc-timer.js"
}, },
"files": [ "files": [
"src" "src/wc-timer.js",
"README.md"
], ],
"scripts": { "scripts": {
"test": "echo 'Tests are running in Docker environment' && exit 0" "test": "echo 'Tests are running in Docker environment' && exit 0"