499af2c0cb
Now that we've dropped gerrit 3.5 we can convert label functions to submit requirements. This is required for Gerrit 3.7 but is optional under 3.6. Eventually we'll need to do this for all of our custom labels prior to the 3.7 upgrade. Change-Id: I4dda45040842de76c12f36b5b6d6b5948d82077a
271 lines
9.7 KiB
YAML
271 lines
9.7 KiB
YAML
- hosts: "review"
|
|
tasks:
|
|
- name: Wait for Gerrit to be up
|
|
uri:
|
|
url: http://localhost:8081/a/accounts/admin/sshkeys
|
|
method: GET
|
|
user: admin
|
|
password: secret
|
|
register: result
|
|
until: result.status == 200 and not result.redirected
|
|
delay: 1
|
|
retries: 120
|
|
|
|
- name: Create openstack-project-creator user
|
|
uri:
|
|
url: http://localhost:8081/a/accounts/openstack-project-creator
|
|
method: PUT
|
|
user: admin
|
|
password: secret
|
|
body_format: json
|
|
body:
|
|
username: 'openstack-project-creator'
|
|
name: 'Project Creator'
|
|
email: 'project.creator@example.com'
|
|
http_password: 'secret'
|
|
groups:
|
|
- Administrators
|
|
status_code: 201
|
|
|
|
- name: Create CI group
|
|
uri:
|
|
url: 'http://localhost:8081/a/groups/CI-tools'
|
|
method: PUT
|
|
user: admin
|
|
password: secret
|
|
body_format: json
|
|
body:
|
|
description: 'Continuous Integration Tools'
|
|
status_code: 201
|
|
|
|
- name: Create Zuul user
|
|
uri:
|
|
url: http://localhost:8081/a/accounts/zuul
|
|
method: PUT
|
|
user: admin
|
|
password: secret
|
|
body_format: json
|
|
body:
|
|
name: 'Zuul'
|
|
email: 'zuul@example.com'
|
|
http_password: 'secret'
|
|
status_code: 201
|
|
|
|
- name: Add Zuul to group
|
|
uri:
|
|
url: 'http://localhost:8081/a/groups/CI-tools/members/zuul'
|
|
method: PUT
|
|
user: admin
|
|
password: secret
|
|
status_code: 201
|
|
|
|
- name: Get group UUID
|
|
uri:
|
|
url: 'http://localhost:8081/a/groups/CI-tools'
|
|
method: GET
|
|
user: admin
|
|
password: secret
|
|
status_code: 200
|
|
return_content: yes
|
|
register: group_raw
|
|
|
|
- name: Debug serialized json
|
|
debug:
|
|
var: group_raw
|
|
|
|
- name: Deserialize returned data to internal variable.
|
|
set_fact:
|
|
# The first 4 bytes of the returned data are )]}' which is
|
|
# invalid json.
|
|
group_json: '{{ group_raw.content | regex_replace("^....", "") | from_json }}'
|
|
|
|
- name: Debug deserialized json
|
|
debug:
|
|
var: group_json
|
|
|
|
- name: Setup key and initial gerrit config
|
|
shell:
|
|
executable: /bin/bash
|
|
cmd: |
|
|
set -xe
|
|
|
|
ssh-keygen -t ed25519 -f /root/.ssh/id_25519 -P ""
|
|
curl -X POST --user "admin:secret" -H "Content-Type: text/plain" -d@/root/.ssh/id_25519.pub http://localhost:8081/a/accounts/admin/sshkeys
|
|
|
|
git config --global user.name "Admin"
|
|
git config --global user.email "admin@example.com"
|
|
|
|
git clone http://admin:secret@localhost:8081/a/All-Projects
|
|
|
|
pushd All-Projects
|
|
|
|
echo "{{ group_json.id }} CI-tools" >> groups # noqa 203
|
|
git commit -a -m "Add CI-tools group"
|
|
git push origin HEAD:refs/meta/config
|
|
|
|
cat >> project.config << EOF
|
|
[label "Verified"]
|
|
value = -2 Fails
|
|
value = -1 Doesn't seem to work
|
|
value = 0 No score
|
|
value = +1 Works for me
|
|
value = +2 Verified
|
|
[submit-requirement "Verified"]
|
|
description = CI result votes. Maximum required to merge and is provided by the Zuul's gate queue.
|
|
submittableIf = label:Verified=MAX AND -label:Verified=MIN
|
|
canOverrideInChildProjects = false
|
|
[access "refs/heads/*"]
|
|
label-Verified = -2..+2 group CI-tools
|
|
EOF
|
|
git commit -a -m 'Update All-Project configuration'
|
|
git push origin HEAD:refs/meta/config
|
|
|
|
popd
|
|
|
|
# openstack-project-creator bootstrapping
|
|
curl -X POST --user "openstack-project-creator:secret" -H "Content-Type: text/plain" -d@/home/gerrit2/review_site/etc/ssh_project_rsa_key.pub http://localhost:8081/a/accounts/openstack-project-creator/sshkeys
|
|
|
|
# This is helpful on a held node when you're trying to fix/enhance
|
|
# the Zuul summary plugin. You can build it locally, scp the new
|
|
# .jar to /tmp and run this to deploy your changes.
|
|
- name: Create summary plugin helper script
|
|
shell:
|
|
executable: /bin/bash
|
|
cmd: |
|
|
set -xe
|
|
|
|
cat > /root/deploy-zuul-results-summary.sh << EOF
|
|
#!/bin/bash
|
|
echo "Copying plugin"
|
|
docker cp /tmp/zuul-results-summary.jar \
|
|
gerrit-compose_gerrit_1:/var/gerrit/plugins/
|
|
echo "Reloading"
|
|
ssh -i /root/.ssh/id_25519 -p 29418 admin@localhost \
|
|
gerrit plugin reload zuul-results-summary
|
|
echo "Done"
|
|
EOF
|
|
|
|
chmod a+x /root/deploy-zuul-results-summary.sh
|
|
|
|
- name: Create temp dir for project creation
|
|
shell: mktemp -d
|
|
register: project_tmp
|
|
|
|
- name: Create project project in Gerrit
|
|
uri:
|
|
url: http://localhost:8081/a/projects/y%2Ftestproject
|
|
method: PUT
|
|
user: admin
|
|
password: secret
|
|
status_code: 201
|
|
|
|
- name: Create initial commit and change in testproject
|
|
shell:
|
|
executable: /bin/sh
|
|
chdir: "{{ project_tmp.stdout }}"
|
|
cmd: |
|
|
set -x
|
|
|
|
git init .
|
|
cat >.gitreview <<EOF
|
|
[gerrit]
|
|
host=localhost
|
|
port=29418
|
|
project=y/testproject
|
|
EOF
|
|
git add .gitreview
|
|
git commit -m "Initial commit"
|
|
git remote add gerrit http://admin:secret@localhost:8081/y/testproject
|
|
git push -f --set-upstream gerrit +HEAD:master
|
|
|
|
curl -Lo .git/hooks/commit-msg http://localhost:8081/tools/hooks/commit-msg
|
|
chmod u+x .git/hooks/commit-msg
|
|
|
|
cat >file-1.txt <<EOF
|
|
Hello, this is a file
|
|
EOF
|
|
git add file-1.txt
|
|
git commit -m "Sample review 1"
|
|
git push gerrit HEAD:refs/for/master
|
|
|
|
cat >file-2.txt <<EOF
|
|
Hello, this is a file
|
|
EOF
|
|
git add file-2.txt
|
|
git commit -m "Sample review 2"
|
|
git push gerrit HEAD:refs/for/master
|
|
|
|
cat >file-3.txt <<EOF
|
|
Hello, this is a file
|
|
EOF
|
|
git add file-3.txt
|
|
git commit -m "Sample review 3"
|
|
git push gerrit HEAD:refs/for/master
|
|
|
|
- name: Post a sample failure review
|
|
uri:
|
|
url: 'http://localhost:8081/a/changes/{{ item }}/revisions/1/review'
|
|
method: POST
|
|
user: zuul
|
|
password: secret
|
|
body_format: json
|
|
body:
|
|
tag: 'autogenerated:zuul:check'
|
|
labels:
|
|
'Verified': -2
|
|
message: |
|
|
Build failed (check pipeline). For information on how to proceed, see
|
|
https://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing
|
|
|
|
|
|
- test-success https://zuul.opendev.org/t/openstack/build/00b1ce7d5d994339a54dd8142a6813a6 : SUCCESS in {{ range(1, 59) | random }}m 22s
|
|
- test-failure https://zuul.opendev.org/t/openstack/build/00b1ce7d5d994339a54dd8142a6813a6 : FAILURE in {{ range(1, 59) | random }}m 22s
|
|
- test-retry-limit https://zuul.opendev.org/t/openstack/build/20efbb1b6983453884103e9628a70942 : RETRY_LIMIT in {{ range(1, 59) | random }}m 24s
|
|
- test-skipped https://zuul.opendev.org/t/openstack/build/None : SKIPPED
|
|
- test-aborted https://zuul.opendev.org/t/openstack/build/bc4a4559645b4088a9f8586c043c4764 : ABORTED in {{ range(1, 59) | random }}m 19s
|
|
- test-merger-failure https://zuul.opendev.org/t/openstack/build/cb469750b250430b95a02697931d6030 : MERGER_FAILURE in {{ range(1, 59) | random }}m 14s
|
|
- test-node-failure https://zuul.opendev.org/t/openstack/build/0897fafc9652480794652fc49e3c9baf : NODE_FAILURE in {{ range(1, 59) | random }}m 48s
|
|
- test-timed-out https://zuul.opendev.org/t/openstack/build/57c4eb5174554cbfbb06fd9118eb1ae4 : TIMED_OUT in {{ range(1, 59) | random }}m 37s (non-voting)
|
|
- test-post-failure https://zuul.opendev.org/t/openstack/build/30afb96669fe4f19b6215e79615ecd90 : POST_FAILURE in {{ range(1, 59) | random }}m 58s
|
|
- test-config-error https://zuul.opendev.org/t/openstack/build/76c69b8062284d959a85b55bc460f822 : CONFIG_ERROR in {{ range(1, 59) | random }}m 27s
|
|
- test-disk-full https://zuul.opendev.org/t/openstack/build/0897fafc9743580794652fc49e3c9baf : DISK_FULL in {{ range(1, 59) | random }}m 48s
|
|
- test-error https://zuul.opendev.org/t/openstack/build/0897bedc9743580794652fc49e3c1234 : ERROR This is an error message in {{ range(1, 59) | random }}m 32s
|
|
loop:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
|
|
- name: Post a sample good review in another pipeline
|
|
uri:
|
|
url: 'http://localhost:8081/a/changes/{{ item }}/revisions/1/review'
|
|
method: POST
|
|
user: zuul
|
|
password: secret
|
|
body_format: json
|
|
body:
|
|
tag: 'autogenerated:zuul:check-secondary'
|
|
message: |
|
|
Build succeeded (Secondary pipeline).
|
|
|
|
|
|
- test-second-ci https://zuul.opendev.org/t/openstack/build/f9c14856bf4e485089ca8fc8f00f324b : SUCCESS in {{ range(1, 59) | random}}m 11s
|
|
loop:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
|
|
# NOTE(ianw) we do an add/delete/add cycle as we've seen issues
|
|
# with duplicate updates causing problems before; e.g.
|
|
# https://gerrit-review.googlesource.com/c/gerrit/+/312602
|
|
- name: Post a file review to confirm accountPatchDb connection
|
|
uri:
|
|
url: 'http://localhost:8081/a/changes/y%2Ftestproject~1/revisions/1/files/file-1.txt/reviewed'
|
|
method: '{{ item[0] }}'
|
|
user: admin
|
|
password: secret
|
|
status_code: '{{ item[1] }}'
|
|
loop:
|
|
- [ PUT, 201 ]
|
|
- [ DELETE, 204 ]
|
|
- [ PUT, 201 ]
|