【问题标题】:How to setup docker-compose to run test on github actions for intergration testing with mySQL如何设置 docker-compose 在 github 操作上运行测试,以便与 mySQL 进行集成测试
【发布时间】:2021-10-26 01:57:01
【问题描述】:

我在我的开发环境中运行 docker-compose,它运行良好,我也可以运行所有测试。我已经尝试将它运行到我的 MacOS 和 Ubuntu 中,两者都运行良好,没有错误或任何错误。我的问题是,当我为 Github 操作设置工作流时,在运行迁移时出现此错误:

我需要这个来设置我的表并运行测试。

我还尝试将其添加到我的工作流程中,以测试我的 MYSQL 是否正在运行:

- name: testing MySQL if running
  run: mysql -h 127.0.0.1 -P 3306 -u root -ppassword

但我收到此错误:Could not connect: Lost connection to MySQL server at 'reading initial communication packet', system error: 0

我还确定我的数据库和服务器正在通过 docker-compose 运行。我不确定为什么我的应用程序无法连接到我的 MYSQL。

我的假设是,当在 GitHub 操作中调用命令 run 时,它会在单独的 ubuntu 进程上运行,因为在我的 yml 文件中我有 runs-on: ubuntu-20.04 这就是它没有看到 MYSQL 连接的原因。因此,由于我的 yml 文件中有 5 个 run 命令来运行我的工作,因此它启动了 5 个不同的 ubuntu。有没有办法运行单个实例并在单个实例中运行所有命令?顺便说一下,这是我第一次做 DevOps,所以我一无所知。

这是我的 yml 文件的链接:Link

这是我运行工作流的最新错误的链接:Link

更新:

实际上,我不必运行任何迁移,因为这仅用于测试拉取请求,我只需创建 test_db

【问题讨论】:

    标签: continuous-integration devops github-actions


    【解决方案1】:

    我找到了一种无需使用 docker 即可对任何拉取请求运行测试的方法。我只需要使用这个 github 操作运行 MySQL shogo82148/actions-setup-mysql@v1.3.0

    这是更新后的工作流程:

          - uses: shogo82148/actions-setup-mysql@v1.3.0
            with:
              mysql-version: '8.0'
              auto-start: true
          - name: create test database
            run: mysql -h 127.0.0.1 -P 3306 -u root -e 'CREATE DATABASE test_db;'
          - name: show databases
            run: mysql -h 127.0.0.1 -P 3306 -u root -e 'SHOW DATABASES;'
          - name: setup user
            run: mysql -h 127.0.0.1 -P 3306 -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';"
          - name: flush privileges
            run: mysql -h 127.0.0.1 -P 3306 -u root -e 'FLUSH PRIVILEGES' -ppassword
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-15
      • 1970-01-01
      • 2020-09-24
      • 2020-10-09
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      • 2013-09-11
      相关资源
      最近更新 更多