Amazon dynamodb CircleCI发电机B本地

Amazon dynamodb CircleCI发电机B本地,amazon-dynamodb,circleci,Amazon Dynamodb,Circleci,我正在尝试设置它,以便CircleCI可以在测试中使用DynamoDB Local。我看到了关于如何在CircleCI上安装DynamoDB Local的链接,但它看起来已经过时了,因为他们现在使用CircleCI 2使用了新语法 如何在最新版本的CircleCI上实现这一点?您可以使用构建步骤“命令”将旧指令改编为新指令。由于我对该软件不熟悉,您必须稍微使用它才能使其正常工作: version: 2 jobs: build: docker: - image:

我正在尝试设置它,以便CircleCI可以在测试中使用DynamoDB Local。我看到了关于如何在CircleCI上安装DynamoDB Local的链接,但它看起来已经过时了,因为他们现在使用CircleCI 2使用了新语法


如何在最新版本的CircleCI上实现这一点?

您可以使用构建步骤“命令”将旧指令改编为新指令。由于我对该软件不熟悉,您必须稍微使用它才能使其正常工作:

version: 2
jobs:
   build: 
     docker:
        - image: some-docker-image-that-has-java-or-even-dynamodb
     steps: 
        - stuff (usually 'checkout')  
        - run: 
           name: install java
           command: |
              apt-get update && apt-get install default-jre default-jdk
        - run:
           name: setup container
           command: |
              curl -k -L -o dynamodb-local.tgz http://dynamodb-local.s3-website-us-west-2.amazonaws.com/dynamodb_local_latest.tar.gz
              tar -xzf dynamodb-local.tgz
              java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb

下面是一个工作的端到端circleci
config.yml
文件,它适用于
nodejs
project version 8和dynamodb local:

version: 2

references:
  container_config: &container_config
    docker:
      - image: circleci/node:8

    working_directory: ~/repo

  restore_repo: &restore_repo
    restore_cache:
      keys:
        - repo-v1-{{ .Branch }}-{{ .Revision }}
        - repo-v1-{{ .Branch }}
        - repo-v1-

  restore_npm_install: &restore_npm_install
    restore_cache:
      keys:
        - node_modules-v1-cache-{{ checksum "package.json" }}
        # fallback to using the latest cache if no exact match is found
        - node_modules-v1-cache

  restore_dynamodb_local: &restore_dynamodb_local
    restore_cache:
      keys:
        - dynamodblocal-v1

jobs:
  checkout_code:
    <<: *container_config
    steps:
      - *restore_repo
      - checkout
      - save_cache:
          key: repo-v1-{{ .Branch }}-{{ .Revision }}
          paths:
            - .

  dynamodb_local_setup:
    <<: *container_config
    steps:
      - *restore_repo
      - *restore_dynamodb_local
      - run:
          name: "Downlad and install"
          command: |
            mkdir -p dynamodb_local
            cd dynamodb_local
            curl -k -L -o dynamodb-local.tgz http://dynamodb-local.s3-website-us-west-2.amazonaws.com/dynamodb_local_latest.tar.gz
            tar -xzf dynamodb-local.tgz
            cd ..
      - save_cache:
          key: dynamodblocal-v1
          paths:
            - ./dynamodb_local


  npm_install:
    <<: *container_config
    steps:
      - *restore_repo
      - *restore_npm_install
      - run:
          name: "npm install"
          command: npm install --update-binary
      - save_cache:
          key: node_modules-v1-cache-{{ checksum "package.json" }}
          paths:
            - ./node_modules

  lint:
    <<: *container_config
    steps:
      - *restore_repo
      - *restore_npm_install
      - run:
          name: "Linting"
          command: npm run lint -- --format junit -o reports/junit/js-lint-results.xml

  test:
    <<: *container_config
    steps:
      - *restore_repo
      - *restore_npm_install
      - *restore_dynamodb_local
      - run:
          name: "Test suite execution"
          # Because "CredentialsError: Missing credentials in config"
          # AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY are mandatory to access dynamodblocal, you can set fake ones on circleci project configuration
          command: |
            sudo apt-get install default-jre --assume-yes
            java -Djava.library.path=./dynamodb_local/DynamoDBLocal_lib -jar ./dynamodb_local/DynamoDBLocal.jar -port 2018 -inMemory &
            ./node_modules/jest/bin/jest.js --ci --testResultsProcessor="jest-junit" --collectCoverage --coverageReporters="lcov"
          environment:
            JEST_JUNIT_OUTPUT: "reports/junit/js-test-results.xml"
      - run:
          name: "Report to codecov.io"
          command: ./node_modules/codecov/bin/codecov

      - store_test_results: #along with linting results
          path: reports/junit

      - store_artifacts:
          path: reports/junit

      - store_artifacts:
          path: coverage

workflows:
  version: 2
  main:
    jobs:
      - checkout_code
      - dynamodb_local_setup:
          requires:
            - checkout_code
      - npm_install:
          requires:
            - checkout_code
      - lint:
          requires:
            - npm_install
      - test:
          requires:
            - npm_install
            - dynamodb_local_setup
版本:2
参考资料:
容器配置:&容器配置
码头工人:
-图像:circleci/节点:8
工作目录:~/repo
还原\u repo:&还原\u repo
还原U缓存:
钥匙:
-repo-v1-{.Branch}-{.Revision}
-repo-v1-{.Branch}
-repo-v1-
还原\u npm\u安装:&还原\u npm\u安装
还原U缓存:
钥匙:
-node_modules-v1-cache-{{checksum“package.json”}
#如果找不到完全匹配的缓存,请回退到使用最新缓存
-节点_模块-v1-cache
还原\u dynamodb\u local:&还原\u dynamodb\u local
还原U缓存:
钥匙:
-dynamodblocal-v1
工作:
签出代码:

好的,现在我正在使用
-image:circleci/node:6.10
。我可能完全错了,但我不相信这有Java。那么我该如何处理呢?我会用一个例子来更新答案。但是,你可以用在任何Ubuntu 14系统上安装它的方式来安装它
apt-get-update&&apt-get-install-package1-package2
我建议使用已经具备所需功能的docker映像。搜索docker hub几乎总能找到其他人,他们为你完成了90%的工作。我只是对docker没有太多经验。你能喜欢合并Docker图像吗?比如,我可以拍摄一张Java docker图像并与一张节点图像相结合吗?或者?安装java运行步骤中出现错误
E:无法打开锁文件/var/lib/apt/lists/lock-open(13:拒绝权限)E:无法锁定目录/var/lib/apt/lists/E:无法打开锁文件/var/lib/dpkg/lock-open(13:拒绝权限)E:无法锁定管理目录(/var/lib/dpkg/),您是root用户吗?退出时代码为100
通常在堆栈溢出时,指南中不允许仅在答案中发布链接。这个问题应该在答案中回答,链接可以用来提供额外的信息。Inline
config.yml
sir:)2018年8月与Amazon DynamoDB Local onboard合作推出。