如何在声明性Jenkins管道中添加sidecar MySQL?

时间:2018-05-16 11:00:04

标签: jenkins continuous-integration jenkins-pipeline

我正在建立一个PHP构建系统,需要运行MySQL的本地实例来执行测试。目前我正在使用声明性管道语法和使用docker。是否可以将MySQL作为声明语法中的边车运行?

如果没有任何其他方法可以运行MySQL代理以及自定义docker镜像并执行迁移吗?

1 个答案:

答案 0 :(得分:2)

当前有no support for sidecar containers in Jenkins declarative pipelines

您使用脚本化管道as shown in the Jenkins documentation将MySQL作为Sidecar容器运行:

node {
    checkout scm
    docker.image('mysql:5').withRun('-e "MYSQL_ROOT_PASSWORD=my-secret-pw"') { c ->
        docker.image('mysql:5').inside("--link ${c.id}:db") {
          /* Wait until mysql service is up */
          sh 'while ! mysqladmin ping -hdb --silent; do sleep 1; done'
        }
        docker.image('centos:7').inside("--link ${c.id}:db") {
          /*
           * Run some tests which require MySQL, and assume that it is
           * available on the host name `db`
           */
          sh 'make check'
        }
  }
}

您可以使用<script>标签:https://jenkins.io/doc/book/pipeline/syntax/#script

在声明性管道中执行脚本化管道。