2024-09-01 19:48:30 +00:00
|
|
|
pipeline {
|
2024-09-01 20:31:17 +00:00
|
|
|
agent { label 'agent1' }
|
2024-09-01 19:48:30 +00:00
|
|
|
|
|
|
|
stages {
|
2024-09-01 21:47:58 +00:00
|
|
|
stage('Weryfikacja podpisów cyfrowych') {
|
2024-09-01 19:48:30 +00:00
|
|
|
steps {
|
|
|
|
script {
|
|
|
|
def dependencies = sh(script: "jq -r '.dependencies | keys[]' package.json", returnStdout: true).split('\n')
|
2024-09-01 20:29:38 +00:00
|
|
|
def unsignedPackages = []
|
2024-09-01 19:48:30 +00:00
|
|
|
|
|
|
|
for (dep in dependencies) {
|
2024-09-01 19:50:11 +00:00
|
|
|
sh "npm pack ${dep}@\$(jq -r '.dependencies[\"${dep}\"]' package.json)"
|
2024-09-01 20:15:22 +00:00
|
|
|
|
2024-09-01 20:29:38 +00:00
|
|
|
def result = sh(
|
|
|
|
script: """
|
|
|
|
wget -q --spider https://registry.npmjs.org/${dep}/-/\$(jq -r '.dependencies[\"${dep}\"]' package.json)/${dep}.tgz.asc || echo 'NOT_FOUND'
|
|
|
|
""",
|
|
|
|
returnStdout: true
|
|
|
|
).trim()
|
|
|
|
|
|
|
|
if (result == 'NOT_FOUND') {
|
|
|
|
unsignedPackages.add(dep)
|
|
|
|
} else {
|
|
|
|
sh "wget https://registry.npmjs.org/${dep}/-/\$(jq -r '.dependencies[\"${dep}\"]' package.json)/${dep}.tgz.asc"
|
|
|
|
sh "gpg --verify ${dep}.tgz.asc ${dep}-*.tgz"
|
|
|
|
}
|
2024-09-01 21:47:58 +00:00
|
|
|
}
|
2024-09-01 20:29:38 +00:00
|
|
|
|
2024-09-01 21:47:58 +00:00
|
|
|
if (unsignedPackages.size() > 0) {
|
|
|
|
echo "Packages without digital signatures: ${unsignedPackages.join(', ')}"
|
|
|
|
} else {
|
|
|
|
echo "All packages have digital signatures."
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
stage('Weryfikacja sum kontrolnych') {
|
|
|
|
steps {
|
|
|
|
script {
|
|
|
|
def dependencies = sh(script: "jq -r '.dependencies | keys[]' package.json", returnStdout: true).split('\n')
|
|
|
|
|
|
|
|
for (dep in dependencies) {
|
2024-09-01 20:15:22 +00:00
|
|
|
sh """
|
|
|
|
FILENAME=\$(ls ${dep}-*.tgz)
|
|
|
|
SHA256_SUM=\$(sha256sum \$FILENAME | awk '{ print \$1 }')
|
|
|
|
echo \"\${SHA256_SUM} \$FILENAME\" > ${dep}.sha256
|
|
|
|
sha256sum -c ${dep}.sha256
|
|
|
|
"""
|
2024-09-01 19:48:30 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-09-01 21:47:58 +00:00
|
|
|
stage('Instalacja zależności') {
|
|
|
|
steps {
|
|
|
|
sh 'npm install'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-09-01 19:48:30 +00:00
|
|
|
stage('Test') {
|
|
|
|
steps {
|
|
|
|
sh 'npm test'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
stage('Build') {
|
|
|
|
steps {
|
|
|
|
sh 'npm run build'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|