diff --git a/.drone.yml b/.drone.yml index 38303f416..dc4796fae 100644 --- a/.drone.yml +++ b/.drone.yml @@ -11,7 +11,7 @@ pipeline: recursive: false integration-test-on-pr: - image: vmware/harbor-e2e-engine:1.37 + image: vmware/harbor-e2e-engine:1.38 pull: true privileged: true environment: @@ -35,7 +35,7 @@ pipeline: status: success bundle: - image: vmware/harbor-e2e-engine:1.37 + image: vmware/harbor-e2e-engine:1.38 pull: true privileged: true environment: diff --git a/.drone.yml.sig b/.drone.yml.sig index f0ca0dd60..63363d6f1 100644 --- a/.drone.yml.sig +++ b/.drone.yml.sig @@ -1 +1 @@ -eyJhbGciOiJIUzI1NiJ9.IyBIYXJib3IgZHJvbmUuCi0tLQp3b3Jrc3BhY2U6CiAgYmFzZTogL2Ryb25lCiAgcGF0aDogc3JjL2dpdGh1Yi5jb20vdm13YXJlL2hhcmJvcgoKcGlwZWxpbmU6CiAgY2xvbmU6CiAgICBpbWFnZTogcGx1Z2lucy9naXQKICAgIHRhZ3M6IHRydWUKICAgIHJlY3Vyc2l2ZTogZmFsc2UKCiAgaW50ZWdyYXRpb24tdGVzdC1vbi1wcjoKICAgIGltYWdlOiB2bXdhcmUvaGFyYm9yLWUyZS1lbmdpbmU6MS4zNwogICAgcHVsbDogdHJ1ZQogICAgcHJpdmlsZWdlZDogdHJ1ZQogICAgZW52aXJvbm1lbnQ6CiAgICAgIEJJTjogYmluCiAgICAgIEdPUEFUSDogL2Ryb25lCiAgICAgIFNIRUxMOiAvYmluL2Jhc2gKICAgICAgTE9HX1RFTVBfRElSOiBpbnN0YWxsLWxvZ3MKICAgICAgR0lUSFVCX0FVVE9NQVRJT05fQVBJX0tFWTogICR7R0lUSFVCX0FVVE9NQVRJT05fQVBJX0tFWX0KICAgICAgRFJPTkVfU0VSVkVSOiAgJHtEUk9ORV9TRVJWRVJ9CiAgICAgIERST05FX1RPS0VOOiAgJHtEUk9ORV9UT0tFTl9JTlRFfQogICAgICBIQVJCT1JfQURNSU46ICR7SEFSQk9SX0FETUlOfQogICAgICBIQVJCT1JfUEFTU1dPUkQ6ICR7SEFSQk9SX1BBU1NXT1JEfQogICAgICBHU19QUk9KRUNUX0lEOiAke0dTX1BST0pFQ1RfSUR9CiAgICAgIEdTX0NMSUVOVF9FTUFJTDogJHtHU19DTElFTlRfRU1BSUx9CiAgICAgIEdTX1BSSVZBVEVfS0VZOiAke0dTX1BSSVZBVEVfS0VZfQogICAgICBET01BSU46ICR7Q0lfRE9NQUlOfQogICAgICBNQUlMX1BXRDogJHtNQUlMX1BXRH0KICAgIGNvbW1hbmRzOgogICAgICAtIHRlc3RzL2ludGVncmF0aW9uLnNoCiAgICB3aGVuOgogICAgICBzdGF0dXM6IHN1Y2Nlc3MKCiAgYnVuZGxlOgogICAgaW1hZ2U6IHZtd2FyZS9oYXJib3ItZTJlLWVuZ2luZToxLjM3CiAgICBwdWxsOiB0cnVlCiAgICBwcml2aWxlZ2VkOiB0cnVlCiAgICBlbnZpcm9ubWVudDoKICAgICAgQklOOiBiaW4KICAgICAgR09QQVRIOiAvZHJvbmUKICAgICAgU0hFTEw6IC9iaW4vYmFzaAogICAgICBCVUlMRF9OVU1CRVI6ICR7RFJPTkVfQlVJTERfTlVNQkVSfQogICAgY29tbWFuZHM6CiAgICAgIC0gZHUgLWtzIGhhcmJvci1vZmZsaW5lLWluc3RhbGxlci0qLnRneiB8IGF3ayAne3ByaW50ICQxIC8gMTAyNH0nIHwgeyByZWFkIHg7IGVjaG8gJHggTUI7IH0KICAgICAgLSBta2RpciAtcCBidW5kbGUKICAgICAgLSBjcCBoYXJib3Itb2ZmbGluZS1pbnN0YWxsZXItKi50Z3ogYnVuZGxlCiAgICAgIC0gbHMgLWxhIGJ1bmRsZQogICAgd2hlbjoKICAgICAgcmVwbzogdm13YXJlL2hhcmJvcgogICAgICBldmVudDogWyBwdXNoLCB0YWcgXQogICAgICBicmFuY2g6IFsgbWFzdGVyLCByZWxlYXNlLSosIHJlZnMvdGFncy8qIF0KICAgICAgc3RhdHVzOiBzdWNjZXNzCgogIG5vdGlmeS1zbGFjazoKICAgIGltYWdlOiBwbHVnaW5zL3NsYWNrCiAgICB3ZWJob29rOiAke1NMQUNLX1VSTH0KICAgIHVzZXJuYW1lOiBkcm9uZQogICAgdGVtcGxhdGU6ID4KICAgICAgYnVpbGQgaHR0cHM6Ly9jaS52Y25hLmlvL3Ztd2FyZS9oYXJib3Ive3sgYnVpbGQubnVtYmVyIH19IGZpbmlzaGVkIHdpdGggYSB7eyBidWlsZC5zdGF0dXMgfX0gc3RhdHVzLiBQbGVhc2UgZmluZCBsb2dzIGF0IGh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9oYXJib3ItY2ktbG9ncy9pbnRlZ3JhdGlvbl9sb2dzX3t7IGJ1aWxkLm51bWJlciB9fV97eyBidWlsZC5jb21taXQgfX0udGFyLmd6CiAgICB3aGVuOgogICAgICByZXBvOiB2bXdhcmUvaGFyYm9yCiAgICAgIGJyYW5jaDogWyBtYXN0ZXIsIHJlbGVhc2UtKiwgcmVmcy90YWdzLyogXQogICAgICBzdGF0dXM6IFsgZmFpbHVyZSwgc3VjY2VzcyBdCgogIHB1Ymxpc2gtZ2NzLWJ1aWxkczoKICAgIGltYWdlOiBtYXBsYWluL2Ryb25lLWdjczpsYXRlc3QKICAgIHB1bGw6IHRydWUKICAgIHNvdXJjZTogYnVuZGxlCiAgICB0YXJnZXQ6IGhhcmJvci1idWlsZHMKICAgIGFjbDoKICAgICAgLSBhbGxVc2VyczpSRUFERVIKICAgIGNhY2hlX2NvbnRyb2w6IHB1YmxpYyxtYXgtYWdlPTM2MDAKICAgIHdoZW46CiAgICAgIHJlcG86IHZtd2FyZS9oYXJib3IKICAgICAgZXZlbnQ6IFsgcHVzaCwgdGFnIF0KICAgICAgYnJhbmNoOiBbIG1hc3RlciwgcmVsZWFzZS0qIF0KICAgICAgc3RhdHVzOiBzdWNjZXNzCgogIHB1Ymxpc2gtZ2NzLXJlbGVhc2VzOgogICAgaW1hZ2U6IG1hcGxhaW4vZHJvbmUtZ2NzOmxhdGVzdAogICAgcHVsbDogdHJ1ZQogICAgc291cmNlOiBidW5kbGUKICAgIHRhcmdldDogaGFyYm9yLXJlbGVhc2VzCiAgICBhY2w6CiAgICAgIC0gYWxsVXNlcnM6UkVBREVSCiAgICBjYWNoZV9jb250cm9sOiBwdWJsaWMsbWF4LWFnZT0zNjAwCiAgICB3aGVuOgogICAgICByZXBvOiB2bXdhcmUvaGFyYm9yCiAgICAgIGV2ZW50OiBbIHB1c2gsIHRhZyBdCiAgICAgIGJyYW5jaDogWyByZWxlYXNlLSosIHJlZnMvdGFncy8qIF0KICAgICAgc3RhdHVzOiBzdWNjZXNzCgogIHRyaWdnZXI6CiAgICBpbWFnZTogcGx1Z2lucy9kb3duc3RyZWFtCiAgICBzZXJ2ZXI6IGh0dHBzOi8vY2kudmNuYS5pbwogICAgdG9rZW46ICR7RE9XTlNUUkVBTV9UT0tFTn0KICAgIGZvcms6IHRydWUKICAgIHJlcG9zaXRvcmllczoKICAgICAgIC0gdm13YXJlL3ZpYy1wcm9kdWN0CiAgICB3aGVuOgogICAgICByZXBvOiB2bXdhcmUvaGFyYm9yCiAgICAgIGV2ZW50OiBbIHB1c2gsIHRhZyBdCiAgICAgIGJyYW5jaDogWyBtYXN0ZXIsIHJlbGVhc2UtKiwgcmVmcy90YWdzLyogXQogICAgICBzdGF0dXM6IHN1Y2Nlc3MK.pc3_vwqOx7Nf2Yz9LnFrIzik0K6o0f5Dpv2Aludl3B8 \ No newline at end of file +eyJhbGciOiJIUzI1NiJ9.IyBIYXJib3IgZHJvbmUuCi0tLQp3b3Jrc3BhY2U6CiAgYmFzZTogL2Ryb25lCiAgcGF0aDogc3JjL2dpdGh1Yi5jb20vdm13YXJlL2hhcmJvcgoKcGlwZWxpbmU6CiAgY2xvbmU6CiAgICBpbWFnZTogcGx1Z2lucy9naXQKICAgIHRhZ3M6IHRydWUKICAgIHJlY3Vyc2l2ZTogZmFsc2UKCiAgaW50ZWdyYXRpb24tdGVzdC1vbi1wcjoKICAgIGltYWdlOiB2bXdhcmUvaGFyYm9yLWUyZS1lbmdpbmU6MS4zOAogICAgcHVsbDogdHJ1ZQogICAgcHJpdmlsZWdlZDogdHJ1ZQogICAgZW52aXJvbm1lbnQ6CiAgICAgIEJJTjogYmluCiAgICAgIEdPUEFUSDogL2Ryb25lCiAgICAgIFNIRUxMOiAvYmluL2Jhc2gKICAgICAgTE9HX1RFTVBfRElSOiBpbnN0YWxsLWxvZ3MKICAgICAgR0lUSFVCX0FVVE9NQVRJT05fQVBJX0tFWTogICR7R0lUSFVCX0FVVE9NQVRJT05fQVBJX0tFWX0KICAgICAgRFJPTkVfU0VSVkVSOiAgJHtEUk9ORV9TRVJWRVJ9CiAgICAgIERST05FX1RPS0VOOiAgJHtEUk9ORV9UT0tFTl9JTlRFfQogICAgICBIQVJCT1JfQURNSU46ICR7SEFSQk9SX0FETUlOfQogICAgICBIQVJCT1JfUEFTU1dPUkQ6ICR7SEFSQk9SX1BBU1NXT1JEfQogICAgICBHU19QUk9KRUNUX0lEOiAke0dTX1BST0pFQ1RfSUR9CiAgICAgIEdTX0NMSUVOVF9FTUFJTDogJHtHU19DTElFTlRfRU1BSUx9CiAgICAgIEdTX1BSSVZBVEVfS0VZOiAke0dTX1BSSVZBVEVfS0VZfQogICAgICBET01BSU46ICR7Q0lfRE9NQUlOfQogICAgICBNQUlMX1BXRDogJHtNQUlMX1BXRH0KICAgIGNvbW1hbmRzOgogICAgICAtIHRlc3RzL2ludGVncmF0aW9uLnNoCiAgICB3aGVuOgogICAgICBzdGF0dXM6IHN1Y2Nlc3MKCiAgYnVuZGxlOgogICAgaW1hZ2U6IHZtd2FyZS9oYXJib3ItZTJlLWVuZ2luZToxLjM4CiAgICBwdWxsOiB0cnVlCiAgICBwcml2aWxlZ2VkOiB0cnVlCiAgICBlbnZpcm9ubWVudDoKICAgICAgQklOOiBiaW4KICAgICAgR09QQVRIOiAvZHJvbmUKICAgICAgU0hFTEw6IC9iaW4vYmFzaAogICAgICBCVUlMRF9OVU1CRVI6ICR7RFJPTkVfQlVJTERfTlVNQkVSfQogICAgY29tbWFuZHM6CiAgICAgIC0gZHUgLWtzIGhhcmJvci1vZmZsaW5lLWluc3RhbGxlci0qLnRneiB8IGF3ayAne3ByaW50ICQxIC8gMTAyNH0nIHwgeyByZWFkIHg7IGVjaG8gJHggTUI7IH0KICAgICAgLSBta2RpciAtcCBidW5kbGUKICAgICAgLSBjcCBoYXJib3Itb2ZmbGluZS1pbnN0YWxsZXItKi50Z3ogYnVuZGxlCiAgICAgIC0gbHMgLWxhIGJ1bmRsZQogICAgd2hlbjoKICAgICAgcmVwbzogdm13YXJlL2hhcmJvcgogICAgICBldmVudDogWyBwdXNoLCB0YWcgXQogICAgICBicmFuY2g6IFsgbWFzdGVyLCByZWxlYXNlLSosIHJlZnMvdGFncy8qIF0KICAgICAgc3RhdHVzOiBzdWNjZXNzCgogIG5vdGlmeS1zbGFjazoKICAgIGltYWdlOiBwbHVnaW5zL3NsYWNrCiAgICB3ZWJob29rOiAke1NMQUNLX1VSTH0KICAgIHVzZXJuYW1lOiBkcm9uZQogICAgdGVtcGxhdGU6ID4KICAgICAgYnVpbGQgaHR0cHM6Ly9jaS52Y25hLmlvL3Ztd2FyZS9oYXJib3Ive3sgYnVpbGQubnVtYmVyIH19IGZpbmlzaGVkIHdpdGggYSB7eyBidWlsZC5zdGF0dXMgfX0gc3RhdHVzLiBQbGVhc2UgZmluZCBsb2dzIGF0IGh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9oYXJib3ItY2ktbG9ncy9pbnRlZ3JhdGlvbl9sb2dzX3t7IGJ1aWxkLm51bWJlciB9fV97eyBidWlsZC5jb21taXQgfX0udGFyLmd6CiAgICB3aGVuOgogICAgICByZXBvOiB2bXdhcmUvaGFyYm9yCiAgICAgIGJyYW5jaDogWyBtYXN0ZXIsIHJlbGVhc2UtKiwgcmVmcy90YWdzLyogXQogICAgICBzdGF0dXM6IFsgZmFpbHVyZSwgc3VjY2VzcyBdCgogIHB1Ymxpc2gtZ2NzLWJ1aWxkczoKICAgIGltYWdlOiBtYXBsYWluL2Ryb25lLWdjczpsYXRlc3QKICAgIHB1bGw6IHRydWUKICAgIHNvdXJjZTogYnVuZGxlCiAgICB0YXJnZXQ6IGhhcmJvci1idWlsZHMKICAgIGFjbDoKICAgICAgLSBhbGxVc2VyczpSRUFERVIKICAgIGNhY2hlX2NvbnRyb2w6IHB1YmxpYyxtYXgtYWdlPTM2MDAKICAgIHdoZW46CiAgICAgIHJlcG86IHZtd2FyZS9oYXJib3IKICAgICAgZXZlbnQ6IFsgcHVzaCwgdGFnIF0KICAgICAgYnJhbmNoOiBbIG1hc3RlciwgcmVsZWFzZS0qIF0KICAgICAgc3RhdHVzOiBzdWNjZXNzCgogIHB1Ymxpc2gtZ2NzLXJlbGVhc2VzOgogICAgaW1hZ2U6IG1hcGxhaW4vZHJvbmUtZ2NzOmxhdGVzdAogICAgcHVsbDogdHJ1ZQogICAgc291cmNlOiBidW5kbGUKICAgIHRhcmdldDogaGFyYm9yLXJlbGVhc2VzCiAgICBhY2w6CiAgICAgIC0gYWxsVXNlcnM6UkVBREVSCiAgICBjYWNoZV9jb250cm9sOiBwdWJsaWMsbWF4LWFnZT0zNjAwCiAgICB3aGVuOgogICAgICByZXBvOiB2bXdhcmUvaGFyYm9yCiAgICAgIGV2ZW50OiBbIHB1c2gsIHRhZyBdCiAgICAgIGJyYW5jaDogWyByZWxlYXNlLSosIHJlZnMvdGFncy8qIF0KICAgICAgc3RhdHVzOiBzdWNjZXNzCgogIHRyaWdnZXI6CiAgICBpbWFnZTogcGx1Z2lucy9kb3duc3RyZWFtCiAgICBzZXJ2ZXI6IGh0dHBzOi8vY2kudmNuYS5pbwogICAgdG9rZW46ICR7RE9XTlNUUkVBTV9UT0tFTn0KICAgIGZvcms6IHRydWUKICAgIHJlcG9zaXRvcmllczoKICAgICAgIC0gdm13YXJlL3ZpYy1wcm9kdWN0CiAgICB3aGVuOgogICAgICByZXBvOiB2bXdhcmUvaGFyYm9yCiAgICAgIGV2ZW50OiBbIHB1c2gsIHRhZyBdCiAgICAgIGJyYW5jaDogWyBtYXN0ZXIsIHJlbGVhc2UtKiwgcmVmcy90YWdzLyogXQogICAgICBzdGF0dXM6IHN1Y2Nlc3MK.zJ8m0va6puda1z8zxRk0rDeqPYZxfv7E8TRVI3d_1Sg \ No newline at end of file diff --git a/tests/resources/Cert-Util.robot b/tests/resources/Cert-Util.robot index 50c96f2c1..001f3e9ad 100644 --- a/tests/resources/Cert-Util.robot +++ b/tests/resources/Cert-Util.robot @@ -16,6 +16,17 @@ Documentation This resource contains keywords related to creating and using certificates. Requires scripts in infra/integration-image/scripts be available in PATH *** Keywords *** +Generate Certificate Authority For Chrome + # add the ca to chrome trust list to enable https testing. + [Arguments] ${password}=%{HARBOR_PASSWORD} + Log To Console Generate Certificate Authority For Chrome + ${rc} ${out}= Run And Return Rc And Output echo ${password} > password.ca + Log ${out} + Should Be Equal As Integers ${rc} 0 + ${rc} ${out}= Run And Return Rc And Output certutil -d sql:$HOME/.pki/nssdb -A -t TC -f password.ca -n "Harbor" -i ./harbor_ca.crt + Log ${out} + Should Be Equal As Integers ${rc} 0 + Generate Certificate Authority # Generates CA (private/ca.key.pem, certs/ca.cert.pem, certs/STARK_ENTERPRISES_ROOT_CA.crt) in OUT_DIR [Arguments] ${CA_NAME}=STARK_ENTERPRISES_ROOT_CA ${OUT_DIR}=/root/ca @@ -24,7 +35,6 @@ Generate Certificate Authority Log ${out} Should Be Equal As Integers ${rc} 0 - Generate Wildcard Server Certificate # Generates key and signs with CA for *.DOMAIN (csr/*.DOMAIN.csr.pem, # private/*.DOMAIN.key.pem, certs/*.DOMAIN.cert.pem) in OUT_DIR diff --git a/tests/resources/Docker-Util.robot b/tests/resources/Docker-Util.robot index 16ca3eb51..c3770f3c0 100644 --- a/tests/resources/Docker-Util.robot +++ b/tests/resources/Docker-Util.robot @@ -40,11 +40,11 @@ Push image Log To Console \nRunning docker push ${image}... ${rc}= Run And Return Rc docker pull ${image} ${rc} ${output}= Run And Return Rc And Output docker login -u ${user} -p ${pwd} ${ip} - Log To Console ${output} + Log ${output} Should Be Equal As Integers ${rc} 0 ${rc}= Run And Return Rc docker tag ${image} ${ip}/${project}/${image} ${rc} ${output}= Run And Return Rc And Output docker push ${ip}/${project}/${image} - Log To Console ${output} + Log ${output} Should Be Equal As Integers ${rc} 0 ${rc}= Run And Return Rc docker logout ${ip} @@ -53,11 +53,11 @@ Push Image With Tag Log To Console \nRunning docker push ${image}... ${rc}= Run And Return Rc docker pull ${image} ${rc} ${output}= Run And Return Rc And Output docker login -u ${user} -p ${pwd} ${ip} - Log To Console ${output} + Log ${output} Should Be Equal As Integers ${rc} 0 ${rc}= Run And Return Rc docker tag ${image} ${tag} ${rc} ${output}= Run And Return Rc And Output docker push ${tag} - Log To Console ${output} + Log ${output} Should Be Equal As Integers ${rc} 0 ${rc}= Run And Return Rc docker logout ${ip} @@ -66,7 +66,7 @@ Cannot Pull image ${rc} ${output}= Run And Return Rc And Output docker login -u ${user} -p ${pwd} ${ip} Should Be Equal As Integers ${rc} 0 ${rc} ${output}= Run And Return Rc And Output docker pull ${ip}/${project}/${image} - Log To Console ${output} + Log ${output} Should Not Be Equal As Integers ${rc} 0 Cannot Push image @@ -74,11 +74,11 @@ Cannot Push image Log To Console \nRunning docker push ${image}... ${rc}= Run And Return Rc docker pull ${image} ${rc} ${output}= Run And Return Rc And Output docker login -u ${user} -p ${pwd} ${ip} - Log To Console ${output} + Log ${output} Should Be Equal As Integers ${rc} 0 ${rc}= Run And Return Rc docker tag ${image} ${ip}/${project}/${image} ${rc} ${output}= Run And Return Rc And Output docker push ${ip}/${project}/${image} - Log To Console ${output} + Log ${output} Should Not Be Equal As Integers ${rc} 0 ${rc}= Run And Return Rc docker logout ${ip} diff --git a/tests/resources/Harbor-Util.robot b/tests/resources/Harbor-Util.robot index 95775bd0c..4a6424ee7 100644 --- a/tests/resources/Harbor-Util.robot +++ b/tests/resources/Harbor-Util.robot @@ -24,81 +24,53 @@ ${CLAIR_BUILDER} 1.2.7 *** Keywords *** Install Harbor to Test Server - Log To Console \nStart Docker Daemon - Start Docker Daemon Locally - Sleep 5s - ${rc} ${output}= Run And Return Rc And Output docker ps - Should Be Equal As Integers ${rc} 0 - Log To Console \n${output} - Log To Console \nconfig harbor cfg - Run Keywords Config Harbor cfg - Run Keywords Prepare Cert - Log To Console \ncomplile and up harbor now - Run Keywords Compile and Up Harbor With Source Code + Log To Console \nStart Docker Daemon + Start Docker Daemon Locally + Sleep 5s ${rc} ${output}= Run And Return Rc And Output docker ps Should Be Equal As Integers ${rc} 0 Log To Console \n${output} - -Install Harbor With Notary to Test Server - Log To Console \nStart Docker Daemon - Start Docker Daemon Locally - Sleep 5s - ${rc} ${output}= Run And Return Rc And Output docker ps - Should Be Equal As Integers ${rc} 0 - Log To Console \n${output} Log To Console \nconfig harbor cfg Config Harbor cfg http_proxy=https - ${rc} ${ip}= Run And Return Rc And Output ip addr s eth0 |grep "inet "|awk '{print $2}' |awk -F "/" '{print $1}' - Log ${ip} - ${rc}= Run And Return Rc sed "s/^IP=.*/IP=${ip}/g" -i ./tests/generateCerts.sh - Log ${rc} - ${rc} ${output}= Run And Return Rc And Output ./tests/generateCerts.sh - Should Be Equal As Integers ${rc} 0 - ${rc}= Run And Return Rc mkdir -p /etc/docker/certs.d/${ip}/ - Should Be Equal As Integers ${rc} 0 - ${rc}= Run And Return Rc mkdir -p ~/.docker/tls/${ip}:4443/ - Should Be Equal As Integers ${rc} 0 - ${rc} ${output}= Run And Return Rc And Output cp ./harbor_ca.crt /etc/docker/certs.d/${ip}/ - Log To Console ${output} - Should Be Equal As Integers ${rc} 0 - ${rc} ${output}= Run And Return Rc And Output cp ./harbor_ca.crt ~/.docker/tls/${ip}:4443/ - Log To Console ${output} - Should Be Equal As Integers ${rc} 0 + Prepare Cert Log To Console \ncomplile and up harbor now - Compile and Up Harbor With Source Code with_notary=true + Compile and Up Harbor With Source Code ${rc} ${output}= Run And Return Rc And Output docker ps Should Be Equal As Integers ${rc} 0 Log To Console \n${output} + Generate Certificate Authority For Chrome Up Harbor - [Arguments] ${with_notary}=true ${with_clair}=true - ${rc} ${output}= Run And Return Rc And Output make start -e NOTARYFLAG=${with_notary} CLAIRFLAG=${with_clair} - Log To Console ${rc} - Should Be Equal As Integers ${rc} 0 + [Arguments] ${with_notary}=true ${with_clair}=true + ${rc} ${output}= Run And Return Rc And Output make start -e NOTARYFLAG=${with_notary} CLAIRFLAG=${with_clair} + Log ${rc} + Log ${output} + Should Be Equal As Integers ${rc} 0 Down Harbor - [Arguments] ${with_notary}=true ${with_clair}=true - ${rc} ${output}= Run And Return Rc And Output echo "Y" | make down -e NOTARYFLAG=${with_notary} CLAIRFLAG=${with_clair} - Log To Console ${rc} - Should Be Equal As Integers ${rc} 0 + [Arguments] ${with_notary}=true ${with_clair}=true + ${rc} ${output}= Run And Return Rc And Output echo "Y" | make down -e NOTARYFLAG=${with_notary} CLAIRFLAG=${with_clair} + Log ${rc} + Should Be Equal As Integers ${rc} 0 Package Harbor Offline - [Arguments] ${golang_image}=golang:1.7.3 ${clarity_image}=vmware/harbor-clarity-ui-builder:${CLAIR_BUILDER} ${with_notary}=true ${with_clair}=true ${with_migrator}=true - Log To Console \nStart Docker Daemon - Start Docker Daemon Locally - ${rc} ${output}= Run And Return Rc And Output make package_offline DEVFLAG=false GOBUILDIMAGE=${golang_image} COMPILETAG=compile_golangimage CLARITYIMAGE=${clarity_image} NOTARYFLAG=${with_notary} CLAIRFLAG=${with_clair} MIGRATORFLAG=${with_migrator} HTTPPROXY= - Log To Console ${rc} - Log ${output} - Should Be Equal As Integers ${rc} 0 + [Arguments] ${golang_image}=golang:1.7.3 ${clarity_image}=vmware/harbor-clarity-ui-builder:${CLAIR_BUILDER} ${with_notary}=true ${with_clair}=true ${with_migrator}=true + Log To Console \nStart Docker Daemon + Start Docker Daemon Locally + ${rc} ${output}= Run And Return Rc And Output make package_offline DEVFLAG=false GOBUILDIMAGE=${golang_image} COMPILETAG=compile_golangimage CLARITYIMAGE=${clarity_image} NOTARYFLAG=${with_notary} CLAIRFLAG=${with_clair} MIGRATORFLAG=${with_migrator} HTTPPROXY= + Log ${rc} + Log ${output} + Should Be Equal As Integers ${rc} 0 Switch To LDAP - Down Harbor with_notary=false - ${rc} ${output}= Run And Return Rc And Output rm -rf /data - Log To Console ${rc} - Should Be Equal As Integers ${rc} 0 - Config Harbor cfg auth=ldap_auth - Prepare with_notary=false - Up Harbor with_notary=false + Down Harbor + ${rc} ${output}= Run And Return Rc And Output rm -rf /data + Log ${rc} + Should Be Equal As Integers ${rc} 0 + Prepare Cert + Config Harbor cfg auth=ldap_auth http_proxy=https + Prepare + Up Harbor ${rc}= Run And Return Rc docker pull vmware/harbor-ldap-test:1.1.1 Log ${rc} Should Be Equal As Integers ${rc} 0 @@ -106,81 +78,73 @@ Switch To LDAP Log ${rc} Should Be Equal As Integers ${rc} 0 ${rc} ${output}= Run And Return Rc And Output docker ps + Log ${output} Should Be Equal As Integers ${rc} 0 - -Switch To Notary - Down Harbor with_notary=false - ${rc} ${output}= Run And Return Rc And Output rm -rf /data - Log To Console ${rc} - ${rc} ${output}= Run And Return Rc And Output rm -rf ~/.docker/ - Log To Console ${rc} - Should Be Equal As Integers ${rc} 0 - Config Harbor cfg http_proxy=https - ${rc} ${ip}= Run And Return Rc And Output ip addr s eth0 |grep "inet "|awk '{print $2}' |awk -F "/" '{print $1}' - Log ${ip} - ${rc}= Run And Return Rc sed "s/^IP=.*/IP=${ip}/g" -i ./tests/generateCerts.sh + Generate Certificate Authority For Chrome + +Enabe Notary Client + ${rc} ${output}= Run And Return Rc And Output rm -rf ~/.docker/ Log ${rc} - ${rc} ${output}= Run And Return Rc And Output ./tests/generateCerts.sh - Should Be Equal As Integers ${rc} 0 - ${rc}= Run And Return Rc mkdir -p /etc/docker/certs.d/${ip}/ - Should Be Equal As Integers ${rc} 0 - ${rc}= Run And Return Rc mkdir -p ~/.docker/tls/${ip}:4443/ - Should Be Equal As Integers ${rc} 0 - ${rc} ${output}= Run And Return Rc And Output cp ./harbor_ca.crt /etc/docker/certs.d/${ip}/ - Log To Console ${output} - Should Be Equal As Integers ${rc} 0 - ${rc} ${output}= Run And Return Rc And Output cp ./harbor_ca.crt ~/.docker/tls/${ip}:4443/ - Log To Console ${output} - Should Be Equal As Integers ${rc} 0 - ${rc} ${output}= Run And Return Rc And Output ls -la /etc/docker/certs.d/${ip}/ - Log To Console ${output} - ${rc} ${output}= Run And Return Rc And Output ls -la ~/.docker/tls/${ip}:4443/ - Log To Console ${output} - Prepare - Sleep 3s - Up Harbor - Sleep 30s - ${rc} ${output}= Run And Return Rc And Output docker ps Should Be Equal As Integers ${rc} 0 - Log To Console \n${output} + Log ${ip} + ${rc}= Run And Return Rc mkdir -p /etc/docker/certs.d/${ip}/ + Should Be Equal As Integers ${rc} 0 + ${rc}= Run And Return Rc mkdir -p ~/.docker/tls/${ip}:4443/ + Should Be Equal As Integers ${rc} 0 + ${rc} ${output}= Run And Return Rc And Output cp ./harbor_ca.crt /etc/docker/certs.d/${ip}/ + Log ${output} + Should Be Equal As Integers ${rc} 0 + ${rc} ${output}= Run And Return Rc And Output cp ./harbor_ca.crt ~/.docker/tls/${ip}:4443/ + Log ${output} + Should Be Equal As Integers ${rc} 0 + ${rc} ${output}= Run And Return Rc And Output ls -la /etc/docker/certs.d/${ip}/ + Log ${output} + ${rc} ${output}= Run And Return Rc And Output ls -la ~/.docker/tls/${ip}:4443/ + Log ${output} Prepare - [Arguments] ${with_notary}=true ${with_clair}=true - ${rc} ${output}= Run And Return Rc And Output make prepare -e NOTARYFLAG=${with_notary} CLAIRFLAG=${with_clair} - Log To Console ${rc} - Log To Console ${output} - Should Be Equal As Integers ${rc} 0 + [Arguments] ${with_notary}=true ${with_clair}=true + ${rc} ${output}= Run And Return Rc And Output make prepare -e NOTARYFLAG=${with_notary} CLAIRFLAG=${with_clair} + Log ${rc} + Log ${output} + Should Be Equal As Integers ${rc} 0 Config Harbor cfg # Will change the IP and Protocol in the harbor.cfg [Arguments] ${http_proxy}=http ${auth}=db_auth ${rc} ${output}= Run And Return Rc And Output ip addr s eth0 |grep "inet "|awk '{print $2}' |awk -F "/" '{print $1}' - Log ${output} - ${rc}= Run And Return Rc sed "s/reg.mydomain.com/${output}/" -i ./make/harbor.cfg + ${rc}= Run And Return Rc sed "s/^hostname = .*/hostname = ${output}/g" -i ./make/harbor.cfg Log ${rc} Should Be Equal As Integers ${rc} 0 ${rc}= Run And Return Rc sed "s/^ui_url_protocol = .*/ui_url_protocol = ${http_proxy}/g" -i ./make/harbor.cfg Log ${rc} Should Be Equal As Integers ${rc} 0 - ${rc}= Run And Return Rc sed "s/^auth_mode = .*/auth_mode = ${auth}/g" -i ./make/harbor.cfg + ${rc}= Run And Return Rc sed "s/^auth_mode = .*/auth_mode = ${auth}/g" -i ./make/harbor.cfg Log ${rc} Should Be Equal As Integers ${rc} 0 + ${out}= Run cat ./make/harbor.cfg + Log ${out} Prepare Cert # Will change the IP and Protocol in the harbor.cfg - ${rc}= Run And Return Rc ./tests/generateCerts.sh - Log ${rc} - Should Be Equal As Integers ${rc} 0 + ${rc} ${ip}= Run And Return Rc And Output ip addr s eth0 |grep "inet "|awk '{print $2}' |awk -F "/" '{print $1}' + Log ${ip} + ${rc}= Run And Return Rc sed "s/^IP=.*/IP=${ip}/g" -i ./tests/generateCerts.sh + Log ${rc} + ${out}= Run cat ./tests/generateCerts.sh + Log ${out} + ${rc} ${output}= Run And Return Rc And Output ./tests/generateCerts.sh + Should Be Equal As Integers ${rc} 0 Compile and Up Harbor With Source Code - [Arguments] ${golang_image}=golang:1.7.3 ${clarity_image}=vmware/harbor-clarity-ui-builder:${CLAIR_BUILDER} ${with_notary}=false ${with_clair}=true - ${rc} ${output}= Run And Return Rc And Output docker pull ${clarity_image} + [Arguments] ${golang_image}=golang:1.7.3 ${clarity_image}=vmware/harbor-clarity-ui-builder:${CLAIR_BUILDER} ${with_notary}=true ${with_clair}=true + ${rc} ${output}= Run And Return Rc And Output docker pull ${clarity_image} Log ${output} - Should Be Equal As Integers ${rc} 0 - ${rc} ${output}= Run And Return Rc And Output docker pull ${golang_image} + Should Be Equal As Integers ${rc} 0 + ${rc} ${output}= Run And Return Rc And Output docker pull ${golang_image} Log ${output} - Should Be Equal As Integers ${rc} 0 + Should Be Equal As Integers ${rc} 0 ${rc} ${output}= Run And Return Rc And Output make install GOBUILDIMAGE=${golang_image} COMPILETAG=compile_golangimage CLARITYIMAGE=${clarity_image} NOTARYFLAG=${with_notary} CLAIRFLAG=${with_clair} HTTPPROXY= - Log ${output} - Should Be Equal As Integers ${rc} 0 + Log ${output} + Should Be Equal As Integers ${rc} 0 Sleep 20 diff --git a/tests/resources/SeleniumUtil.robot b/tests/resources/SeleniumUtil.robot index aa567217b..b65703e0f 100644 --- a/tests/resources/SeleniumUtil.robot +++ b/tests/resources/SeleniumUtil.robot @@ -26,15 +26,13 @@ Start Selenium Standalone Server Locally Init Chrome Driver Run pkill chromedriver - Run pkill chrome - ${chrome options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys - Call Method ${chrome options} add_argument --headless - Call Method ${chrome options} add_argument --disable-gpu + Run pkill chrome + ${chrome options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys + Call Method ${chrome options} add_argument --headless + Call Method ${chrome options} add_argument --disable-gpu Call Method ${chrome options} add_argument --start-maximized - Call Method ${chrome options} add_argument --ignore-certificate-errors - Call Method ${chrome options} add_argument --disable-web-security - Call Method ${chrome options} add_argument --allow-running-insecure-content - Call Method ${chrome options} add_argument --window-size\=1600,900 - ${chrome options.binary_location} Set Variable /usr/bin/google-chrome - Create Webdriver Chrome Chrome_headless chrome_options=${chrome options} - Sleep 5 \ No newline at end of file + Call Method ${chrome options} add_argument --no-sandbox + Call Method ${chrome options} add_argument --window-size\=1600,900 + ${chrome options.binary_location} Set Variable /usr/bin/google-chrome + Create Webdriver Chrome Chrome_headless chrome_options=${chrome options} + Sleep 5 diff --git a/tests/robot-cases/Group0-BAT/BAT.robot b/tests/robot-cases/Group0-BAT/BAT.robot index fa2affb7d..63530f2f9 100644 --- a/tests/robot-cases/Group0-BAT/BAT.robot +++ b/tests/robot-cases/Group0-BAT/BAT.robot @@ -19,7 +19,7 @@ Suite Setup Install Harbor to Test Server Default Tags BAT *** Variables *** -${HARBOR_URL} http://localhost +${HARBOR_URL} https://${ip} *** Test Cases *** Test Case - Create An New User @@ -84,7 +84,7 @@ Test Case - User View Logs Init Chrome Driver ${d}= Get Current Date result_format=%m%s - Create An New Project With New User url=${HARBOR_URL} username=tester${d} email=tester${d}@vmware.com realname=tester${d} newPassword=Test1@34 comment=harbor projectname=project${d} public=true + Create An New Project With New User url=${HARBOR_URL} username=tester${d} email=tester${d}@vmware.com realname=tester${d} newPassword=Test1@34 comment=harbor projectname=project${d} public=true Push image ${ip} tester${d} Test1@34 project${d} busybox:latest Pull image ${ip} tester${d} Test1@34 project${d} busybox:latest @@ -227,7 +227,7 @@ Test Case - Scan A Tag Summary Chart Should Display latest Close Browser -Test Case-Manage Project Member +Test Case - Manage Project Member Init Chrome Driver ${d}= Get current Date result_format=%m%s @@ -278,6 +278,26 @@ Test Case - Assign Sys Admin Administration Tag Should Display Close Browser +Test Case - Admin Push Signed Image + Enabe Notary Client + + ${rc} ${output}= Run And Return Rc And Output docker pull hello-world:latest + Log ${output} + + Push image ${ip} %{HARBOR_ADMIN} %{HARBOR_PASSWORD} library hello-world:latest + ${rc} ${output}= Run And Return Rc And Output ./tests/robot-cases/Group9-Content-trust/notary-push-image.sh + Log ${output} + Should Be Equal As Integers ${rc} 0 + + ${rc} ${output}= Run And Return Rc And Output curl -u admin:Harbor12345 -s --insecure -H "Content-Type: application/json" -X GET "https://${ip}/api/repositories/library/tomcat/signatures" + Log To Console ${output} + Should Be Equal As Integers ${rc} 0 + #Should Contain ${output} sha256 + +Test Case - Admin Push Un-Signed Image + ${rc} ${output}= Run And Return Rc And Output docker push ${ip}/library/hello-world:latest + Log To Console ${output} + Test Case - Ldap Sign in and out Switch To LDAP Init Chrome Driver @@ -305,25 +325,5 @@ Test Case - Ldap User Push An Image Wait Until Page Contains project${d}/hello-world Close Browser -Test Case - Admin Push Signed Image - Switch To Notary - - ${rc} ${output}= Run And Return Rc And Output docker pull hello-world:latest - Log To Console ${output} - - Push image ${ip} %{HARBOR_ADMIN} %{HARBOR_PASSWORD} library hello-world:latest - ${rc} ${output}= Run And Return Rc And Output ./tests/robot-cases/Group9-Content-trust/notary-push-image.sh - Log To Console ${output} - Should Be Equal As Integers ${rc} 0 - - ${rc} ${output}= Run And Return Rc And Output curl -u admin:Harbor12345 -s --insecure -H "Content-Type: application/json" -X GET "https://${ip}/api/repositories/library/tomcat/signatures" - Log To Console ${output} - Should Be Equal As Integers ${rc} 0 - #Should Contain ${output} sha256 - -Test Case - Admin Push Un-Signed Image - ${rc} ${output}= Run And Return Rc And Output docker push ${ip}/library/hello-world:latest - Log To Console ${output} - Test Case - Clean Harbor Images - Down Harbor with_notary=true + Down Harbor diff --git a/tests/robot-cases/Group9-Content-trust/9-21-admin-push-signed-images.robot b/tests/robot-cases/Group9-Content-trust/9-21-admin-push-signed-images.robot index a9ab75822..8902973c3 100644 --- a/tests/robot-cases/Group9-Content-trust/9-21-admin-push-signed-images.robot +++ b/tests/robot-cases/Group9-Content-trust/9-21-admin-push-signed-images.robot @@ -19,10 +19,11 @@ Default Tags regression *** Test Cases *** Test Case - Admin Push Signed Image - Install Harbor With Notary to Test Server + Install Harbor to Test Server + Enabe Notary Client ${rc} ${output}= Run And Return Rc And Output ./tests/robot-cases/Group9-Content-trust/notary-push-image.sh - Log To Console ${output} + Log ${output} Should Be Equal As Integers ${rc} 0 ${rc} ${ip}= Run And Return Rc And Output ip addr s eth0 |grep "inet "|awk '{print $2}' |awk -F "/" '{print $1}'