From 0d121145b229b12338f86c4a2350690f6558eb12 Mon Sep 17 00:00:00 2001 From: Michael Johnson Date: Tue, 17 Oct 2017 15:32:40 -0700 Subject: [PATCH] Move Octavia dashboard zuulv3 config in repo This is the start of the transition to native Zuul v3 support for Octavia dashboard. Change-Id: I6e48269595eaa618b7e5ffa609542a05236620b1 --- .../post.yaml | 54 +++++++ .../run.yaml | 149 ++++++++++++++++++ .../post.yaml | 54 +++++++ .../run.yaml | 149 ++++++++++++++++++ zuul.d/jobs.yaml | 17 ++ zuul.d/projects.yaml | 12 ++ 6 files changed, 435 insertions(+) create mode 100644 playbooks/legacy/octavia-dashboard-nodejs4-npm-run-lint/post.yaml create mode 100644 playbooks/legacy/octavia-dashboard-nodejs4-npm-run-lint/run.yaml create mode 100644 playbooks/legacy/octavia-dashboard-nodejs4-npm-run-test/post.yaml create mode 100644 playbooks/legacy/octavia-dashboard-nodejs4-npm-run-test/run.yaml create mode 100644 zuul.d/jobs.yaml create mode 100644 zuul.d/projects.yaml diff --git a/playbooks/legacy/octavia-dashboard-nodejs4-npm-run-lint/post.yaml b/playbooks/legacy/octavia-dashboard-nodejs4-npm-run-lint/post.yaml new file mode 100644 index 00000000..e38d86d9 --- /dev/null +++ b/playbooks/legacy/octavia-dashboard-nodejs4-npm-run-lint/post.yaml @@ -0,0 +1,54 @@ +- hosts: primary + tasks: + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/cover/** + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/reports/** + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/npm-shrinkwrap.json + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/karma.subunit + - --include=*/ + - --exclude=* + - --prune-empty-dirs diff --git a/playbooks/legacy/octavia-dashboard-nodejs4-npm-run-lint/run.yaml b/playbooks/legacy/octavia-dashboard-nodejs4-npm-run-lint/run.yaml new file mode 100644 index 00000000..34fa37e9 --- /dev/null +++ b/playbooks/legacy/octavia-dashboard-nodejs4-npm-run-lint/run.yaml @@ -0,0 +1,149 @@ +- hosts: all + name: Autoconverted job legacy-octavia-dashboard-nodejs4-npm-run-lint from old job + gate-octavia-dashboard-nodejs4-npm-run-lint + tasks: + + - name: Ensure legacy workspace directory + file: + path: '{{ ansible_user_dir }}/workspace' + state: directory + + - shell: + cmd: | + set -e + set -x + CLONEMAP=`mktemp` + function cleanup { + # In cases where zuul-cloner is aborted during a git + # clone operation, git will remove the git work tree in + # its cleanup. The work tree in these jobs is the + # workspace directory, which means that subsequent + # jenkins post-build actions can not run because the + # workspace has been removed. + # To reduce the likelihood of this having an impact, + # recreate the workspace directory if needed + mkdir -p $WORKSPACE + rm -f $CLONEMAP + } + trap cleanup EXIT + cat > $CLONEMAP << EOF + clonemap: + - name: $ZUUL_PROJECT + dest: . + EOF + /usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \ + git://git.openstack.org $ZUUL_PROJECT + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: /usr/local/jenkins/slave_scripts/install-distro-packages.sh + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + set -u + set -e + set -x + # Prerequisites + sudo apt-get update + sudo apt-get install -y apt-transport-https lsb-release curl + + DISTRO=$(lsb_release -c -s) + + # Install via nodesource + curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add - + + echo "deb https://deb.nodesource.com/node_4.x $DISTRO main" | sudo tee /etc/apt/sources.list.d/nodesource.list + echo "deb-src https://deb.nodesource.com/node_4.x $DISTRO main" | sudo tee -a /etc/apt/sources.list.d/nodesource.list + + sudo apt-get update + sudo apt-get install -y nodejs + + # Output to the log for debugging sake. + node --version + npm --version + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + sudo apt-get update + sudo apt-get install -y xvfb + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + sudo apt-get update + sudo apt-get install -y chromium-browser + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + sudo apt-get update + sudo apt-get install -y firefox dbus + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + set -x + sudo rm -f /etc/sudoers.d/zuul + # Prove that general sudo access is actually revoked + ! sudo -n true + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + DIMENSIONS='1280x1024x24' + /usr/bin/Xvfb :99 -screen 0 ${DIMENSIONS} -ac +extension GLX +render -noreset 2>&1 > /dev/null & + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + set -u + set -e + set -x + export DISPLAY=:99 + npm install --verbose + + # Try running as a standard lifecycle script, otherwise try custom. + npm_lifecycle_phases="publish install version test stop start restart pack" + + if [[ $npm_lifecycle_phases =~ (^| )lint($| ) ]]; then + npm lint --verbose + else + npm run lint --verbose + fi + + # If no shrinkwrap exists, generate it. + if [ ! -f ./npm-shrinkwrap.json ]; then + npm prune # https://github.com/npm/npm/issues/6298 + npm shrinkwrap + fi + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + OUT=`git ls-files --other --exclude-standard --directory` + if [ -z "$OUT" ]; then + echo "No extra files created during test." + exit 0 + else + echo "The following un-ignored files were created during the test:" + echo "$OUT" + exit 0 # TODO: change to 1 to fail tests. + fi + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' diff --git a/playbooks/legacy/octavia-dashboard-nodejs4-npm-run-test/post.yaml b/playbooks/legacy/octavia-dashboard-nodejs4-npm-run-test/post.yaml new file mode 100644 index 00000000..e38d86d9 --- /dev/null +++ b/playbooks/legacy/octavia-dashboard-nodejs4-npm-run-test/post.yaml @@ -0,0 +1,54 @@ +- hosts: primary + tasks: + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/cover/** + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/reports/** + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/npm-shrinkwrap.json + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/karma.subunit + - --include=*/ + - --exclude=* + - --prune-empty-dirs diff --git a/playbooks/legacy/octavia-dashboard-nodejs4-npm-run-test/run.yaml b/playbooks/legacy/octavia-dashboard-nodejs4-npm-run-test/run.yaml new file mode 100644 index 00000000..a43d3aad --- /dev/null +++ b/playbooks/legacy/octavia-dashboard-nodejs4-npm-run-test/run.yaml @@ -0,0 +1,149 @@ +- hosts: all + name: Autoconverted job legacy-octavia-dashboard-nodejs4-npm-run-test from old job + gate-octavia-dashboard-nodejs4-npm-run-test + tasks: + + - name: Ensure legacy workspace directory + file: + path: '{{ ansible_user_dir }}/workspace' + state: directory + + - shell: + cmd: | + set -e + set -x + CLONEMAP=`mktemp` + function cleanup { + # In cases where zuul-cloner is aborted during a git + # clone operation, git will remove the git work tree in + # its cleanup. The work tree in these jobs is the + # workspace directory, which means that subsequent + # jenkins post-build actions can not run because the + # workspace has been removed. + # To reduce the likelihood of this having an impact, + # recreate the workspace directory if needed + mkdir -p $WORKSPACE + rm -f $CLONEMAP + } + trap cleanup EXIT + cat > $CLONEMAP << EOF + clonemap: + - name: $ZUUL_PROJECT + dest: . + EOF + /usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \ + git://git.openstack.org $ZUUL_PROJECT + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: /usr/local/jenkins/slave_scripts/install-distro-packages.sh + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + set -u + set -e + set -x + # Prerequisites + sudo apt-get update + sudo apt-get install -y apt-transport-https lsb-release curl + + DISTRO=$(lsb_release -c -s) + + # Install via nodesource + curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add - + + echo "deb https://deb.nodesource.com/node_4.x $DISTRO main" | sudo tee /etc/apt/sources.list.d/nodesource.list + echo "deb-src https://deb.nodesource.com/node_4.x $DISTRO main" | sudo tee -a /etc/apt/sources.list.d/nodesource.list + + sudo apt-get update + sudo apt-get install -y nodejs + + # Output to the log for debugging sake. + node --version + npm --version + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + sudo apt-get update + sudo apt-get install -y xvfb + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + sudo apt-get update + sudo apt-get install -y chromium-browser + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + sudo apt-get update + sudo apt-get install -y firefox dbus + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + set -x + sudo rm -f /etc/sudoers.d/zuul + # Prove that general sudo access is actually revoked + ! sudo -n true + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + DIMENSIONS='1280x1024x24' + /usr/bin/Xvfb :99 -screen 0 ${DIMENSIONS} -ac +extension GLX +render -noreset 2>&1 > /dev/null & + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + set -u + set -e + set -x + export DISPLAY=:99 + npm install --verbose + + # Try running as a standard lifecycle script, otherwise try custom. + npm_lifecycle_phases="publish install version test stop start restart pack" + + if [[ $npm_lifecycle_phases =~ (^| )test($| ) ]]; then + npm test --verbose + else + npm run test --verbose + fi + + # If no shrinkwrap exists, generate it. + if [ ! -f ./npm-shrinkwrap.json ]; then + npm prune # https://github.com/npm/npm/issues/6298 + npm shrinkwrap + fi + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + OUT=`git ls-files --other --exclude-standard --directory` + if [ -z "$OUT" ]; then + echo "No extra files created during test." + exit 0 + else + echo "The following un-ignored files were created during the test:" + echo "$OUT" + exit 0 # TODO: change to 1 to fail tests. + fi + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml new file mode 100644 index 00000000..840bd013 --- /dev/null +++ b/zuul.d/jobs.yaml @@ -0,0 +1,17 @@ +- job: + name: octavia-dashboard-nodejs4-npm-run-lint + parent: legacy-base + run: playbooks/legacy/octavia-dashboard-nodejs4-npm-run-lint/run + post-run: playbooks/legacy/octavia-dashboard-nodejs4-npm-run-lint/post + timeout: 2400 + required-projects: + - openstack/horizon + +- job: + name: octavia-dashboard-nodejs4-npm-run-test + parent: legacy-base + run: playbooks/legacy/octavia-dashboard-nodejs4-npm-run-test/run + post-run: playbooks/legacy/octavia-dashboard-nodejs4-npm-run-test/post + timeout: 2400 + required-projects: + - openstack/horizon diff --git a/zuul.d/projects.yaml b/zuul.d/projects.yaml new file mode 100644 index 00000000..7694b5ad --- /dev/null +++ b/zuul.d/projects.yaml @@ -0,0 +1,12 @@ +# Note: Some official OpenStack wide jobs are still defined in the +# project-config repository +- project: + name: openstack/octavia-dashboard + check: + jobs: + - octavia-dashboard-nodejs4-npm-run-lint + - octavia-dashboard-nodejs4-npm-run-test + gate: + jobs: + - octavia-dashboard-nodejs4-npm-run-lint + - octavia-dashboard-nodejs4-npm-run-test