diff --git a/.ci/common.sh b/.ci/common.sh index 0b3559bf9..d4e594893 100755 --- a/.ci/common.sh +++ b/.ci/common.sh @@ -1,4 +1,4 @@ -# last-modified: Thu Aug 6 16:45:05 UTC 2020 +# last-modified: Thu Sep 3 20:54:51 UTC 2020 #!/usr/bin/env bash # Path to file used for output redirect @@ -546,5 +546,6 @@ repository="${GITHUB_REPOSITORY}" repo_owner="${repository%/*}" repo_name="${repository#*/}" asset_cache="${ASSETS_PRIVATE_SHORTTERM}/${repository}/${GITHUB_ACTION}" -job_id="${GITHUB_ACTION}-${GITHUB_RUN_ID}" run_number="${GITHUB_RUN_NUMBER}" +run_id="${GITHUB_RUN_ID}" +job_id="${run_id}-${run_number}" diff --git a/.ci/spec/clean-packet.sh b/.ci/spec/clean-packet.sh index 66a40c69c..f71bf8057 100755 --- a/.ci/spec/clean-packet.sh +++ b/.ci/spec/clean-packet.sh @@ -4,18 +4,25 @@ csource="${BASH_SOURCE[0]}" while [ -h "$csource" ] ; do csource="$(readlink "$csource")"; done root="$( cd -P "$( dirname "$csource" )/../../" && pwd )" -. "${root}/.ci/spec/env.sh" . "${root}/.ci/common.sh" +. "${root}/.ci/spec/env.sh" pushd "${root}" > "${output}" echo "Cleaning up packet device..." +unset PACKET_EXEC_PERSIST +unset PACKET_EXEC_PRE_BUILTINS +# spec test configuration, defined by action runners, used by Vagrant on packet export PKT_VAGRANT_HOST_BOXES="${VAGRANT_HOST_BOXES}" export PKT_VAGRANT_GUEST_BOXES="${VAGRANT_GUEST_BOXES}" +# other vagrant-spec options +export PKT_VAGRANT_HOST_MEMORY="${VAGRANT_HOST_MEMORY:-10000}" export PKT_VAGRANT_CWD="test/vagrant-spec/" export PKT_VAGRANT_VAGRANTFILE=Vagrantfile.spec -pkt_wrap_stream "vagrant destroy -f" \ +### + +wrap_stream packet-exec run -- "vagrant destroy -f" \ "Vagrant failed to destroy remaining vagrant-spec guests during clean up" diff --git a/.ci/spec/create-hosts.sh b/.ci/spec/create-hosts.sh index 480cfab7c..253cf240d 100755 --- a/.ci/spec/create-hosts.sh +++ b/.ci/spec/create-hosts.sh @@ -4,16 +4,11 @@ csource="${BASH_SOURCE[0]}" while [ -h "$csource" ] ; do csource="$(readlink "$csource")"; done root="$( cd -P "$( dirname "$csource" )/../../" && pwd )" -. "${root}/.ci/spec/env.sh" . "${root}/.ci/common.sh" +. "${root}/.ci/spec/env.sh" pushd "${root}" > "${output}" -# Assumes packet is already set up - -# job_id is provided by common.sh -export PACKET_EXEC_REMOTE_DIRECTORY="${job_id}" - # spec test configuration, defined by action runners, used by Vagrant on packet export PKT_VAGRANT_HOST_BOXES="${VAGRANT_HOST_BOXES}" export PKT_VAGRANT_GUEST_BOXES="${VAGRANT_GUEST_BOXES}" @@ -24,7 +19,19 @@ export PKT_VAGRANT_VAGRANTFILE=Vagrantfile.spec ### # Grab vagrant-spec gem and place inside root dir of Vagrant repo -download_assets "${ASSETS_PRIVATE_BUCKET}/vagrant-spec/vagrant-spec.gem" "." +wrap aws s3 cp "${ASSETS_PRIVATE_BUCKET}/hashicorp/vagrant-spec/vagrant-spec.gem" "vagrant-spec.gem" \ + "Could not download vagrant-spec.gem from s3 asset bucket" +### + +# Grab vagrant installer and place inside root dir of Vagrant repo +if [ -z "${VAGRANT_PRERELEASE_VERSION}" ]; then + INSTALLER_URL=`curl -s https://api.github.com/repos/hashicorp/vagrant-installers/releases | jq -r '.[0].assets[] | select(.name | contains("_x86_64.deb")) | .browser_download_url'` +else + INSTALLER_URL=`curl -s https://api.github.com/repos/hashicorp/vagrant-installers/releases/tags/${VAGRANT_PRERELEASE_VERSION} | jq -r '.assets[] | select(.name | contains("_x86_64.deb")) | .browser_download_url'` +fi + +wrap curl -fLO ${INSTALLER_URL} \ + "Could not download vagrant installers" ### # Run the job diff --git a/.ci/spec/create-packet.sh b/.ci/spec/create-packet.sh index 885b4a9b7..f08759848 100755 --- a/.ci/spec/create-packet.sh +++ b/.ci/spec/create-packet.sh @@ -4,8 +4,8 @@ csource="${BASH_SOURCE[0]}" while [ -h "$csource" ] ; do csource="$(readlink "$csource")"; done root="$( cd -P "$( dirname "$csource" )/../../" && pwd )" -. "${root}/.ci/spec/env.sh" . "${root}/.ci/common.sh" +. "${root}/.ci/spec/env.sh" pushd "${root}" > "${output}" diff --git a/.ci/spec/env.sh b/.ci/spec/env.sh index 48d58dfa5..424582a29 100755 --- a/.ci/spec/env.sh +++ b/.ci/spec/env.sh @@ -8,7 +8,10 @@ export PACKET_EXEC_DEVICE_NAME="${PACKET_EXEC_DEVICE_NAME:-spec-ci-boxes}" export PACKET_EXEC_DEVICE_SIZE="${PACKET_EXEC_DEVICE_SIZE:-baremetal_0,baremetal_1,baremetal_1e}" export PACKET_EXEC_PREFER_FACILITIES="${PACKET_EXEC_PREFER_FACILITIES:-iad1,iad2,ewr1,dfw1,dfw2,sea1,sjc1,lax1}" export PACKET_EXEC_OPERATING_SYSTEM="${PACKET_EXEC_OPERATING_SYSTEM:-ubuntu_18_04}" -export PACKET_EXEC_PRE_BUILTINS="${PACKET_EXEC_PRE_BUILTINS:-InstallVagrant,InstallVirtualBox,InstallVmware,InstallHashiCorpTool,InstallVagrantVmware}" +export PACKET_EXEC_PRE_BUILTINS="${PACKET_EXEC_PRE_BUILTINS:-InstallVagrant,InstallVirtualBox,InstallVmware,InstallVagrantVmware}" export PACKET_EXEC_QUIET="1" +export PACKET_EXEC_PERSIST="1" +# job_id is provided by common.sh +export PACKET_EXEC_REMOTE_DIRECTORY="${job_id}" export PKT_VAGRANT_CLOUD_TOKEN="${VAGRANT_CLOUD_TOKEN}" ### diff --git a/.ci/spec/run-test.sh b/.ci/spec/run-test.sh index f41d3a4e0..684326675 100755 --- a/.ci/spec/run-test.sh +++ b/.ci/spec/run-test.sh @@ -4,31 +4,27 @@ csource="${BASH_SOURCE[0]}" while [ -h "$csource" ] ; do csource="$(readlink "$csource")"; done root="$( cd -P "$( dirname "$csource" )/../../" && pwd )" -. "${root}/.ci/spec/env.sh" . "${root}/.ci/common.sh" +. "${root}/.ci/spec/env.sh" pushd "${root}" > "${output}" # Assumes packet is already set up - -# job_id is provided by common.sh -export PACKET_EXEC_REMOTE_DIRECTORY="${job_id}" +unset PACKET_EXEC_PRE_BUILTINS # spec test configuration, defined by action runners, used by Vagrant on packet export PKT_VAGRANT_HOST_BOXES="${VAGRANT_HOST_BOXES}" export PKT_VAGRANT_GUEST_BOXES="${VAGRANT_GUEST_BOXES}" # other vagrant-spec options -export PKT_VAGRANT_HOST_MEMORY=10000 +export PKT_VAGRANT_HOST_MEMORY="${VAGRANT_HOST_MEMORY:-10000}" export PKT_VAGRANT_CWD="test/vagrant-spec/" export PKT_VAGRANT_VAGRANTFILE=Vagrantfile.spec ### - # Run the job echo "Running vagrant spec tests..." # Need to make memory customizable for windows hosts -pkt_wrap_stream "vagrant provision --provider vmware_desktop" \ +wrap_stream packet-exec run "vagrant provision" \ "Vagrant Blackbox testing command failed" - echo "Finished vagrant spec tests" diff --git a/.github/workflows/spectesting.yml b/.github/workflows/spectesting.yml index 93f433fad..7c02fcb24 100644 --- a/.github/workflows/spectesting.yml +++ b/.github/workflows/spectesting.yml @@ -1,10 +1,9 @@ on: - push: + workflow_dispatch: branches: - - 'spec-test-*' - paths-ignore: - - 'CHANGELOG.md' - - 'website/**' + - 'master' + repository_dispatch: + types: [prerelease] jobs: setup-packet: @@ -12,8 +11,10 @@ jobs: runs-on: self-hosted name: Build Packet Instance steps: + - name: Code Checkout + uses: actions/checkout@v1 - name: Create packet instance - run: .ci/spec/create-packet.sh + run: ./.ci/spec/create-packet.sh working-directory: ${{github.workspace}} setup-hosts: @@ -29,11 +30,12 @@ jobs: - name: Code Checkout uses: actions/checkout@v1 - name: Create packet host for tests - run: .ci/spec/create-hosts.sh + run: ./.ci/spec/create-hosts.sh working-directory: ${{github.workspace}} env: VAGRANT_HOST_BOXES: ${{matrix.host_os}} VAGRANT_GUEST_BOXES: ${{matrix.guest_os}} + VAGRANT_PRERELEASE_VERSION: ${{ github.event.client_payload.prerelease_version }} spec-tests: if: github.repository == 'hashicorp/vagrant-blackbox' @@ -46,7 +48,7 @@ jobs: guest_os: ['hashicorp-vagrant/ubuntu-16.04'] steps: - name: Run Tests with host ${{ matrix.host_os }} using guest ${{ matrix.guest_os }} - run: .ci/spec/run-test.sh + run: ./.ci/spec/run-test.sh working-directory: ${{github.workspace}} env: VAGRANT_HOST_BOXES: ${{matrix.host_os}} @@ -60,7 +62,7 @@ jobs: steps: - name: Clean Packet if: always() - run: .ci/spec/clean-packet.sh + run: ./.ci/spec/clean-packet.sh - name: Clean Workspace if: always() run: rm -rf ${{ github.workspace }} diff --git a/test/vagrant-spec/scripts/ubuntu-setup.virtualbox.sh b/test/vagrant-spec/scripts/ubuntu-setup.virtualbox.sh index a8a8d32b7..eaa1f80ce 100644 --- a/test/vagrant-spec/scripts/ubuntu-setup.virtualbox.sh +++ b/test/vagrant-spec/scripts/ubuntu-setup.virtualbox.sh @@ -8,7 +8,7 @@ apt-get install -qy nfs-kernel-server pushd /vagrant -dpkg -i ./pkg/dist/vagrant_*_x86_64.deb +dpkg -i vagrant_*_x86_64.deb vagrant plugin install ./vagrant-spec.gem popd