У меня возникли проблемы с подключением моего конвейера Jenkins к тому, что должно быть простым сценарием.
Я использую DockerDesktop для запуска образа Jenkins (https://hub.docker.com/r/jenkinsci/blueocean/). У меня есть стандартное приложение реагирования, которое я хочу создавать и запускать тесты после моих коммитов.
Конфигурации Webhooks уже работают, но команды, которые я запускаю в моем Jenkinsfile, похоже, не работают так, как я ожидал:
Это мой текущий Jenkinsfile:
node {
def app
stage('Clone repository') {
checkout scm
}
stage('Build image') {
app = docker.build("getintodevops/hellonode", "-f Dockerfile.dev ./")
}
stage('Test image') {
app.inside {
sh 'pwd'
sh 'npm run build'
}
}
}
Dockerfile-dev выглядит так:
FROM node:alpine
COPY ./package.json ./
RUN ["npm", "install"]
COPY ./src/ ./src/
COPY ./public/ ./public/
я ожидал, что Команды внутри стадии (тестовое изображение) будут выполняться внутри контейнера с изображением, которое я только что создал, но команда pwd показывает, что команды exe c находятся внутри рабочей области jenkins, связываясь в основном с то, что я зафиксировал на github (/ sr c, / publi c, package. json e cc ..), поэтому, когда запускается npm run build, я получаю сообщение об ошибке отсутствия узлов_модулей.
Я что-то упустил? Разве команды не должны запускаться на встроенном образе, который, как я проверял, имеет все необходимые папки?
Дайте мне знать, если необходимы другие файлы или конфигурации, которые я использую
PS Я также пытался использовать этот тип Jenkinsfile, но у меня всегда одна и та же проблема (даже если агент определен вне сцены):
pipeline {
agent none
stages {
stage('Build') {
agent{
dockerfile {
filename 'Dockerfile.dev'
}
}
steps {
sh "npm run build"
}
}