Добавление этапа тестирования в файл Jenkins - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь добавить этап тестирования в мой файл Jenkins.

У меня установлен докер в Jenkins.

Я запускаю свои тесты с помощью этой команды:

docker-compose run web python manage.py test

Это мой файл Дженкинса:

node{
    stage('Checkout'){
        def dockerHome = tool 'docker'
        env.PATH = "${dockerHome}/bin"
        checkout scm
    }

    stage('Build image') {
        withEnv(['PATH+EXTRA=/usr/sbin:/usr/bin:/sbin:/bin']){
            sh "docker login --username=mygituks --password=mdj1646MDJ"
            sh "docker build -t my_git_uks -f Dockerfile ."
            sh "docker tag my_git_uks gituks/uks-git-2019:second"
        }
    }
    stage('Run Tests') {
        withEnv(['PATH+EXTRA=/usr/sbin:/usr/bin:/sbin:/bin']){
            def testsError = null
            try {
                sh "docker-compose run web python manage.py test"
            }
            catch(err) {
                testsError = err
                echo "Failure"
            }
        }

    }
    stage('Push image') {
        withEnv(['PATH+EXTRA=/usr/sbin:/usr/bin:/sbin:/bin']){
            sh "docker push gituks/uks-git-2019:second"
        }
    }
}

И я получаю эту ошибку: docker-compose: команда не найдена

Это одна из вещей, которые я тоже пробовал, и я получаю эту ошибку: test.sh: строка 3: python: команда не найдена

Я добавил test.sh:

#!/bin/bash

python manage.py test

И изменил мой этап тестирования на:

 stage('Run Tests') {
        withEnv(['PATH+EXTRA=/usr/sbin:/usr/bin:/sbin:/bin']){
            def testsError = null
            try {
                sh "bash test.sh"
            }
            catch(err) {
                testsError = err
                echo "Failure"
            }
        }

Надеюсь, кто-нибудь может помочь мне разобраться в этом или дать какие-либо подсказки.

решено

node{
    stage('Checkout'){
        def dockerHome = tool 'docker'
        env.PATH = "${dockerHome}/bin"
        PATH = "$PATH:/usr/bin"
        checkout scm
    }

    stage('Build image') {
        withEnv(['PATH+EXTRA=/usr/sbin:/usr/bin:/sbin:/bin']){
            sh "docker login --username=mygituks --password=mdj1646MDJ"
            sh "docker build -t my_git_uks -f Dockerfile ."
            sh "docker tag my_git_uks gituks/uks-git-2019:second"
        }
    }
    stage('Run Tests') {
        withEnv(['PATH+EXTRA=/usr/sbin:/usr/bin:/sbin:/bin']){
            echo "PATH is: $PATH"
            sh "docker exec my_git_web python manage.py test"
        }

    }
    stage('Push image') {
        withEnv(['PATH+EXTRA=/usr/sbin:/usr/bin:/sbin:/bin']){
            sh "docker push gituks/uks-git-2019:second"
        }
    }
}

1 Ответ

0 голосов
/ 24 апреля 2019

Возможно, на вашем агенте не установлена ​​docker-compose.

Вы можете либо:

  1. Установить на агенте docker-compose: (взято из Официальные документы docker `)
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  1. Попробуйте использовать Docker с изображением Docker и используйте
docker.image("docker").inside() {
  sh "docker-compose run web python manage.py test"
}
...