【问题标题】:Do I need Docker to run Redis on GitHub actions我是否需要 Docker 才能在 GitHub 操作上运行 Redis
【发布时间】:2021-05-21 22:13:00
【问题描述】:

我对 GitHub 操作和 Redis 还很陌生。 我正在 GitHub 操作上运行这个 CI(下面的代码)

name: sanity check
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
jobs:
  tests:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        redis-version: [6]
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: "14"
      - uses: supercharge/redis-github-action@1.2.0 # sets up Redis
        with:
          redis-version: ${{ matrix.redis-version }}
      - run: node -v
      - run: yarn -v
      # - run: redis-cli ping
      - run: yarn install
      - run: yarn test --detectOpenHandles

这样我就可以使用 Redis 执行集成测试,但是这个 CI 不会退出(我正在使用 Jest 运行测试)

是因为我没有使用 Docker 吗?我需要做什么来确保这个测试退出?在本地,它运行良好(不过我手动启动了 Redis 服务器)。我是否需要 Docker 才能使这项工作顺利进行?如果这是问题,任何有关如何在 GitHub 操作上使用 Redis 运行 Docker 的链接?

PS:如果您需要有关此的更多信息,请告诉我

【问题讨论】:

    标签: docker redis github-actions


    【解决方案1】:

    你可能不需要这个 redis 操作,也不需要任何与 docker 相关的东西(尽管如果你愿意,你可以使用 docker 运行 redis)。

    只需安装redis-server,如果你想要redis CLI,还需要redis-tools

    这是一个安装和 ping redis 服务器的示例 GitHub Action:

    name: Redis test
    on: [push]
    
    jobs:
      test:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v2
          - name: Install redis
            run: sudo apt-get install -y redis-tools redis-server
          - name: Verify that redis is up
            run: redis-cli ping
    

    如果您更喜欢使用该操作,这里有一个工作流程:

    name: Redis test
    on: [push]
    
    jobs:
      test:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v2
    
          - name: Setup redis
            uses: supercharge/redis-github-action@1.2.0
            with: 
              redis-version: 6
    
          - name: Install redis cli # so we can test the server
            run: sudo apt-get install -y redis-tools
    
          - name: Verify that redis is up
            run: redis-cli ping
    
    

    最后,如果您的 GitHub Action 没有退出,则可能是与最近在 May 20May 18May 16 上的 GitHub Actions 中断之一相关的问题。

    如果不是上述情况,则问题可能与 redis 无关,您可能希望减少“活动部件”的数量,直到看到有故障的部件。

    【讨论】:

      【解决方案2】:

      Jest 没有退出的问题可能是因为我在测试中使用了真正的 redis nodejs 客户端。 我把它切换到这个

      
      import { createNodeRedisClient } from "handy-redis";
      import { createClient } from "redis-mock";
      
      const cache =
        process.env.NODE_ENV === "production"
          ? createNodeRedisClient({
              url: process.env.REDIS_URL,
            })
          : createClient();
      
      export { cache };
      

      我没有再收到错误

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多