mirror of
https://github.com/hashicorp/vault.git
synced 2025-08-14 18:47:01 +02:00
* adding new version bump refactoring * address comments * remove changes used for testing * add the version bump event! * fix local enos scenarios * remove unnecessary local get_local_metadata steps from scenarios * add version base, pre, and meta to the get_local_metadata module * use the get_local_metadata module in the local builder for version metadata * update the version verifier to always require a build date Signed-off-by: Ryan Cragun <me@ryan.ec> * Update to embed the base version from the VERSION file directly into version.go. This ensures that any go tests can use the same (valid) version as CI and so can local builds and local enos runs. We still want to be able to set a default metadata value in version_base.go as this is not something that we set in the VERSION file - we pass this in as an ldflag in CI (matters more for ENT but we want to keep these files in sync across repos). * update comment * fixing bad merge * removing actions-go-build as it won't work with the latest go caching changes * fix logic for getting version in enos-lint.yml * fix version number * removing unneeded module --------- Signed-off-by: Ryan Cragun <me@ryan.ec> Co-authored-by: Claire <claire@hashicorp.com> Co-authored-by: Ryan Cragun <me@ryan.ec>
98 lines
2.0 KiB
Bash
Executable File
98 lines
2.0 KiB
Bash
Executable File
#!/bin/env bash
|
|
# Copyright (c) HashiCorp, Inc.
|
|
# SPDX-License-Identifier: BUSL-1.1
|
|
|
|
set -euo pipefail
|
|
|
|
# Get the full version information
|
|
# this is only needed for local enos builds in order to get the default version from version_base.go
|
|
# this should match the default version that the binary has been built with
|
|
# CRT release builds use the new static version from ./release/VERSION
|
|
function version() {
|
|
local version
|
|
local prerelease
|
|
local metadata
|
|
|
|
version=$(version_base)
|
|
prerelease=$(version_pre)
|
|
metadata=$(version_metadata)
|
|
|
|
if [ -n "$metadata" ] && [ -n "$prerelease" ]; then
|
|
echo "$version-$prerelease+$metadata"
|
|
elif [ -n "$metadata" ]; then
|
|
echo "$version+$metadata"
|
|
elif [ -n "$prerelease" ]; then
|
|
echo "$version-$prerelease"
|
|
else
|
|
echo "$version"
|
|
fi
|
|
}
|
|
|
|
# Get the base version
|
|
function version_base() {
|
|
: "${VAULT_VERSION:=""}"
|
|
|
|
if [ -n "$VAULT_VERSION" ]; then
|
|
echo "$VAULT_VERSION"
|
|
return
|
|
fi
|
|
|
|
: "${VERSION_FILE:=$(repo_root)/version/VERSION}"
|
|
awk -F- '{ print $1 }' < "$VERSION_FILE"
|
|
}
|
|
|
|
# Get the version pre-release
|
|
function version_pre() {
|
|
: "${VAULT_PRERELEASE:=""}"
|
|
|
|
if [ -n "$VAULT_PRERELEASE" ]; then
|
|
echo "$VAULT_PRERELEASE"
|
|
return
|
|
fi
|
|
|
|
: "${VERSION_FILE:=$(repo_root)/version/VERSION}"
|
|
awk -F- '{ print $2 }' < "$VERSION_FILE"
|
|
}
|
|
|
|
# Get the version metadata, which is commonly the edition
|
|
function version_metadata() {
|
|
: "${VAULT_METADATA:=""}"
|
|
|
|
if [ -n "$VAULT_METADATA" ]; then
|
|
echo "$VAULT_METADATA"
|
|
return
|
|
fi
|
|
|
|
: "${VERSION_FILE:=$(repo_root)/version/version_base.go}"
|
|
awk '$1 == "VersionMetadata" && $2 == "=" { gsub(/"/, "", $3); print $3 }' < "$VERSION_FILE"
|
|
}
|
|
|
|
# Determine the root directory of the repository
|
|
function repo_root() {
|
|
git rev-parse --show-toplevel
|
|
}
|
|
|
|
# Run Enos local
|
|
function main() {
|
|
case $1 in
|
|
version)
|
|
version
|
|
;;
|
|
version-base)
|
|
version_base
|
|
;;
|
|
version-pre)
|
|
version_pre
|
|
;;
|
|
version-meta)
|
|
version_metadata
|
|
;;
|
|
*)
|
|
echo "unknown sub-command" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
main "$@"
|