我是否需要 Docker 才能在 GitHub 操作上运行 Redis

sud*_*zen 3 redis docker github-actions

我对 GitHub actions 和 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

Run Code Online (Sandbox Code Playgroud)

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

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

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

Dan*_*nyB 7

您可能不需要此 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
Run Code Online (Sandbox Code Playgroud)

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

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

Run Code Online (Sandbox Code Playgroud)

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

如果不是上述任何一种情况,则问题可能与 Redis 无关,您可能需要减少“活动部件”的数量,直到看到有问题的部件。