- name: Test the fetch-zuul-cloner role hosts: all vars: destination: "/usr/zuul-env/bin/zuul-cloner" repo_src_dir: "{{ ansible_user_dir }}/src/opendev.org" roles: - role: fetch-zuul-cloner post_tasks: - name: Check that the directory exists file: path: "{{ destination | dirname }}" state: directory register: directory - name: Check that the zuul-cloner shim exists stat: path: "{{ destination }}" register: cloner - name: Validate that the shim was installed successfully assert: that: - directory is not changed - directory is succeeded - cloner.stat.exists - cloner.stat.mode == "0755" # Disabled as this depends on running workspace setup which requires # being able to run code on the executor from an untrusted context and # this is not allowed. # - name: Zuul clone something in required-projects # shell: # executable: /bin/bash # cmd: | # CLONEMAP=`mktemp` # function cleanup { # rm -f $CLONEMAP # } # trap cleanup EXIT # cat > $CLONEMAP << EOF # clonemap: # - name: opendev/base-jobs # dest: {{ ansible_user_dir }} # EOF # /usr/zuul-env/bin/zuul-cloner -m $CLONEMAP \ # --cache-dir /opt/git https://opendev.org \ # opendev/base-jobs # register: clone_with_required # - name: Check if repository was cloned # stat: # path: "{{ ansible_user_dir }}/src/opendev.org/opendev/base-jobs" # register: with_required_stat - name: Zuul clone something not in required-projects shell: executable: /bin/bash cmd: | CLONEMAP=`mktemp` function cleanup { rm -f $CLONEMAP } trap cleanup EXIT cat > $CLONEMAP << EOF clonemap: - name: jjb/jenkins-job-builder dest: {{ ansible_user_dir }} EOF /usr/zuul-env/bin/zuul-cloner -m $CLONEMAP \ --cache-dir /opt/git https://git.openstack.org \ jjb/jenkins-job-builder ignore_errors: yes register: clone_without_required - name: Check if repository was cloned stat: path: "{{ ansible_user_dir }}/src/git.openstack.org/jjb/jenkins-job-builder" register: without_required_stat - name: Validate zuul-cloner shim results assert: that: # - clone_with_required is succeeded # - clone_with_required is changed # - with_required_stat.stat.exists - clone_without_required is failed - not without_required_stat.stat.exists