2016-10-05 1 views
3

Actuellement, j'ai un script pipeline pipeline qui peut mettre à jour les images dockerhub à partir d'un repo git. J'ai créé ceci basé sur le tutorial suivant. J'ai plusieurs conteneurs docker dans ce repo git et je voudrais être capable de itérer à travers eux pour répéter les ressources docker-image et les emplois image-update pour chaque conteneur différent pour rendre mon script plus propre et plus lisible. Voici mon script actuel:Comment créer une boucle d'accès pour des ressources et des tâches répétitives?

--- 
resources: 
- name: resource-docker 
    type: git 
    source: 
    uri: https://github.com/$MYUSER/$MYREPO.git 
    branch: master 

# docker-image resources 
- name: first-container 
    type: docker-image 
    source: 
    repository: $MYUSER/first-container 

- name: second-container 
    type: docker-image 
    source: 
    repository: $MYUSER/second-container 

jobs: 
# image-update jobs 
- name: first-container-image-update 
    public: true 
    serial: true 
    plan: 
    - get: resource-docker 
    - put: first-container 
    params: 
     build: resource-docker/first-container 

- name: second-container-image-update 
    public: true 
    serial: true 
    plan: 
    - get: resource-docker 
    - put: second-container 
    params: 
     build: resource-docker/second-container 

Comment puis-je changer cela pour que je ne pour créer une ressource docker-image et le travail image-update?

Répondre

1

Vous ne pouvez pas, car ce n'est pas vraiment comment fonctionne Concourse. Concourse est entièrement déclaratif, idempotent, reproductible et reproductible. Donc, l'idée d'avoir une configuration procédurale n'est pas vraiment quelque chose que l'outil supporte. La configuration doit être définie une seule fois, stockée sous contrôle de version, puis être immuable. Vous pouvez automatiser la génération du fichier YAML de pipeline en premier lieu, ou écrire une nouvelle ressource qui signale chaque image Docker comme une nouvelle «version» pour passer par un seul pipeline - c'est une approche similaire à la façon dont le GitHub Pull Requests fonctionne avec les ressources.