如何从 CircleCI 上的构建 运行 连接到 VPN

How do I connect to VPN from a build running on CircleCI

我读过 this,但他们提到他们将在后续文章中描述选项,看起来好像从未写过。我有哪些选择?

如果需要的话,我正在使用 OpenVPN,并且我可以访问服务器和客户端配置。

我认为有以下可能的解决方案:

  1. 创建到您需要的资源的 SSH 隧道
  2. 创建 SSH 代理以访问您的内部网络
  3. 更改为使用 machine: 而不是 docker: 并自行启动 docker 容器
  4. 创建一种访问您的私有资源的方法(例如创建一个 Web 服务来访问它并使用 REST API 调用该 Web 服务)
  5. 制作你的私人资源public(不!J/K!不要这样做!)

我很乐意看到其他选项。

我让#3 工作。这是基本食谱。

在我的.circleci/config.yml:

version: 2
jobs:
   build_test_deploy:
     machine: true
     steps:
       - checkout
       - run:
           name: Setup branch specific variables and get machine info
           command: |
             ./.circleci/createGradleProps.sh
       - run:
           name: Get the docker container and run the build
           command: |
             set -e
             echo Login to docker hub...
             docker login -u mylogin -p $DOCKER_PASSWORD
             echo Pull down the docker image...
             docker pull mycompany/myrepo:1.1 | egrep -v "^[[:space:]]*$|^#"
             echo Starting the new container...
             docker run --cap-add=NET_ADMIN --device=/dev/net/tun \
               -e "CI=$CI" \
               -e "CIRCLE_BRANCH=$CIRCLE_BRANCH" \
               -e "AWS_ACCESS_KEY=$AWS_ACCESS_KEY" \
               -e "AWS_SECRET_KEY=$AWS_SECRET_KEY" \
               -v "$(pwd)"/../project:/home/circleci/project \
               --name qbdvision-instance \
               mycompany/myrepo:1.1 \
               /home/circleci/build.sh
       - run:
           name: Package up the test results
           command: |
             pushd project/build/test/report
             zip -r ~/testResults.zip *
             popd
       - store_artifacts:
           path: ~/testResults.zip
           destination: testResults.zip

workflows:
  version: 2
  build_test_deploy:
    jobs:
      - build_test_deploy