Как разблокировать ресурс пула зала заседаний?

Мы пытаемся использовать пул зала заседаний, чтобы получить блокировку. Он отлично блокируется, но когда мы пытаемся снять блокировку, мы получаем эту ошибку 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: [email protected]:<repo>
     branch: master
     pool: maleficent
     private_key: {{key}}

это получает блокировку:

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

и это задание 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: 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}

Одна вещь, которую мы заметили, заключалась в том, что при получении ресурса оказалось, что это Cloning into '/tmp/build/get'…, который отличается от каталога, в котором этап разблокировки ищет файл. Что мы делаем не так?


person Tim Hausler    schedule 30.06.2017    source источник


Ответы (2)


Следующий файл 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-env. put: 1.12-env означает «Выполнить put ресурса с именем 1.12-env», а release: 1.12-env означает «Освободить среду в файле, который был результатом get: 1.12-env»

Надеюсь, это станет яснее в следующем примере.

- 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}
person materialdesigner    schedule 30.06.2017

Думаю, проблема в release: maleficent-env части.

release необходимо указать путь к файлу блокировки в контейнере.

В вашем случае попробуйте обновить блок выпуска до:

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

Дай мне знать, если это работает. Если это не сработает, вы можете попробовать fly hijack в помещенный контейнер и посмотреть, по какому пути находится блокировка. Затем вы должны указать этот путь как значение release.

person Ergin Babani    schedule 30.06.2017