将测试阶段添加到Jenkins文件中

问题描述 投票:0回答:1

我正在尝试将测试阶段添加到我的Jenkins文件中。

我在Jenkins安装了docker。

我用这个命令运行我的测试:

docker-compose run web python manage.py test

这是我的Jenkins文件:

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:command

我添加了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"
        }
    }
}
python django jenkins docker-compose jenkins-pipeline
1个回答
0
投票

您可能没有在代理上安装docker-compose。

你可以:

  1. 在代理上安装docker-compose :(取自docker official docs`)
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 with Docker image并使用
docker.image("docker").inside() {
  sh "docker-compose run web python manage.py test"
}
© www.soinside.com 2019 - 2024. All rights reserved.