From 57f6f3c54d9dede1d6544a0be71fd84355198008 Mon Sep 17 00:00:00 2001 From: Michael Johnson Date: Tue, 17 Oct 2017 15:39:00 -0700 Subject: [PATCH] Move neutron-lbaas-dashboard zuulv3 config in repo This is the start of the transition to native Zuul v3 support for neutron-lbaas-dashboard. Change-Id: Ife75c717d4ffb74d6ccf4bfc4cf24b769924b6d7 --- .../post.yaml | 54 +++++++ .../run.yaml | 149 ++++++++++++++++++ .../post.yaml | 54 +++++++ .../run.yaml | 149 ++++++++++++++++++ tools/tox_install.sh | 6 +- zuul.d/jobs.yaml | 17 ++ zuul.d/projects.yaml | 12 ++ 7 files changed, 440 insertions(+), 1 deletion(-) create mode 100644 playbooks/legacy/neutron-lbaas-dashboard-nodejs4-npm-run-lint/post.yaml create mode 100644 playbooks/legacy/neutron-lbaas-dashboard-nodejs4-npm-run-lint/run.yaml create mode 100644 playbooks/legacy/neutron-lbaas-dashboard-nodejs4-npm-run-test/post.yaml create mode 100644 playbooks/legacy/neutron-lbaas-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/neutron-lbaas-dashboard-nodejs4-npm-run-lint/post.yaml b/playbooks/legacy/neutron-lbaas-dashboard-nodejs4-npm-run-lint/post.yaml new file mode 100644 index 0000000..e38d86d --- /dev/null +++ b/playbooks/legacy/neutron-lbaas-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/neutron-lbaas-dashboard-nodejs4-npm-run-lint/run.yaml b/playbooks/legacy/neutron-lbaas-dashboard-nodejs4-npm-run-lint/run.yaml new file mode 100644 index 0000000..212b8bd --- /dev/null +++ b/playbooks/legacy/neutron-lbaas-dashboard-nodejs4-npm-run-lint/run.yaml @@ -0,0 +1,149 @@ +- hosts: all + name: Autoconverted job legacy-neutron-lbaas-dashboard-nodejs4-npm-run-lint from + old job gate-neutron-lbaas-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/neutron-lbaas-dashboard-nodejs4-npm-run-test/post.yaml b/playbooks/legacy/neutron-lbaas-dashboard-nodejs4-npm-run-test/post.yaml new file mode 100644 index 0000000..e38d86d --- /dev/null +++ b/playbooks/legacy/neutron-lbaas-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/neutron-lbaas-dashboard-nodejs4-npm-run-test/run.yaml b/playbooks/legacy/neutron-lbaas-dashboard-nodejs4-npm-run-test/run.yaml new file mode 100644 index 0000000..3fb659f --- /dev/null +++ b/playbooks/legacy/neutron-lbaas-dashboard-nodejs4-npm-run-test/run.yaml @@ -0,0 +1,149 @@ +- hosts: all + name: Autoconverted job legacy-neutron-lbaas-dashboard-nodejs4-npm-run-test from + old job gate-neutron-lbaas-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/tools/tox_install.sh b/tools/tox_install.sh index 6cb6e15..9c10d94 100755 --- a/tools/tox_install.sh +++ b/tools/tox_install.sh @@ -20,6 +20,7 @@ install_project() { local project=$1 local branch=${2:-$BRANCH_NAME} local PROJECT_DIR=$HOME/$project + local ZUULV3_PROJECT_DIR=$HOME/src/git.openstack.org/openstack/$project set +e project_installed=$(echo "import $project" | python 2>/dev/null ; echo $?) @@ -32,7 +33,10 @@ install_project() { # Note that the functional tests use sudo to run tox and thus # variables used for zuul-cloner to check out the correct version are # lost. - if [ -d "$PROJECT_DIR" ]; then + if [ -d "$ZUULV3_PROJECT_DIR" ]; then + echo "FOUND $project code at $ZUULV3_PROJECT_DIR - using" + $install_cmd -U $ZUULV3_PROJECT_DIR + elif [ -d "$PROJECT_DIR" ]; then echo "FOUND $project code at $PROJECT_DIR - using" $install_cmd -U $PROJECT_DIR elif [ $project_installed -eq 0 ]; then diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml new file mode 100644 index 0000000..ff722da --- /dev/null +++ b/zuul.d/jobs.yaml @@ -0,0 +1,17 @@ +- job: + name: neutron-lbaas-dashboard-nodejs4-npm-run-lint + parent: legacy-base + run: playbooks/legacy/neutron-lbaas-dashboard-nodejs4-npm-run-lint/run.yaml + post-run: playbooks/legacy/neutron-lbaas-dashboard-nodejs4-npm-run-lint/post.yaml + timeout: 2400 + required-projects: + - openstack/horizon + +- job: + name: neutron-lbaas-dashboard-nodejs4-npm-run-test + parent: legacy-base + run: playbooks/legacy/neutron-lbaas-dashboard-nodejs4-npm-run-test/run.yaml + post-run: playbooks/legacy/neutron-lbaas-dashboard-nodejs4-npm-run-test/post.yaml + timeout: 2400 + required-projects: + - openstack/horizon diff --git a/zuul.d/projects.yaml b/zuul.d/projects.yaml new file mode 100644 index 0000000..7ce0eb4 --- /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/neutron-lbaas-dashboard + check: + jobs: + - neutron-lbaas-dashboard-nodejs4-npm-run-lint + - neutron-lbaas-dashboard-nodejs4-npm-run-test + gate: + jobs: + - neutron-lbaas-dashboard-nodejs4-npm-run-lint + - neutron-lbaas-dashboard-nodejs4-npm-run-test