Дженкинс Докер коляска с контейнером Запуск команды демона - PullRequest
0 голосов
/ 20 ноября 2018

Я хочу запускать ZAP в качестве прокси в моем конвейере и запускать тесты на селен через прокси.Я просто использовал curl в контейнере вместо селена для моего тестирования и смог выполнить эту работу локально, используя docker.

В моем конвейере zap запускается, но после этого конвейер просто сидит в контейнере zap, никогда не переходя во второй контейнер.Я понимаю, почему, я запустил процесс как демон, он никогда не закончится, поэтому этот шаг никогда не завершается.Я просто не понимаю, как выполнить то, что мне нужно в jenkins.

stage('Run Zap Proxy'){
        docker.image('owasp/zap2docker-weekly').withRun('-p 8090:8090') { c ->
            docker.image('owasp/zap2docker-weekly').inside("-v $WORKSPACE:/zap/wrk:rw") {
                /* Wait until mysql service is up */
                sh """
                   zap.sh -daemon -port 8090 -host 0.0.0.0 -newsession testing -config api.addrs.addr.name=.* -config api.addrs.addr.regex=true -config api.disablekey=true
               """
            }
            docker.image('cfmanteiga/alpine-bash-curl-jq').inside("--link ${c.id}:proxy") {
                sh 'curl -k -x http://proxy:8090 https://my.fqdn.net'
                sh """
                   curl -k -x http://proxy:8090 \
                       -X POST https://my.fqdn.net/api/rest/sessions \
                       -H 'Content-Type: application/json' \
                       -H 'Accept: application/json' \
                       -d '{"username":"username","password":"password"}'
               """
                sh 'sleep 2m'
                sh 'curl -o report.html http://zap/UI/core/other/htmlreport'
                stash includes: 'report.html', name: 'report'
            }
        }
}

Мне по сути нужно запустить zap с помощью команды im, которую я использую во "inside", и уничтожать контейнер только тогда, когда этапы второго контейнераполный.

1 Ответ

0 голосов
/ 20 ноября 2018

Вы можете напрямую передать команду zap в часть withRun:

stage('Run Zap Proxy'){
    docker.image('owasp/zap2docker-weekly').withRun('-p 8090:8090 -v $WORKSPACE:/zap/wrk:rw', 'zap.sh -daemon -port 8090 -host 0.0.0.0 -newsession testing -config api.addrs.addr.name=.* -config api.addrs.addr.regex=true -config api.disablekey=true') { c ->
        docker.image('cfmanteiga/alpine-bash-curl-jq').inside("--link ${c.id}:proxy") {
            sh 'curl -k -x http://proxy:8090 https://my.fqdn.net'
            sh """
               curl -k -x http://proxy:8090 \
                   -X POST https://my.fqdn.net/api/rest/sessions \
                   -H 'Content-Type: application/json' \
                   -H 'Accept: application/json' \
                   -d '{"username":"username","password":"password"}'
           """
            sh 'sleep 2m'
            sh 'curl -o report.html http://zap/UI/core/other/htmlreport'
            stash includes: 'report.html', name: 'report'
        }
    }
}

withRun позволяет перезаписать CMD zap-контейнера.Проверить API-документацию .

...