Hello community,
here is the log from the commit of package rubygem-vagrant-spec for
openSUSE:Factory checked in at 2020-08-18 14:01:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-vagrant-spec (Old)
and /work/SRC/openSUSE:Factory/.rubygem-vagrant-spec.new.3399 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-vagrant-spec"
Tue Aug 18 14:01:03 2020 rev:4 rq:827552 version:0.0.1.fe62938.git
Changes:
--------
---
/work/SRC/openSUSE:Factory/rubygem-vagrant-spec/rubygem-vagrant-spec.changes
2020-05-07 17:52:20.501503905 +0200
+++
/work/SRC/openSUSE:Factory/.rubygem-vagrant-spec.new.3399/rubygem-vagrant-spec.changes
2020-08-18 14:03:34.666327872 +0200
@@ -1,0 +2,13 @@
+Mon Aug 17 16:32:16 UTC 2020 - Dan Čermák <[email protected]>
+
+- Update to fe62938
+
+ * Run workflow on ubuntu image
+ * Update common.sh ci script
+ * Remove childprocess constraint
+ * Add a scenario for rebooting with provisioner
+ * Test: guest can write back to default synced folder
+ * Test synced folder persists after guest reboot
+ * Just load common.sh
+
+-------------------------------------------------------------------
Old:
----
vagrant-spec-0.0.1.148cb63.git.gem
New:
----
vagrant-spec-0.0.1.fe62938.git.gem
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rubygem-vagrant-spec.spec ++++++
--- /var/tmp/diff_new_pack.iyGvei/_old 2020-08-18 14:03:35.430328214 +0200
+++ /var/tmp/diff_new_pack.iyGvei/_new 2020-08-18 14:03:35.434328215 +0200
@@ -25,13 +25,12 @@
# of those fields
#
Name: rubygem-vagrant-spec
-Version: 0.0.1.148cb63.git
+Version: 0.0.1.fe62938.git
Release: 0
Summary: Tool and library for testing Vagrant plugins
License: MPL-2.0
Group: Development/Languages/Ruby
URL: https://github.com/mitchellh/vagrant-spec
-# MANUALLY modified:
Source: %{mod_full_name}.gem
Source1: gem2rpm.yml
BuildRequires: %{rubygem gem2rpm}
@@ -65,7 +64,7 @@
--doc-files="LICENSE.txt README.md" \
-f
# MANUAL
-find %{buildroot}/%{_libdir}/ruby/gems \( -name .gitignore -o -name
.travis.yml \) | xargs rm
+find %{buildroot}/%{_libdir}/ruby/gems \( -name .gitignore -o -name
.travis.yml -o -name .ci -o -name .github \) | xargs rm -rf
%fdupes %{buildroot}/%{_libdir}/ruby/gems
# /MANUAL
++++++ gem2rpm.yml ++++++
--- /var/tmp/diff_new_pack.iyGvei/_old 2020-08-18 14:03:35.482328237 +0200
+++ /var/tmp/diff_new_pack.iyGvei/_new 2020-08-18 14:03:35.486328239 +0200
@@ -88,7 +88,7 @@
# %endif
# ## used by gem2rpm
:post_install: |-
- find %{buildroot}/%{_libdir}/ruby/gems \( -name .gitignore -o -name
.travis.yml \) | xargs rm
+ find %{buildroot}/%{_libdir}/ruby/gems \( -name .gitignore -o -name
.travis.yml -o -name .ci -o -name .github \) | xargs rm -rf
%fdupes %{buildroot}/%{_libdir}/ruby/gems
# # delete custom files here or do other fancy stuff
# install -D -m 0644 %{S:1} %{buildroot}%{_bindir}/gem2rpm-opensuse
++++++ vagrant-spec-0.0.1.148cb63.git.gem -> vagrant-spec-0.0.1.fe62938.git.gem
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/.ci/build.sh new/.ci/build.sh
--- old/.ci/build.sh 1970-01-01 01:00:00.000000000 +0100
+++ new/.ci/build.sh 2020-08-17 18:22:13.000000000 +0200
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+
+csource="${BASH_SOURCE[0]}"
+while [ -h "$csource" ] ; do csource="$(readlink "$csource")"; done
+root="$( cd -P "$( dirname "$csource" )/../" && pwd )"
+
+. "${root}/.ci/common.sh"
+
+pushd "${root}" > "${output}"
+
+# Build our gem
+wrap gem build *.gemspec \
+ "Failed to build Vagrant RubyGem"
+
+# Get the path of our new gem
+g=(vagrant*.gem)
+gem=$(printf "%s" "${g}")
+
+wrap aws s3 cp "${gem}"
"${ASSETS_PRIVATE_BUCKET}/${repository}/vagrant-spec.gem" \
+ "Failed to store Vagrant-Spec RubyGem build"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/.ci/common.sh new/.ci/common.sh
--- old/.ci/common.sh 1970-01-01 01:00:00.000000000 +0100
+++ new/.ci/common.sh 2020-08-17 18:22:13.000000000 +0200
@@ -0,0 +1,544 @@
+# last-modified: Mon Jun 15 19:58:02 UTC 2020
+#!/usr/bin/env bash
+
+# Path to file used for output redirect
+# and extracting messages for warning and
+# failure information sent to slack
+function output_file() {
+ if [ "${1}" = "clean" ] && [ -f "${ci_output_file_path}" ]; then
+ rm -f "${ci_output_file_path}"
+ fi
+ if [ -z "${ci_output_file_path}" ] || [ ! -f "${ci_output_file_path}" ];
then
+ ci_output_file_path="$(mktemp)"
+ fi
+ printf "${ci_output_file_path}"
+}
+
+# Write failure message, send error to configured
+# slack, and exit with non-zero status. If an
+# "$(output_file)" file exists, the last 5 lines will be
+# included in the slack message.
+#
+# $1: Failure message
+function fail() {
+ (>&2 echo "ERROR: ${1}")
+ if [ -f ""$(output_file)"" ]; then
+ slack -s error -m "ERROR: ${1}" -f "$(output_file)" -T 5
+ else
+ slack -s error -m "ERROR: ${1}"
+ fi
+ exit 1
+}
+
+# Write warning message, send warning to configured
+# slack
+#
+# $1: Warning message
+function warn() {
+ (>&2 echo "WARN: ${1}")
+ if [ -f ""$(output_file)"" ]; then
+ slack -s warn -m "WARNING: ${1}" -f "$(output_file)"
+ else
+ slack -s warn -m "WARNING: ${1}"
+ fi
+}
+
+# Execute command while redirecting all output to
+# a file (file is used within fail mesage on when
+# command is unsuccessful). Final argument is the
+# error message used when the command fails.
+#
+# $@{1:$#-1}: Command to execute
+# $@{$#}: Failure message
+function wrap() {
+ i=$(("${#}" - 1))
+ wrap_raw "${@:1:$i}"
+ if [ $? -ne 0 ]; then
+ cat "$(output_file)"
+ fail "${@:$#}"
+ fi
+ rm "$(output_file)"
+}
+
+# Execute command while redirecting all output to
+# a file. Exit status is returned.
+function wrap_raw() {
+ output_file "clean"
+ "${@}" > "$(output_file)" 2>&1
+ return $?
+}
+
+# Execute command while redirecting all output to
+# a file (file is used within fail mesage on when
+# command is unsuccessful). Command output will be
+# streamed during execution. Final argument is the
+# error message used when the command fails.
+#
+# $@{1:$#-1}: Command to execute
+# $@{$#}: Failure message
+function wrap_stream() {
+ i=$(("${#}" - 1))
+ wrap_stream_raw "${@:1:$i}"
+ if [ $? -ne 0 ]; then
+ fail "${@:$#}"
+ fi
+ rm "$(output_file)"
+}
+
+# Execute command while redirecting all output
+# to a file. Command output will be streamed
+# during execution. Exit status is returned
+function wrap_stream_raw() {
+ output_file "clean"
+ "${@}" > "$(output_file)" 2>&1 &
+ pid=$!
+ until [ -f "$(output_file)" ]; do
+ sleep 0.1
+ done
+ tail -f --quiet --pid "${pid}" "$(output_file)"
+ wait "${pid}"
+ return $?
+}
+
+
+# Send command to packet device and wrap
+# execution
+# $@{1:$#-1}: Command to execute
+# $@{$#}: Failure message
+function pkt_wrap() {
+ wrap packet-exec run -quiet -- "${@}"
+}
+
+# Send command to packet device and wrap
+# execution
+# $@: Command to execute
+function pkt_wrap_raw() {
+ wrap_raw packet-exec run -quiet -- "${@}"
+}
+
+# Send command to packet device and wrap
+# execution with output streaming
+# $@{1:$#-1}: Command to execute
+# $@{$#}: Failure message
+function pkt_wrap_stream() {
+ wrap_stream packet-exec run -quiet -- "${@}"
+}
+
+# Send command to packet device and wrap
+# execution with output streaming
+# $@: Command to execute
+function pkt_wrap_stream_raw() {
+ wrap_stream_raw packet-exec run -quiet -- "${@}"
+}
+
+# Generates location within the asset storage
+# bucket to retain built assets.
+function asset_location() {
+ if [ ! -z "${tag}" ]; then
+ dst="${ASSETS_PRIVATE_LONGTERM}/${repository}/${ident_ref}"
+ else
+ if [[ "${tag}" = *"+"* ]]; then
+ dst="${ASSETS_PRIVATE_LONGTERM}/${repository}/${tag}"
+ else
+ dst="${ASSETS_PRIVATE_BUCKET}/${repository}/${tag}"
+ fi
+ fi
+ echo -n "${dst}"
+}
+
+# Upload assets to the asset storage bucket.
+#
+# $1: Path to asset file or directory to upload
+function upload_assets() {
+ if [ "${1}" = "" ]; then
+ fail "Parameter required for asset upload"
+ fi
+ if [ -d "${1}" ]; then
+ wrap aws s3 cp --recursive "${1}" "$(asset_location)/" \
+ "Upload to asset storage failed"
+ else
+ wrap aws s3 cp "${1}" "$(asset_location)/" \
+ "Upload to asset storage failed"
+ fi
+}
+
+# Download assets from the asset storage bucket. If
+# destination is not provided, remote path will be
+# used locally.
+#
+# $1: Path to asset or directory to download
+# $2: Optional destination for downloaded assets
+function download_assets() {
+ if [ "${1}" = "" ]; then
+ fail "At least one parameter required for asset download"
+ fi
+ if [ "${2}" = "" ]; then
+ dst="${1#/}"
+ else
+ dst="${2}"
+ fi
+ mkdir -p "${dst}"
+ src="$(asset_location)/${1#/}"
+ remote=$(aws s3 ls "${src}")
+ if [[ "${remote}" = *" PRE "* ]]; then
+ mkdir -p "${dst}"
+ wrap aws s3 cp --recursive "${src%/}/" "${dst}" \
+ "Download from asset storage failed"
+ else
+ mkdir -p "$(dirname "${dst}")"
+ wrap aws s3 cp "${src}" "${dst}" \
+ "Download from asset storage failed"
+ fi
+}
+
+# Upload assets to the cache storage bucket.
+#
+# $1: Path to asset file or directory to upload
+function upload_cache() {
+ if [ "${1}" = "" ]; then
+ fail "Parameter required for cache upload"
+ fi
+ if [ -d "${1}" ]; then
+ wrap aws s3 cp --recursive "${1}" "${asset_cache}/" \
+ "Upload to cache failed"
+ else
+ wrap aws s3 cp "${1}" "${asset_cache}/" \
+ "Upload to cache failed"
+ fi
+}
+
+# Download assets from the cache storage bucket. If
+# destination is not provided, remote path will be
+# used locally.
+#
+# $1: Path to asset or directory to download
+# $2: Optional destination for downloaded assets
+function download_cache() {
+ if [ "${1}" = "" ]; then
+ fail "At least one parameter required for cache download"
+ fi
+ if [ "${2}" = "" ]; then
+ dst="${1#/}"
+ else
+ dst="${2}"
+ fi
+ mkdir -p "${dst}"
+ src="${asset_cache}/${1#/}"
+ remote=$(aws s3 ls "${src}")
+ if [[ "${remote}" = *" PRE "* ]]; then
+ mkdir -p "${dst}"
+ wrap aws s3 cp --recursive "${src%/}/" "${dst}" \
+ "Download from cache storage failed"
+ else
+ mkdir -p "$(dirname "${dst}")"
+ wrap aws s3 cp "${src}" "${dst}" \
+ "Download from cache storage failed"
+ fi
+}
+
+# Validate arguments for GitHub release. Checks for
+# two arguments and that second argument is an exiting
+# file asset, or directory.
+#
+# $1: GitHub tag name
+# $2: Asset file or directory of assets
+function release_validate() {
+ if [ "${1}" = "" ]; then
+ fail "Missing required position 1 argument (TAG) for release"
+ fi
+ if [ "${2}" = "" ]; then
+ fail "Missing required position 2 argument (PATH) for release"
+ fi
+ if [ ! -e "${2}" ]; then
+ fail "Path provided for release (${2}) does not exist"
+ fi
+}
+
+# Generate a GitHub release
+#
+# $1: GitHub tag name
+# $2: Asset file or directory of assets
+function release() {
+ release_validate "${@}"
+ tag_name="${1}"
+ assets="${2}"
+ body="$(release_details)"
+ body="${body:-New ${repo_name} release - ${tag_name}}"
+ wrap_raw ghr -u "${repo_owner}" -r "${repo_name}" -c "${full_sha}" -n
"${tag_name}" \
+ -b "${body}" -delete "${assets}"
+ if [ $? -ne 0 ]; then
+ wrap ghr -u "${repo_owner}" -r "${repo_name}" -c "${full_sha}" -n
"${tag_name}" \
+ -b "${body}" "${tag_name}" "${assets}" "Failed to create release
for version ${tag_name}"
+ fi
+}
+
+# Generate a GitHub prerelease
+#
+# $1: GitHub tag name
+# $2: Asset file or directory of assets
+function prerelease() {
+ release_validate "${@}"
+ if [[ "${1}" != *"+"* ]]; then
+ ptag="${1}+${short_sha}"
+ else
+ ptag="${1}"
+ fi
+ assets="${2}"
+
+ wrap_raw ghr -u "${repo_owner}" -r "${repo_name}" -c "${full_sha}" -n
"${ptag}" \
+ -delete -prerelease "${ptag}" "${assets}"
+ if [ $? -ne 0 ]; then
+ wrap ghr -u "${repo_owner}" -r "${repo_name}" -c "${full_sha}" -n
"${ptag}" \
+ -prerelease "${ptag}" "${assets}" \
+ "Failed to create prerelease for version ${1}"
+ fi
+ echo -n "${ptag}"
+}
+
+# Generate details of the release. This will consist
+# of a link to the changelog if we can properly detect
+# it based on current location.
+#
+# $1: Tag name
+#
+# Returns: details content
+function release_details() {
+ tag_name="${1}"
+ proj_root="$(git rev-parse --show-toplevel)"
+ if [ $? -ne 0 ] || [ -z "$(git tag -l "${tag_name}")"] || [ ! -f
"${proj_root}/CHANGELOG.md" ]; then
+ return
+ fi
+ echo -en
"CHANGELOG:\n\nhttps://github.com/${repository}/blob/${tag_name}/CHANGELOG.md"
+}
+
+# Check if version string is valid for release
+#
+# $1: Version
+# Returns: 0 if valid, 1 if invalid
+function valid_release_version() {
+ if [[ "${1}" =~ ^v?[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+# Validate arguments for HashiCorp release. Ensures asset
+# directory exists, and checks that the SHASUMS and SHASUM.sig
+# files are present.
+#
+# $1: Asset directory
+function hashicorp_release_validate() {
+ directory="${1}"
+
+ # Directory checks
+ if [ "${directory}" = "" ]; then
+ fail "No asset directory was provided for HashiCorp release"
+ fi
+ if [ ! -d "${directory}" ]; then
+ fail "Asset directory for HashiCorp release does not exist"
+ fi
+
+ # SHASUMS checks
+ if [ ! -e "${directory}/"*SHA256SUMS ]; then
+ fail "Asset directory is missing SHASUMS file"
+ fi
+ if [ ! -e "${directory}/"*SHA256SUMS.sig ]; then
+ fail "Asset directory is missing SHASUMS signature file"
+ fi
+}
+
+# Verify release assets by validating checksum properly match
+# and that signature file is valid
+#
+# $1: Asset directory
+function hashicorp_release_verify() {
+ directory="${1}"
+ pushd "${directory}" > "${output}"
+
+ # First do a checksum validation
+ wrap shasum -a 256 -c *_SHA256SUMS \
+ "Checksum validation of release assets failed"
+ # Next check that the signature is valid
+ gpghome=$(mktemp -qd)
+ export GNUPGHOME="${gpghome}"
+ wrap gpg --keyserver keyserver.ubuntu.com --recv
"${HASHICORP_PUBLIC_GPG_KEY_ID}" \
+ "Failed to import HashiCorp public GPG key"
+ wrap gpg --verify *SHA256SUMS.sig *SHA256SUMS \
+ "Validation of SHA256SUMS signature failed"
+ rm -rf "${gpghome}" > "${output}" 2>&1
+ popd > "${output}"
+}
+
+# Generate a HashiCorp release
+#
+# $1: Asset directory
+function hashicorp_release() {
+ directory="${1}"
+
+ hashicorp_release_validate "${directory}"
+ hashicorp_release_verify "${directory}"
+
+ oid="${AWS_ACCESS_KEY_ID}"
+ okey="${AWS_SECRET_ACCESS_KEY}"
+ export AWS_ACCESS_KEY_ID="${RELEASE_AWS_ACCESS_KEY_ID}"
+ export AWS_SECRET_ACCESS_KEY="${RELEASE_AWS_SECRET_ACCESS_KEY}"
+
+ wrap_stream hc-releases upload "${directory}" \
+ "Failed to upload HashiCorp release assets"
+ wrap_stream hc-releases publish \
+ "Failed to publish HashiCorp release"
+
+ export AWS_ACCESS_KEY_ID="${oid}"
+ export AWS_SECRET_ACCESS_KEY="${okey}"
+}
+
+# Build and release project gem to RubyGems
+function publish_to_rubygems() {
+ if [ -z "${RUBYGEMS_API_KEY}" ]; then
+ fail "RUBYGEMS_API_KEY is currently unset"
+ fi
+
+ gem_config="$(mktemp -p ./)" || fail "Failed to create temporary
credential file"
+ wrap gem build *.gemspec \
+ "Failed to build RubyGem"
+ printf -- "---\n:rubygems_api_key: ${RUBYGEMS_API_KEY}\n" > "${gem_config}"
+ wrap_raw gem push --config-file "${gem_config}" *.gem
+ result=$?
+ rm -f "${gem_config}"
+
+ if [ $result -ne 0 ]; then
+ fail "Failed to publish RubyGem"
+ fi
+}
+
+# Publish gem to the hashigems repository
+#
+# $1: Path to gem file to publish
+function publish_to_hashigems() {
+ path="${1}"
+ if [ -z "${path}" ]; then
+ fail "Path to built gem required for publishing to hashigems"
+ fi
+
+ wrap_stream gem install --user-install --no-document reaper-man \
+ "Failed to install dependency for hashigem generation"
+ user_bin="$(ruby -e 'puts Gem.user_dir')/bin"
+ reaper="${user_bin}/reaper-man"
+
+ # Create a temporary directory to work from
+ tmpdir="$(mktemp -d -p ./)" ||
+ fail "Failed to create working directory for hashigems publish"
+ mkdir -p "${tmpdir}/hashigems/gems"
+ wrap cp "${path}" "${tmpdir}/hashigems/gems" \
+ "Failed to copy gem to working directory"
+ wrap_raw pushd "${tmpdir}"
+
+ # Run quick test to ensure bucket is accessible
+ wrap aws s3 ls "${HASHIGEMS_METADATA_BUCKET}" \
+ "Failed to access hashigems asset bucket"
+
+ # Grab our remote metadata. If the file doesn't exist, that is always an
error.
+ wrap aws s3 cp "${HASHIGEMS_METADATA_BUCKET}/vagrant-rubygems.list" ./ \
+ "Failed to retrieve hashigems metadata list"
+
+ # Add the new gem to the metadata file
+ wrap_stream "${reaper}" package add -S rubygems -p vagrant-rubygems.list
./hashigems/gems/*.gem \
+ "Failed to add new gem to hashigems metadata list"
+ # Generate the repository
+ wrap_stream "${reaper}" repo generate -p vagrant-rubygems.list -o
hashigems -S rubygems \
+ "Failed to generate the hashigems repository"
+ # Upload the updated repository
+ wrap_raw pushd ./hashigems
+ wrap_stream aws s3 sync . "${HASHIGEMS_PUBLIC_BUCKET}" \
+ "Failed to upload the hashigems repository"
+ # Store the updated metadata
+ wrap_raw popd
+ wrap_stream aws s3 cp vagrant-rubygems.list
"${HASHIGEMS_METADATA_BUCKET}/vagrant-rubygems.list" \
+ "Failed to upload the updated hashigems metadata file"
+
+ # Invalidate cloudfront so the new content is available
+ invalid="$(aws cloudfront create-invalidation --distribution-id
"${HASHIGEMS_CLOUDFRONT_ID}" --paths "/*")"
+ if [ $? -ne 0 ]; then
+ fail "Invalidation of hashigems CDN distribution failed"
+ fi
+ invalid_id="$(printf '%s' "${invalid}" | jq -r ".Invalidation.Id")"
+ if [ -z "${invalid_id}" ]; then
+ fail "Failed to determine the ID of the hashigems CDN invalidation
request"
+ fi
+
+ # Wait for the invalidation process to complete
+ wrap aws cloudfront wait invalidation-completed --distribution-id
"${HASHIGEMS_CLOUDFRONT_ID}" --id "${invalid_id}" \
+ "Failure encountered while waiting for hashigems CDN invalidation
request to complete (ID: ${invalid_id})"
+
+ # Clean up and we are done
+ wrap_raw popd
+ rm -rf "${tmpdir}"
+}
+
+# Configures git for hashibot usage
+function hashibot_git() {
+ wrap git config user.name "${HASHIBOT_USERNAME}" \
+ "Failed to setup git for hashibot usage (username)"
+ wrap git config user.email "${HASHIBOT_EMAIL}" \
+ "Failed to setup git for hashibot usage (email)"
+ wrap git remote set-url origin
"https://${HASHIBOT_USERNAME}:${HASHIBOT_TOKEN}@github.com/${repository}" \
+ "Failed to setup git for hashibot usage (remote)"
+}
+
+# Stub cleanup method which can be redefined
+# within actual script
+function cleanup() {
+ (>&2 echo "** No cleanup tasks defined")
+}
+
+trap cleanup EXIT
+
+# Enable debugging. This needs to be enabled with
+# extreme caution when used on public repositories.
+# Output with debugging enabled will likely include
+# secret values which should not be publicly exposed.
+#
+# If repository is public, FORCE_PUBLIC_DEBUG environment
+# variable must also be set.
+
+is_private=$(curl -H "Authorization: token ${HASHIBOT_TOKEN}" -s
"https://api.github.com/repos/${GITHUB_REPOSITORY}" | jq .private)
+
+if [ "${DEBUG}" != "" ]; then
+ if [ "${is_private}" = "false" ]; then
+ if [ "${FORCE_PUBLIC_DEBUG}" != "" ]; then
+ set -x
+ output="/dev/stdout"
+ else
+ fail "Cannot enable debug mode on public repository unless forced"
+ fi
+ else
+ set -x
+ output="/dev/stdout"
+ fi
+else
+ output="/dev/null"
+fi
+
+# Check if we are running a public repository on private runners
+if [ "${VAGRANT_PRIVATE}" != "" ] && [ "${is_private}" = "false" ]; then
+ fail "Cannot run public repositories on private Vagrant runners. Disable
runners now!"
+fi
+
+# Common variables
+full_sha="${GITHUB_SHA}"
+short_sha="${full_sha:0:8}"
+ident_ref="${GITHUB_REF#*/*/}"
+if [[ "${GITHUB_REF}" == *"refs/tags/"* ]]; then
+ tag="${GITHUB_REF##*tags/}"
+ valid_release_version "${tag}"
+ if [ $? -eq 0 ]; then
+ release=1
+ fi
+fi
+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}"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/.github/CODE_OF_CONDUCT.md
new/.github/CODE_OF_CONDUCT.md
--- old/.github/CODE_OF_CONDUCT.md 1970-01-01 01:00:00.000000000 +0100
+++ new/.github/CODE_OF_CONDUCT.md 2020-08-17 18:22:13.000000000 +0200
@@ -0,0 +1,5 @@
+# Code of Conduct
+
+HashiCorp Community Guidelines apply to you when interacting with the
community here on GitHub and contributing code.
+
+Please read the full text at https://www.hashicorp.com/community-guidelines
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/.github/workflows/build.yml
new/.github/workflows/build.yml
--- old/.github/workflows/build.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/.github/workflows/build.yml 2020-08-17 18:22:13.000000000 +0200
@@ -0,0 +1,29 @@
+on:
+ push:
+ branches:
+ - master
+
+jobs:
+ build-gem:
+ if: github.repository == 'hashicorp/vagrant-spec'
+ name: Build Vagrant-Spec RubyGem
+ runs-on: ubuntu-18.04
+ steps:
+ - name: Code Checkout
+ uses: actions/checkout@v1
+ - name: Set Ruby
+ uses: actions/setup-ruby@v1
+ with:
+ ruby-version: '2.6'
+ - name: Build RubyGem
+ run: ./.ci/build.sh
+ working-directory: ${{github.workspace}}
+ env:
+ ASSETS_LONGTERM_PREFIX: elt
+ ASSETS_PRIVATE_BUCKET: ${{ secrets.ASSETS_PRIVATE_BUCKET }}
+ ASSETS_PRIVATE_LONGTERM: ${{ secrets.ASSETS_PRIVATE_LONGTERM }}
+ ASSETS_PRIVATE_SHORTTERM: ${{ secrets.ASSETS_PRIVATE_SHORTTERM }}
+ ASSETS_SHORTTERM_PREFIX: est
+ AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
+ AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
+ SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/acceptance/provider/synced_folder_spec.rb
new/acceptance/provider/synced_folder_spec.rb
--- old/acceptance/provider/synced_folder_spec.rb 2020-05-07
14:04:53.000000000 +0200
+++ new/acceptance/provider/synced_folder_spec.rb 2020-08-17
18:22:13.000000000 +0200
@@ -29,5 +29,26 @@
status("Test: doesn't mount a disabled folder")
result = execute("vagrant", "ssh", "-c", "test -d /foo")
expect(result.exit_code).to eql(1)
+
+ status("Test: guest has permissions to write to synced folder")
+ result = execute("vagrant", "ssh", "-c", "echo goodbye > /vagrant/bar")
+ expect(result.exit_code).to eql(0)
+
+ status("Test: persists a sync folder after a manual reboot")
+ result = execute("vagrant", "ssh", "-c", "sudo reboot")
+ expect(result).to exit_with(255)
+ result = execute("vagrant", "ssh", "-c", "cat /vagrant/foo")
+ expect(result.exit_code).to eql(0)
+ expect(result.stdout).to match(/hello$/)
+
+ status("Test: persists a sync folder after a provisioner reboot")
+ result = execute("vagrant", "provision", "--provision-with", "reboot")
+ expect(result.exit_code).to eql(0)
+ # Need to do a manual sleep here because Vagrant doesn't know that the
+ # machine is rebooting
+ sleep 10
+ result = execute("vagrant", "ssh", "-c", "cat /vagrant/foo")
+ expect(result.exit_code).to eql(0)
+ expect(result.stdout).to match(/hello$/)
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/acceptance/support-skeletons/synced_folders/Vagrantfile
new/acceptance/support-skeletons/synced_folders/Vagrantfile
--- old/acceptance/support-skeletons/synced_folders/Vagrantfile 2020-05-07
14:04:53.000000000 +0200
+++ new/acceptance/support-skeletons/synced_folders/Vagrantfile 2020-08-17
18:22:13.000000000 +0200
@@ -3,4 +3,7 @@
# Test that disabled works
config.vm.synced_folder "../", "/foo", disabled: true
+
+ # Test that synced folders persist after provisioner reboot
+ config.vm.provision "reboot", type: :shell, inline: "reboot", run: "never"
end
Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/lib/vagrant-spec/acceptance/rspec/matcher_exit_with.rb
new/lib/vagrant-spec/acceptance/rspec/matcher_exit_with.rb
--- old/lib/vagrant-spec/acceptance/rspec/matcher_exit_with.rb 2020-05-07
14:04:53.000000000 +0200
+++ new/lib/vagrant-spec/acceptance/rspec/matcher_exit_with.rb 2020-08-17
18:22:13.000000000 +0200
@@ -4,7 +4,7 @@
actual.exit_code == code
end
- failure_message_for_should do |actual|
+ failure_message do |actual|
"expected command to exit with #{code} but got exit code:
#{actual.exit_code}\n\n" +
"stdout: #{actual.stdout}\n\n" +
"stderr: #{actual.stderr}"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/lib/vagrant-spec/acceptance/rspec/matcher_match_output.rb
new/lib/vagrant-spec/acceptance/rspec/matcher_match_output.rb
--- old/lib/vagrant-spec/acceptance/rspec/matcher_match_output.rb
2020-05-07 14:04:53.000000000 +0200
+++ new/lib/vagrant-spec/acceptance/rspec/matcher_match_output.rb
2020-08-17 18:22:13.000000000 +0200
@@ -8,7 +8,7 @@
Vagrant::Spec::OutputTester.matches?(actual, expected, *args)
end
- failure_message_for_should do |actual|
+ failure_message do |actual|
"expected output to match: #{expected} #{args.inspect}\n\n" +
"output: #{actual}"
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata 2020-05-07 14:04:53.000000000 +0200
+++ new/metadata 2020-08-17 18:22:13.000000000 +0200
@@ -1,29 +1,29 @@
--- !ruby/object:Gem::Specification
name: vagrant-spec
version: !ruby/object:Gem::Version
- version: 0.0.1.148cb63.git
+ version: 0.0.1.fe62938.git
platform: ruby
authors:
- Mitchell Hashimoto
autorequire:
bindir: bin
cert_chain: []
-date: 2020-05-07 00:00:00.000000000 Z
+date: 2020-08-17 00:00:00.000000000 Z
dependencies:
- !ruby/object:Gem::Dependency
name: childprocess
requirement: !ruby/object:Gem::Requirement
requirements:
- - - "~>"
+ - - ">="
- !ruby/object:Gem::Version
- version: 3.0.0
+ version: '0'
type: :runtime
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - - "~>"
+ - - ">="
- !ruby/object:Gem::Version
- version: 3.0.0
+ version: '0'
- !ruby/object:Gem::Dependency
name: log4r
requirement: !ruby/object:Gem::Requirement
@@ -88,6 +88,10 @@
extensions: []
extra_rdoc_files: []
files:
+- ".ci/build.sh"
+- ".ci/common.sh"
+- ".github/CODE_OF_CONDUCT.md"
+- ".github/workflows/build.yml"
- ".gitignore"
- ".travis.yml"
- Gemfile
@@ -208,7 +212,7 @@
- !ruby/object:Gem::Version
version: 1.3.1
requirements: []
-rubygems_version: 3.0.3
+rubygems_version: 3.1.2
signing_key:
specification_version: 4
summary: Tool and library for testing Vagrant plugins.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/vagrant-spec.gemspec new/vagrant-spec.gemspec
--- old/vagrant-spec.gemspec 2020-05-07 14:04:53.000000000 +0200
+++ new/vagrant-spec.gemspec 2020-08-17 18:22:13.000000000 +0200
@@ -18,7 +18,7 @@
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
spec.require_paths = ["lib"]
- spec.add_dependency "childprocess", "~> 3.0.0"
+ spec.add_dependency "childprocess"
spec.add_dependency "log4r", "~> 1.1.9"
spec.add_dependency "rspec", "~> 3.5.0"
spec.add_dependency "thor", "~> 0.18"