build: remove unused scripts (#26484)
* build: remove unused build scripts
This commit is contained in:
parent
3d884d7e3f
commit
bad0adb996
|
@ -1,44 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
# Get the version from the command line
|
||||
VERSION=$1
|
||||
if [ -z $VERSION ]; then
|
||||
echo "Please specify a version."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Make sure we have a bintray API key
|
||||
if [[ -z $AWS_ACCESS_KEY_ID || -z $AWS_SECRET_ACCESS_KEY ]]; then
|
||||
echo "Please set AWS access keys as env vars before running this script."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get the parent directory of where this script is.
|
||||
SOURCE="${BASH_SOURCE[0]}"
|
||||
while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
|
||||
DIR="$( cd -P "$( dirname "$SOURCE" )/.." && pwd )"
|
||||
|
||||
# Change into that dir because we expect that
|
||||
cd $DIR
|
||||
|
||||
# Zip all the files
|
||||
rm -rf ./pkg/dist
|
||||
mkdir -p ./pkg/dist
|
||||
for FILENAME in $(find ./pkg -mindepth 1 -maxdepth 1 -type f); do
|
||||
FILENAME=$(basename $FILENAME)
|
||||
cp ./pkg/${FILENAME} ./pkg/dist/terraform_${VERSION}_${FILENAME}
|
||||
done
|
||||
|
||||
# Make the checksums
|
||||
echo "==> Signing..."
|
||||
pushd ./pkg/dist
|
||||
rm -f ./terraform_${VERSION}_SHA256SUMS*
|
||||
shasum -a256 * > ./terraform_${VERSION}_SHA256SUMS
|
||||
gpg --default-key 348FFC4C --detach-sig ./terraform_${VERSION}_SHA256SUMS
|
||||
popd
|
||||
|
||||
# Upload
|
||||
hc-releases upload ./pkg/dist
|
||||
|
||||
exit 0
|
|
@ -1,45 +0,0 @@
|
|||
# This Dockerfile is not intended for general use, but is rather used to
|
||||
# package up official Terraform releases (from releases.hashicorp.com) to
|
||||
# release on Dockerhub as the "light" release images.
|
||||
#
|
||||
# The main Dockerfile in the root of the repository is more generally-useful,
|
||||
# since it is able to build a docker image of the current state of the work
|
||||
# tree, without any dependency on there being an existing release on
|
||||
# releases.hashicorp.com.
|
||||
|
||||
FROM alpine:latest as build
|
||||
LABEL maintainer="HashiCorp Terraform Team <terraform@hashicorp.com>"
|
||||
|
||||
# This is intended to be run from the hooks/build script, which sets this
|
||||
# appropriately based on git tags.
|
||||
ARG TERRAFORM_VERSION=UNSPECIFIED
|
||||
|
||||
COPY releases_public_key .
|
||||
|
||||
# What's going on here?
|
||||
# - Download the indicated release along with its checksums and signature for the checksums
|
||||
# - Verify that the checksums file is signed by the Hashicorp releases key
|
||||
# - Verify that the zip file matches the expected checksum
|
||||
# - Extract the zip file so it can be run
|
||||
|
||||
RUN apk add --no-cache git curl openssh gnupg && \
|
||||
curl -O https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip && \
|
||||
curl -O https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_SHA256SUMS.sig && \
|
||||
curl -O https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_SHA256SUMS && \
|
||||
gpg --import releases_public_key && \
|
||||
gpg --verify terraform_${TERRAFORM_VERSION}_SHA256SUMS.sig terraform_${TERRAFORM_VERSION}_SHA256SUMS && \
|
||||
grep linux_amd64 terraform_${TERRAFORM_VERSION}_SHA256SUMS >terraform_${TERRAFORM_VERSION}_SHA256SUMS_linux_amd64 && \
|
||||
sha256sum -cs terraform_${TERRAFORM_VERSION}_SHA256SUMS_linux_amd64 && \
|
||||
unzip terraform_${TERRAFORM_VERSION}_linux_amd64.zip -d /bin && \
|
||||
rm -f terraform_${TERRAFORM_VERSION}_linux_amd64.zip terraform_${TERRAFORM_VERSION}_SHA256SUMS*
|
||||
|
||||
FROM alpine:latest as final
|
||||
ARG TERRAFORM_VERSION=UNSPECIFIED
|
||||
|
||||
LABEL "com.hashicorp.terraform.version"="${TERRAFORM_VERSION}"
|
||||
|
||||
RUN apk add --no-cache git openssh
|
||||
|
||||
COPY --from=build ["/bin/terraform", "/bin/terraform"]
|
||||
|
||||
ENTRYPOINT ["/bin/terraform"]
|
|
@ -1,77 +0,0 @@
|
|||
# Terraform Docker Release Build
|
||||
|
||||
This directory contains configuration to drive the docker image releases for
|
||||
Terraform.
|
||||
|
||||
Two different types of image are produced for each Terraform release:
|
||||
|
||||
* A "light" image that includes just the release binary that should match
|
||||
what's on releases.hashicorp.com.
|
||||
|
||||
* A "full" image that contains all of the Terraform source code and a binary
|
||||
built from that source.
|
||||
|
||||
The latter can be produced for any arbitrary commit by running `docker build`
|
||||
in the root of this repository. The former requires that the release archive
|
||||
already be deployed on releases.hashicorp.com.
|
||||
|
||||
## Build and Release
|
||||
|
||||
The scripts in this directory are intended for running the steps to build,
|
||||
tag, and push the two images for a tagged and released version of Terraform.
|
||||
They expect to be run with git `HEAD` pointed at a release tag, whose name
|
||||
is used to determine the version to build. The version number indicated
|
||||
by the tag that `HEAD` is pointed at will be referred to below as
|
||||
the _current version_.
|
||||
|
||||
* `build.sh` builds locally both of the images for the current version.
|
||||
This operates on the local docker daemon only, and produces tags that
|
||||
include the current version number.
|
||||
|
||||
* `tag.sh` updates the `latest`, `light` and `full` tags to refer to the
|
||||
images for the current version, which must've been already produced by
|
||||
an earlier run of `build.sh`. This operates on the local docker daemon
|
||||
only.
|
||||
|
||||
* `push.sh` pushes the current version tag and the `latest`, `light` and
|
||||
`full` tags up to dockerhub for public consumption. This writes images
|
||||
to dockerhub, and so it requires docker credentials that have access to
|
||||
write into the `hashicorp/terraform` repository.
|
||||
|
||||
### Releasing a new "latest" version
|
||||
|
||||
In the common case where a release is going to be considered the new latest
|
||||
stable version of Terraform, the helper script `release.sh` orchestrates
|
||||
all of the necessary steps to release to dockerhub:
|
||||
|
||||
```
|
||||
$ git checkout v0.10.0
|
||||
$ scripts/docker-release/release.sh
|
||||
```
|
||||
|
||||
Behind the scenes this script is running `build.sh`, `tag.sh` and `push.sh`
|
||||
as described above, with some extra confirmation steps to verify the
|
||||
correctness of the build.
|
||||
|
||||
This script is interactive and so isn't suitable for running in automation.
|
||||
For automation, run the individual scripts directly.
|
||||
|
||||
### Releasing a beta version or a patch to an earlier minor release
|
||||
|
||||
The `release.sh` wrapper is not appropriate in two less common situations:
|
||||
|
||||
* The version being released is a beta or other pre-release version, with
|
||||
a version number like `v0.10.0-beta1` or `v0.10.0-rc1`.
|
||||
|
||||
* The version being released belongs to a non-current minor release. For
|
||||
example, if the current stable version is `v0.10.1` but the version
|
||||
being released is `v0.9.14`.
|
||||
|
||||
In both of these cases, only the specific version tag should be updated,
|
||||
which can be done as follows:
|
||||
|
||||
```
|
||||
$ git checkout v0.11.0-beta1
|
||||
$ scripts/docker-release/build.sh
|
||||
$ docker push hashicorp/terraform:0.11.0-beta1
|
||||
```
|
|
@ -1,34 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# This script builds two docker images for the version referred to by the
|
||||
# current git HEAD.
|
||||
#
|
||||
# After running this, run tag.sh if the images that are built should be
|
||||
# tagged as the "latest" release.
|
||||
|
||||
set -eu
|
||||
|
||||
BASE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$BASE"
|
||||
|
||||
if [ "$#" -eq 0 ]; then
|
||||
# We assume that this is always running while git HEAD is pointed at a release
|
||||
# tag or a branch that is pointed at the same commit as a release tag. If not,
|
||||
# this will fail since we can't build a release image for a commit that hasn't
|
||||
# actually been released.
|
||||
VERSION="$(git describe)"
|
||||
else
|
||||
# This mode is here only to support release.sh, which ensures that the given
|
||||
# version matches the current git tag. Running this script manually with
|
||||
# an argument can't guarantee correct behavior since the "full" image
|
||||
# will be built against the current work tree regardless of which version
|
||||
# is selected.
|
||||
VERSION="$1"
|
||||
fi
|
||||
|
||||
echo "-- Building release docker images for version $VERSION --"
|
||||
echo ""
|
||||
VERSION_SLUG="${VERSION#v}"
|
||||
|
||||
docker build --no-cache "--build-arg=TERRAFORM_VERSION=${VERSION_SLUG}" -t hashicorp/terraform:${VERSION_SLUG} -f "Dockerfile-release" .
|
||||
docker build --no-cache -t "hashicorp/terraform:${VERSION_SLUG}-full" ../../
|
|
@ -1,20 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# This script pushes the docker images for the given version of Terraform,
|
||||
# along with the "light", "full" and "latest" tags, up to docker hub.
|
||||
#
|
||||
# You must already be logged in to docker using "docker login" before running
|
||||
# this script.
|
||||
|
||||
set -eu
|
||||
|
||||
VERSION="$1"
|
||||
VERSION_SLUG="${VERSION#v}"
|
||||
|
||||
echo "-- Pushing tags $VERSION_SLUG, light, full and latest up to dockerhub --"
|
||||
echo ""
|
||||
|
||||
docker push "hashicorp/terraform:$VERSION_SLUG"
|
||||
docker push "hashicorp/terraform:light"
|
||||
docker push "hashicorp/terraform:full"
|
||||
docker push "hashicorp/terraform:latest"
|
|
@ -1,93 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# This script is an interactive wrapper around the scripts build.sh, tag.sh
|
||||
# and push.sh intended for use during official Terraform releases.
|
||||
#
|
||||
# This script should be used only when git HEAD is pointing at the release tag
|
||||
# for what will become the new latest *stable* release, since it will update
|
||||
# the "latest", "light", and "full" tags to refer to what was built.
|
||||
#
|
||||
# To release a specific version without updating the various symbolic tags,
|
||||
# use build.sh directly and then manually push the single release tag it
|
||||
# creates. This is appropriate both when publishing a beta version and if,
|
||||
# for some reason, it's necessary to (re-)publish and older version.
|
||||
|
||||
set -eu
|
||||
|
||||
BASE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$BASE"
|
||||
|
||||
# We assume that this is always running while git HEAD is pointed at a release
|
||||
# tag or a branch that is pointed at the same commit as a release tag. If not,
|
||||
# this will fail since we can't build a release image for a commit that hasn't
|
||||
# actually been released.
|
||||
VERSION="$(git describe)"
|
||||
VERSION_SLUG="${VERSION#v}"
|
||||
|
||||
# Verify that the version is already deployed to releases.hashicorp.com.
|
||||
if curl --output /dev/null --silent --head --fail "https://releases.hashicorp.com/terraform/${VERSION_SLUG}/terraform_${VERSION_SLUG}_SHA256SUMS"; then
|
||||
echo "===== Docker image release for Terraform $VERSION ====="
|
||||
echo ""
|
||||
else
|
||||
cat >&2 <<EOT
|
||||
|
||||
There is no $VERSION release of Terraform on releases.hashicorp.com.
|
||||
|
||||
release.sh can only create docker images for released versions. Use
|
||||
"git checkout {version}" to switch to a release tag before running this
|
||||
script.
|
||||
|
||||
To create an untagged docker image for any arbitrary commit, use 'docker build'
|
||||
directly in the root of the Terraform repository.
|
||||
|
||||
EOT
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Build the two images tagged with the version number
|
||||
./build.sh "$VERSION"
|
||||
|
||||
# Verify that they were built correctly.
|
||||
echo "-- Testing $VERSION Images --"
|
||||
echo ""
|
||||
|
||||
echo -n "light image version: "
|
||||
docker run --rm -e "CHECKPOINT_DISABLE=1" "hashicorp/terraform:${VERSION_SLUG}" version
|
||||
echo -n "full image version: "
|
||||
docker run --rm -e "CHECKPOINT_DISABLE=1" "hashicorp/terraform:${VERSION_SLUG}-full" version
|
||||
|
||||
echo ""
|
||||
|
||||
read -p "Did both images produce suitable version output for $VERSION? " -n 1 -r
|
||||
echo ""
|
||||
if ! [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo >&2 Aborting due to inconsistent version output.
|
||||
exit 1
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Update the latest, light and full tags to point to the images we just built.
|
||||
./tag.sh "$VERSION"
|
||||
|
||||
# Last chance to bail out
|
||||
echo "-- Prepare to Push --"
|
||||
echo ""
|
||||
echo "The following Terraform images are available locally:"
|
||||
docker images --format "{{.ID}}\t{{.Tag}}" hashicorp/terraform
|
||||
echo ""
|
||||
read -p "Ready to push the tags $VERSION_SLUG, light, full, and latest up to dockerhub? " -n 1 -r
|
||||
echo ""
|
||||
if ! [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo >&2 "Aborting because reply wasn't positive."
|
||||
exit 1
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Actually upload the images
|
||||
./push.sh "$VERSION"
|
||||
|
||||
echo ""
|
||||
echo "-- All done! --"
|
||||
echo ""
|
||||
echo "Confirm the release at https://hub.docker.com/r/hashicorp/terraform/tags/"
|
||||
echo ""
|
|
@ -1,30 +0,0 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1
|
||||
|
||||
mQENBFMORM0BCADBRyKO1MhCirazOSVwcfTr1xUxjPvfxD3hjUwHtjsOy/bT6p9f
|
||||
W2mRPfwnq2JB5As+paL3UGDsSRDnK9KAxQb0NNF4+eVhr/EJ18s3wwXXDMjpIifq
|
||||
fIm2WyH3G+aRLTLPIpscUNKDyxFOUbsmgXAmJ46Re1fn8uKxKRHbfa39aeuEYWFA
|
||||
3drdL1WoUngvED7f+RnKBK2G6ZEpO+LDovQk19xGjiMTtPJrjMjZJ3QXqPvx5wca
|
||||
KSZLr4lMTuoTI/ZXyZy5bD4tShiZz6KcyX27cD70q2iRcEZ0poLKHyEIDAi3TM5k
|
||||
SwbbWBFd5RNPOR0qzrb/0p9ksKK48IIfH2FvABEBAAG0K0hhc2hpQ29ycCBTZWN1
|
||||
cml0eSA8c2VjdXJpdHlAaGFzaGljb3JwLmNvbT6JATgEEwECACIFAlMORM0CGwMG
|
||||
CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEFGFLYc0j/xMyWIIAIPhcVqiQ59n
|
||||
Jc07gjUX0SWBJAxEG1lKxfzS4Xp+57h2xxTpdotGQ1fZwsihaIqow337YHQI3q0i
|
||||
SqV534Ms+j/tU7X8sq11xFJIeEVG8PASRCwmryUwghFKPlHETQ8jJ+Y8+1asRydi
|
||||
psP3B/5Mjhqv/uOK+Vy3zAyIpyDOMtIpOVfjSpCplVRdtSTFWBu9Em7j5I2HMn1w
|
||||
sJZnJgXKpybpibGiiTtmnFLOwibmprSu04rsnP4ncdC2XRD4wIjoyA+4PKgX3sCO
|
||||
klEzKryWYBmLkJOMDdo52LttP3279s7XrkLEE7ia0fXa2c12EQ0f0DQ1tGUvyVEW
|
||||
WmJVccm5bq25AQ0EUw5EzQEIANaPUY04/g7AmYkOMjaCZ6iTp9hB5Rsj/4ee/ln9
|
||||
wArzRO9+3eejLWh53FoN1rO+su7tiXJA5YAzVy6tuolrqjM8DBztPxdLBbEi4V+j
|
||||
2tK0dATdBQBHEh3OJApO2UBtcjaZBT31zrG9K55D+CrcgIVEHAKY8Cb4kLBkb5wM
|
||||
skn+DrASKU0BNIV1qRsxfiUdQHZfSqtp004nrql1lbFMLFEuiY8FZrkkQ9qduixo
|
||||
mTT6f34/oiY+Jam3zCK7RDN/OjuWheIPGj/Qbx9JuNiwgX6yRj7OE1tjUx6d8g9y
|
||||
0H1fmLJbb3WZZbuuGFnK6qrE3bGeY8+AWaJAZ37wpWh1p0cAEQEAAYkBHwQYAQIA
|
||||
CQUCUw5EzQIbDAAKCRBRhS2HNI/8TJntCAClU7TOO/X053eKF1jqNW4A1qpxctVc
|
||||
z8eTcY8Om5O4f6a/rfxfNFKn9Qyja/OG1xWNobETy7MiMXYjaa8uUx5iFy6kMVaP
|
||||
0BXJ59NLZjMARGw6lVTYDTIvzqqqwLxgliSDfSnqUhubGwvykANPO+93BBx89MRG
|
||||
unNoYGXtPlhNFrAsB1VR8+EyKLv2HQtGCPSFBhrjuzH3gxGibNDDdFQLxxuJWepJ
|
||||
EK1UbTS4ms0NgZ2Uknqn1WRU1Ki7rE4sTy68iZtWpKQXZEJa0IGnuI2sSINGcXCJ
|
||||
oEIgXTMyCILo34Fa/C6VCm2WBgz9zZO8/rHIiQm1J5zqz0DrDwKBUM9C
|
||||
=LYpS
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
@ -1,26 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# This script tags the version number given on the command line as being
|
||||
# the "latest" on the local system only.
|
||||
#
|
||||
# The following tags are updated:
|
||||
# - light (from the tag named after the version number)
|
||||
# - full (from the tag named after the version number with "-full" appended)
|
||||
# - latest (as an alias of light)
|
||||
#
|
||||
# Before running this the build.sh script must be run to actually create the
|
||||
# images that this script will tag.
|
||||
#
|
||||
# After tagging, use push.sh to push the images to dockerhub.
|
||||
|
||||
set -eu
|
||||
|
||||
VERSION="$1"
|
||||
VERSION_SLUG="${VERSION#v}"
|
||||
|
||||
echo "-- Updating tags to point to version $VERSION --"
|
||||
echo ""
|
||||
|
||||
docker tag "hashicorp/terraform:${VERSION_SLUG}" "hashicorp/terraform:light"
|
||||
docker tag "hashicorp/terraform:${VERSION_SLUG}" "hashicorp/terraform:latest"
|
||||
docker tag "hashicorp/terraform:${VERSION_SLUG}-full" "hashicorp/terraform:full"
|
Loading…
Reference in New Issue