diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6cc8e6688..d212534fb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -558,14 +558,23 @@ gcp.sh: variables: SCRIPT: gcp.sh -vmware.sh: +vmware.sh_vmdk: extends: .integration_rhel rules: # Run only on x86_64 - !reference [.upstream_rules_x86_64, rules] - !reference [.nightly_rules_x86_64, rules] variables: - SCRIPT: vmware.sh + SCRIPT: vmware.sh vmdk + +vmware.sh_ova: + extends: .integration_rhel + rules: + # Run only on x86_64 + - !reference [.upstream_rules_x86_64, rules] + - !reference [.nightly_rules_x86_64, rules] + variables: + SCRIPT: vmware.sh ova filesystem.sh: extends: .integration diff --git a/test/cases/vmware.sh b/test/cases/vmware.sh index 6de29c543..ed7c97c11 100755 --- a/test/cases/vmware.sh +++ b/test/cases/vmware.sh @@ -13,6 +13,8 @@ source /usr/libexec/osbuild-composer-test/set-env-variables.sh source /usr/libexec/tests/osbuild-composer/shared_lib.sh +IMAGE_TYPE="$1" + # Provision the software under test. /usr/libexec/osbuild-composer-test/provision.sh none @@ -54,6 +56,22 @@ SSH_DATA_DIR=$(/usr/libexec/osbuild-composer-test/gen-ssh.sh) SSH_KEY=${SSH_DATA_DIR}/id_rsa SSH_KEY_PUB=$(cat "$SSH_KEY".pub) +# destroy VMs +function cleanup() { + set +eu + greenprint "๐Ÿงผ Cleaning up" + $GOVC_CMD vm.destroy -u "${GOVMOMI_USERNAME}":"${GOVMOMI_PASSWORD}"@"${GOVMOMI_URL}" -k=true "${IMAGE_KEY}" + + if [[ $RESULT != 0 ]]; then + greenprint "โŒ Failed" + exit 1 + fi + + set -eu +} +trap cleanups EXIT + + # Check that the system started and is running correctly running_test_check () { STATUS=$(sudo ssh -i "${SSH_KEY}" redhat@"${1}" 'systemctl --wait is-system-running') @@ -101,6 +119,7 @@ password = "${GOVMOMI_PASSWORD}" cluster = "${GOVMOMI_CLUSTER}" dataStore = "${GOVMOMI_DATASTORE}" dataCenter = "${GOVMOMI_DATACENTER}" +folder = "${GOVMOMI_FOLDER}" EOF # Write a basic blueprint for our image. @@ -139,7 +158,7 @@ trap 'sudo pkill -P ${WORKER_JOURNAL_PID}' EXIT # Start the compose and upload to VMWare. greenprint "๐Ÿš€ Starting compose" -sudo composer-cli --json compose start bash vmdk "$IMAGE_KEY" "$VMWARE_CONFIG" | tee "$COMPOSE_START" +sudo composer-cli --json compose start bash "$IMAGE_TYPE" "$IMAGE_KEY" "$VMWARE_CONFIG" | tee "$COMPOSE_START" COMPOSE_ID=$(get_build_info ".build_id" "$COMPOSE_START") # Wait for the compose to finish. @@ -173,6 +192,7 @@ if [[ $COMPOSE_STATUS != FINISHED ]]; then exit 1 fi +if [ "$IMAGE_TYPE" = "vmdk" ]; then greenprint "๐Ÿ‘ท๐Ÿป Building VM in vSphere" $GOVC_CMD vm.create -u "${GOVMOMI_USERNAME}":"${GOVMOMI_PASSWORD}"@"${GOVMOMI_URL}" \ -k=true \ @@ -186,6 +206,24 @@ $GOVC_CMD vm.create -u "${GOVMOMI_USERNAME}":"${GOVMOMI_PASSWORD}"@"${GOVMOMI_UR -disk="${IMAGE_KEY}"/"${IMAGE_KEY}".vmdk \ --disk.controller=scsi \ "${IMAGE_KEY}" +elif [ "$IMAGE_TYPE" = "ova" ]; then +greenprint "๐Ÿ‘ท๐Ÿป Modifying network of the VM in vSphere" +$GOVC_CMD vm.network.add -u "${GOVMOMI_USERNAME}":"${GOVMOMI_PASSWORD}"@"${GOVMOMI_URL}" \ + -k=true \ + -net="${GOVMOMI_NETWORK}" \ + -net.adapter=vmxnet3 \ + -vm="${IMAGE_KEY}" \ + -net="${GOVMOMI_NETWORK}" + +# start the vm +greenprint "๐Ÿ‘ท๐Ÿป Powering on the VM" +$GOVC_CMD vm.power -u "${GOVMOMI_USERNAME}":"${GOVMOMI_PASSWORD}"@"${GOVMOMI_URL}" \ + -k=true \ + -wait=true \ + -on \ + "${IMAGE_KEY}" + +fi # tagging vm as testing object $GOVC_CMD tags.attach -u "${GOVMOMI_USERNAME}":"${GOVMOMI_PASSWORD}"@"${GOVMOMI_URL}" \ @@ -224,14 +262,6 @@ for LOOP_COUNTER in {0..10}; do sleep 5 done -# Clean up -greenprint "๐Ÿงผ Cleaning up" -$GOVC_CMD vm.destroy -u "${GOVMOMI_USERNAME}":"${GOVMOMI_PASSWORD}"@"${GOVMOMI_URL}" -k=true "${IMAGE_KEY}" - -if [[ $RESULT != 0 ]]; then - greenprint "โŒ Failed" - exit 1 -fi greenprint "๐Ÿ’š Success" exit 0