如何为 algorand 沙箱项目设置 circleci 测试?

How to setup circleci tests for algorand sandbox project?

我正在使用 NodeJS 脚本开发一个 algorand 项目,并使用沙箱进行开发。

注意:我们也在使用 algorand 索引器和沙箱,但没有合同。

出于开发目的,我们可以使用 jest 轻松进行测试,但是当我尝试使用 circle CI 使其自动化时,它在测试阶段失败了。

这是我的 .circleci/config.yml 文件::

version: 2.1

orbs:
  node: circleci/node@5.0.0

jobs:
  build:
    docker:
      - image: cimg/node:17.5.0
    steps:
      - checkout
      - run: echo "build project"
      - run: npm install
      - run: npm run build
  linting:
    docker:
      - image: cimg/node:17.5.0
    steps:
      - checkout
      - run: echo "Linting project"
      - run: npm install
      - run: npm run lint
  test:
    docker:
      - image: cimg/node:17.5.0
    steps:
      - checkout
      - run: echo "Running tests"
      - run: npm install
      - run: npm run test

workflows:
  test_build:
    jobs:
      - linting
      - build
      - test:
          requires:
            - build

我该如何解决这个问题?

Algorand 沙箱 (https://github.com/algorand/sandbox) 本身使用 Docker 和 docker-compose。因此,它不能轻易地直接用于另一个 docker 容器。

你可以在那里看到一个讨论: https://github.com/algorand/sandbox/issues/84

从那里你有两个选择:

  1. 在 Circle CI 中使用机器执行器而不是 docker 执行器:https://circleci.com/docs/2.0/executor-types/ / https://circleci.com/docs/2.0/docker-to-machine/。这允许您访问 docker 和 运行 沙箱。
  2. 由于沙箱只是 https://github.com/algorand/go-algorand and https://github.com/algorand/indexer 的包装器,您可以手动提取这部分和 运行 一个没有沙箱的节点用于测试。

PS:一般来说,我建议在https://forum.algorand.org上问Algorand-related个问题,这样的问题比Whosebug更活跃。