如何解锁广场池资源?

时间:2017-06-30 21:48:04

标签: concourse

我们正在尝试使用广场池来锁定。它锁定很好但是当我们尝试释放锁时,我们收到此错误error releasing lock: open /tmp/build/put/maleficent-env/name: no such file or directory

这就是我们的池仓库中的目录树看起来像

.
├── README.md
└── maleficent
    ├── claimed
    │   └── maleficent-env
    └── unclaimed

这是我们的资源:

 - name: 1.12-env
   type: pool
   source:
     uri: git@github.com:<repo>
     branch: master
     pool: maleficent
     private_key: {{key}}

这获得了锁定:

- put: 1.12-env params: {acquire: true}

这是我们认为应该释放它的工作:

- name: run-1.12-errand
plan:
- aggregate:
  - get: 1.12-env
    passed: [the-job-that-got-the-lock]
  - get: ci
  on_failure:
    put: 1.12-env
    params: {release: maleficent-env}
- task: run-errand
  file: ci/run-errand/task.yml
  params:
    BOSH_DIRECTOR_URL: {{url}}
    BOSH_CLIENT_SECRET: {{secret}}
    ENV_NAME: maleficent
  ensure:
    put: 1.12-env
    params: {release: maleficent-env}

我们注意到的一件事是当我们为资源做了get时,它似乎是Cloning into '/tmp/build/get'…,它与解锁步骤寻找文件的目录不同。我们做错了什么?

2 个答案:

答案 0 :(得分:1)

以下job.yml将成功释放您的环境

- name: run-1.12-errand
  plan:
  - aggregate:
    - get: 1.12-env
      passed: [the-job-that-got-the-lock]
    - get: ci
    on_failure:
      put: 1.12-env
      params: {release: 1.12-env}
  - task: run-errand
    file: ci/run-errand/task.yml
    params:
      BOSH_DIRECTOR_URL: {{url}}
      BOSH_CLIENT_SECRET: {{secret}}
      ENV_NAME: maleficent
    ensure:
      put: 1.12-env
      params: {release: 1.12-env}

相关行

put: 1.12-env
params: {release: 1.12-env}

实际上是指两个不同的东西,尽管都使用1.12-envput: 1.12-env表示&#34;执行名为put&#34;的资源的1.12-env,而release: 1.12-env表示&#34;释放< em> file ,它是get: 1.12-env&#34;

的输出

在以下示例中希望更清楚

- name: run-1.12-errand
  plan:
  - aggregate:
    - get: my-environment
      resource: 1.12-env
      passed: [the-job-that-got-the-lock]
    - get: ci
    on_failure:
      put: 1.12-env
      params: {release: my-environment}
  - task: run-errand
    file: ci/run-errand/task.yml
    params:
      BOSH_DIRECTOR_URL: {{url}}
      BOSH_CLIENT_SECRET: {{secret}}
      ENV_NAME: maleficent
    ensure:
      put: 1.12-env
      params: {release: my-environment}

答案 1 :(得分:0)

我认为问题出在release: maleficent-env部分。

release需要您提供锁文件在容器上的路径。

在您的情况下,请尝试将版本块更新为:

ensure: put: 1.12-env params: {release: 1.12-env}

如果有效,请告诉我。如果它不起作用,您可以尝试fly hijack到put容器并查看锁定的路径。然后,您将该路径提供为release值。