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

Hap*_*der 5 continuous-integration jenkins jenkins-pipeline

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

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

Joa*_*ira 6

目前在 Jenkins 声明式管道中不支持 sidecar 容器

您使用脚本化管道将 MySQL 作为 sidecar 容器运行,如 Jenkins 文档中所示

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'
        }
  }
}
Run Code Online (Sandbox Code Playgroud)

您可以使用以下<script>标签在声明性管道中执行脚本管道片段:https : //jenkins.io/doc/book/pipeline/syntax/#script

  • 我试过在一个干净的工作上运行这个管道。该作业在 while 循环中永远运行,等待 sql server 准备就绪。我在 kubernetes 中运行 jenkins。 (2认同)