2016-06-21 7 views
0

Я уже довольно долго стучу головой об этом, и я не могу понять (я знаю, что это должно быть просто, что нужно делать).Вытащить из нескольких файлов SCM, а затем mv в Concourse CI to workdir

В настоящее время я пытаюсь сделать это из двух репозиториев (что естественно создает два отдельных каталога), тогда я пытаюсь переместить файлы из одного каталога в другой, чтобы успешно выполнить файл Docker.

Вот как мой файл pipeline.yml выглядит следующим образом:

--- 
jobs: 
- name: build-nexus-docker-image 
    public: false 
    plan: 
    - get: git-nexus-docker-images 
    trigger: true 
    - get: git-nexus-license 
    trigger: true 
    - task: mv-nexus-license 
    config: 
     platform: linux 
     image_resource: 
     type: docker-image 
     source: {repository: ubuntu, tag: "trusty"} 
     inputs: 
     - name: git-nexus-license 
     - name: git-nexus-docker-images 
     run: 
     path: /bin/sh 
     args: 
      - -c 
      - mv -v git-nexus-license/nexus.lic git-nexus-docker-images/nexus.lic; ls -la git-nexus-docker-images 
    - put: nexus-docker-image 
    params: 
     build: git-nexus-docker-images/ 

resources: 
- name: git-nexus-docker-images 
    type: git 
    source: 
    uri: [email protected]:dev/nexus-pro-dockerfile.git 
    branch: test 
    paths: [Dockerfile] 
    private_key: {{git_ci_key}} 

- name: git-nexus-license 
    type: git 
    source: 
    uri: [email protected]:secrets/nexus-information.git 
    branch: master 
    paths: [nexus.lic] 
    private_key: {{git_ci_key}} 

- name: nexus-docker-image 
    type: docker-image 
    source: 
    username: {{aws-token-username}} 
    password: {{aws-token-password}} 
    repository: {{ecr-nexus-repo}} 

Я разместил трубопровод, который на самом деле может быть развернут на Конкорс; однако я много пробовал, но не могу понять, как это сделать. Я застрял на части перемещения файла лицензии из каталога git-nexus-license в каталог git-nexus-docker-images. То, что я сделал, не похоже на файл nexus.lic, потому что при создании образа докеры он терпит неудачу, потому что он не может найти этот файл в каталоге.

EDIT: Я успешно смог использовать «mv» nexus.lic, используя код выше, однако сборка все еще не работает из-за отсутствия файла! Я не уверен, что я делаю неправильно, сборка работает правильно, если я делаю это вручную, но с Concourse он терпит неудачу.

ответ

4

Итак, я понял, что я делаю неправильно, и, как обычно, это было что-то маленькое. Я забыл добавить outputs в файл yml, в котором сообщается, что это новый workdir. Вот как это выглядит сейчас (который работает для меня):

--- 
jobs: 
- name: build-nexus-docker-image 
    public: false 
    plan: 
    - get: git-nexus-docker-images 
    trigger: true 
    - get: git-nexus-license 
    trigger: true 
    - task: mv-nexus-license 
    config: 
     platform: linux 
     image_resource: 
     type: docker-image 
     source: {repository: ubuntu, tag: "trusty"} 
     inputs: 
     - name: git-nexus-license 
     - name: git-nexus-docker-images 
     outputs: 
     - name: build-nexus-dir 
     run: 
     path: /bin/sh 
     args: 
      - -c 
      - mv -v git-nexus-license/nexus.lic build-nexus-dir/nexus.lic; mv -v git-nexus-docker-images/* build-nexus-dir; ls -la build-nexus-dir; 
    - put: nexus-docker-image 
    params: 
     build: build-nexus-dir/ 

resources: 
- name: git-nexus-docker-images 
    type: git 
    source: 
    uri: [email protected]:dev/nexus-pro-dockerfile.git 
    branch: test 
    paths: [Dockerfile] 
    private_key: {{git_ci_key}} 

- name: git-nexus-license 
    type: git 
    source: 
    uri: [email protected]:secrets/nexus-information.git 
    branch: master 
    paths: [nexus.lic] 
    private_key: {{git_ci_key}} 

- name: nexus-docker-image 
    type: docker-image 
    source: 
    username: {{aws-token-username}} 
    password: {{aws-token-password}} 
    repository: {{ecr-nexus-repo}} 

Я надеюсь, что это помогает кто застревает на этом. :)