mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
scripts: update release, genproto, dep
Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
This commit is contained in:
parent
cc1591aa4e
commit
d7fc66bcbb
@ -1,84 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
BINARYDIR=${BINARYDIR:-bin}
|
|
||||||
BUILDDIR=${BUILDDIR:-bin}
|
|
||||||
|
|
||||||
# A non-installed acbuild can be used, for example:
|
|
||||||
# ACBUILD=../../appc/acbuild/bin/acbuild
|
|
||||||
ACBUILD=${ACBUILD:-acbuild}
|
|
||||||
|
|
||||||
VERSION=$1
|
|
||||||
|
|
||||||
go2aci() {
|
|
||||||
case "${1}" in
|
|
||||||
"arm64") echo "aarch64";;
|
|
||||||
*) echo "${1}";;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
if ! command -v "${ACBUILD}" >/dev/null; then
|
|
||||||
echo "acbuild ($ACBUILD) is not executable"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -x "${BINARYDIR}"/etcd ] ; then
|
|
||||||
echo "$BINARYDIR/etcd not found. Is it compiled?"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$VERSION" ] ; then
|
|
||||||
echo "Usage: scripts/build-aci VERSION"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
acbuild --debug begin
|
|
||||||
|
|
||||||
TMPHOSTS="$(mktemp)"
|
|
||||||
ACI_ARCH=$(go2aci "${GOARCH}")
|
|
||||||
|
|
||||||
acbuildEnd() {
|
|
||||||
rm "$TMPHOSTS"
|
|
||||||
export EXIT=$?
|
|
||||||
acbuild --debug end && exit $EXIT
|
|
||||||
}
|
|
||||||
trap acbuildEnd EXIT
|
|
||||||
|
|
||||||
cat <<DF > "$TMPHOSTS"
|
|
||||||
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
|
|
||||||
DF
|
|
||||||
|
|
||||||
acbuild --debug set-name coreos.com/etcd
|
|
||||||
acbuild --debug annotation add appc.io/executor/supports-systemd-notify true
|
|
||||||
|
|
||||||
acbuild --debug copy "${BINARYDIR}"/etcd /usr/local/bin/etcd
|
|
||||||
acbuild --debug copy "${BINARYDIR}"/etcdctl /usr/local/bin/etcdctl
|
|
||||||
|
|
||||||
acbuild --debug copy README.md README.md
|
|
||||||
acbuild --debug copy etcdctl/README.md README-etcdctl.md
|
|
||||||
acbuild --debug copy etcdctl/READMEv2.md READMEv2-etcdctl.md
|
|
||||||
acbuild --debug copy-to-dir Documentation .
|
|
||||||
|
|
||||||
acbuild --debug environment add ETCD_DATA_DIR /var/lib/etcd
|
|
||||||
acbuild --debug mount add data-dir /var/lib/etcd
|
|
||||||
|
|
||||||
acbuild --debug label add version "$VERSION"
|
|
||||||
|
|
||||||
acbuild --debug set-exec -- /usr/local/bin/etcd
|
|
||||||
|
|
||||||
acbuild --debug port add client tcp 2379
|
|
||||||
acbuild --debug port add peer tcp 2380
|
|
||||||
|
|
||||||
acbuild --debug copy "$TMPHOSTS" /etc/hosts
|
|
||||||
|
|
||||||
acbuild --debug label add arch "${ACI_ARCH}"
|
|
||||||
|
|
||||||
# mkdir default data-dir
|
|
||||||
mkdir -p .acbuild/currentaci/rootfs/var/lib/etcd
|
|
||||||
|
|
||||||
# symlinks for backward-compatibility
|
|
||||||
ln -s ./usr/local/bin/etcd .acbuild/currentaci/rootfs/etcd
|
|
||||||
ln -s ./usr/local/bin/etcdctl .acbuild/currentaci/rootfs/etcdctl
|
|
||||||
|
|
||||||
acbuild --debug write --overwrite "${BUILDDIR}/etcd-${1}-linux-${ACI_ARCH}.aci"
|
|
@ -11,11 +11,6 @@ if [ -z "${VERSION}" ]; then
|
|||||||
exit 255
|
exit 255
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! command -v acbuild >/dev/null; then
|
|
||||||
echo "cannot find acbuild"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! command -v docker >/dev/null; then
|
if ! command -v docker >/dev/null; then
|
||||||
echo "cannot find docker"
|
echo "cannot find docker"
|
||||||
exit 1
|
exit 1
|
||||||
@ -27,14 +22,8 @@ pushd "${ETCD_ROOT}" >/dev/null
|
|||||||
echo Building etcd binary...
|
echo Building etcd binary...
|
||||||
./scripts/build-binary "${VERSION}"
|
./scripts/build-binary "${VERSION}"
|
||||||
|
|
||||||
# ppc64le not yet supported by acbuild.
|
|
||||||
for TARGET_ARCH in "amd64" "arm64"; do
|
|
||||||
echo Building ${TARGET_ARCH} aci image...
|
|
||||||
GOARCH=${TARGET_ARCH} BINARYDIR=release/etcd-${VERSION}-linux-${TARGET_ARCH} BUILDDIR=release ./scripts/build-aci "${VERSION}"
|
|
||||||
done
|
|
||||||
|
|
||||||
for TARGET_ARCH in "amd64" "arm64" "ppc64le"; do
|
for TARGET_ARCH in "amd64" "arm64" "ppc64le"; do
|
||||||
echo Building ${TARGET_ARCH} docker image...
|
echo Building ${TARGET_ARCH} docker image...
|
||||||
GOARCH=${TARGET_ARCH} BINARYDIR=release/etcd-${VERSION}-linux-${TARGET_ARCH} BUILDDIR=release ./scripts/build-docker "${VERSION}"
|
GOOS=linux GOARCH=${TARGET_ARCH} BINARYDIR=release/etcd-${VERSION}-linux-${TARGET_ARCH} BUILDDIR=release ./scripts/build-docker "${VERSION}"
|
||||||
done
|
done
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -10,17 +10,20 @@ if ! [[ "$0" =~ scripts/genproto.sh ]]; then
|
|||||||
exit 255
|
exit 255
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $(protoc --version | cut -f2 -d' ') != "3.5.0" ]]; then
|
if [[ $(protoc --version | cut -f2 -d' ') != "3.7.1" ]]; then
|
||||||
echo "could not find protoc 3.5.0, is it installed + in PATH?"
|
echo "could not find protoc 3.7.1, is it installed + in PATH?"
|
||||||
exit 255
|
exit 255
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# directories containing protos to be built
|
# directories containing protos to be built
|
||||||
DIRS="./wal/walpb ./etcdserver/etcdserverpb ./snap/snappb ./raft/raftpb ./mvcc/mvccpb ./lease/leasepb ./auth/authpb ./etcdserver/api/v3lock/v3lockpb ./etcdserver/api/v3election/v3electionpb"
|
DIRS="./wal/walpb ./etcdserver/etcdserverpb ./snap/snappb ./raft/raftpb ./mvcc/mvccpb ./lease/leasepb ./auth/authpb ./etcdserver/api/v3lock/v3lockpb ./etcdserver/api/v3election/v3electionpb"
|
||||||
|
|
||||||
|
# disable go mod
|
||||||
|
export GO111MODULE=off
|
||||||
|
|
||||||
# exact version of packages to build
|
# exact version of packages to build
|
||||||
GOGO_PROTO_SHA="41168f6614b7bb144818ec8967b8c702705df564"
|
GOGO_PROTO_SHA="1adfc126b41513cc696b209667c8656ea7aac67c"
|
||||||
GRPC_GATEWAY_SHA="a92d37fb6339375fa4bb7d9c364f92373fe199c3"
|
GRPC_GATEWAY_SHA="92583770e3f01b09a0d3e9bdf64321d8bebd48f2"
|
||||||
SCHWAG_SHA="b7d0fc9aadaaae3d61aaadfc12e4a2f945514912"
|
SCHWAG_SHA="b7d0fc9aadaaae3d61aaadfc12e4a2f945514912"
|
||||||
|
|
||||||
# set up self-contained GOPATH for building
|
# set up self-contained GOPATH for building
|
||||||
@ -28,39 +31,57 @@ export GOPATH=${PWD}/gopath.proto
|
|||||||
export GOBIN=${PWD}/bin
|
export GOBIN=${PWD}/bin
|
||||||
export PATH="${GOBIN}:${PATH}"
|
export PATH="${GOBIN}:${PATH}"
|
||||||
|
|
||||||
COREOS_ROOT="${GOPATH}/src/github.com/coreos"
|
ETCD_IO_ROOT="${GOPATH}/src/github.com/coreos/etcd"
|
||||||
ETCD_ROOT="${COREOS_ROOT}/etcd"
|
ETCD_ROOT="${ETCD_IO_ROOT}/etcd"
|
||||||
GOGOPROTO_ROOT="${GOPATH}/src/github.com/gogo/protobuf"
|
GOGOPROTO_ROOT="${GOPATH}/src/github.com/gogo/protobuf"
|
||||||
SCHWAG_ROOT="${GOPATH}/src/github.com/hexfusion/schwag"
|
SCHWAG_ROOT="${GOPATH}/src/github.com/hexfusion/schwag"
|
||||||
GOGOPROTO_PATH="${GOGOPROTO_ROOT}:${GOGOPROTO_ROOT}/protobuf"
|
GOGOPROTO_PATH="${GOGOPROTO_ROOT}:${GOGOPROTO_ROOT}/protobuf"
|
||||||
GRPC_GATEWAY_ROOT="${GOPATH}/src/github.com/grpc-ecosystem/grpc-gateway"
|
GRPC_GATEWAY_ROOT="${GOPATH}/src/github.com/grpc-ecosystem/grpc-gateway"
|
||||||
|
|
||||||
rm -f "${ETCD_ROOT}"
|
function cleanup {
|
||||||
mkdir -p "${COREOS_ROOT}"
|
# Remove the whole fake GOPATH which can really confuse go mod.
|
||||||
|
rm -rf "${PWD}/gopath.proto"
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanup
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
|
mkdir -p "${ETCD_IO_ROOT}"
|
||||||
ln -s "${PWD}" "${ETCD_ROOT}"
|
ln -s "${PWD}" "${ETCD_ROOT}"
|
||||||
|
|
||||||
# Ensure we have the right version of protoc-gen-gogo by building it every time.
|
echo "Installing gogo/protobuf..."
|
||||||
# TODO(jonboulle): vendor this instead of `go get`ting it.
|
GOGOPROTO_ROOT="$GOPATH/src/github.com/gogo/protobuf"
|
||||||
go get -u github.com/gogo/protobuf/{proto,protoc-gen-gogo,gogoproto}
|
# rm -rf $GOGOPROTO_ROOT
|
||||||
go get -u golang.org/x/tools/cmd/goimports
|
mkdir -p $GOPATH/src/github.com/gogo
|
||||||
|
pushd $GOPATH/src/github.com/gogo
|
||||||
|
git clone https://github.com/gogo/protobuf.git
|
||||||
|
popd
|
||||||
pushd "${GOGOPROTO_ROOT}"
|
pushd "${GOGOPROTO_ROOT}"
|
||||||
git reset --hard "${GOGO_PROTO_SHA}"
|
git reset --hard HEAD
|
||||||
make install
|
make install
|
||||||
popd
|
popd
|
||||||
|
|
||||||
# generate gateway code
|
echo "Installing grpc-ecosystem/grpc-gateway..."
|
||||||
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
|
GRPC_GATEWAY_ROOT="$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway"
|
||||||
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger
|
# rm -rf $GRPC_GATEWAY_ROOT
|
||||||
|
mkdir -p $GOPATH/src/github.com/grpc-ecosystem
|
||||||
|
go get -v -d github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
|
||||||
|
go get -v -d github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger
|
||||||
|
pushd $GOPATH/src/github.com/grpc-ecosystem
|
||||||
|
rm -rf ./grpc-gateway
|
||||||
|
git clone https://github.com/grpc-ecosystem/grpc-gateway.git
|
||||||
|
popd
|
||||||
pushd "${GRPC_GATEWAY_ROOT}"
|
pushd "${GRPC_GATEWAY_ROOT}"
|
||||||
git reset --hard "${GRPC_GATEWAY_SHA}"
|
git reset --hard "${GRPC_GATEWAY_SHA}"
|
||||||
go install ./protoc-gen-grpc-gateway
|
go install -v ./protoc-gen-grpc-gateway
|
||||||
|
go install -v ./protoc-gen-swagger
|
||||||
popd
|
popd
|
||||||
|
|
||||||
for dir in ${DIRS}; do
|
for dir in ${DIRS}; do
|
||||||
pushd "${dir}"
|
pushd "${dir}"
|
||||||
protoc --gofast_out=plugins=grpc,import_prefix=github.com/coreos/:. -I=".:${GOGOPROTO_PATH}:${COREOS_ROOT}:${GRPC_GATEWAY_ROOT}/third_party/googleapis" ./*.proto
|
protoc --gofast_out=plugins=grpc,import_prefix=github.com/coreos/:. -I=".:${GOGOPROTO_PATH}:${ETCD_IO_ROOT}:${GRPC_GATEWAY_ROOT}/third_party/googleapis" ./*.proto
|
||||||
sed -i.bak -E "s/github\.com\/coreos\/(gogoproto|github\.com|golang\.org|google\.golang\.org)/\1/g" ./*.pb.go
|
sed -i.bak -E "s/github\.com\/coreos\/(gogoproto|github\.com|golang\.org|google\.golang\.org)/\1/g" ./*.pb.go
|
||||||
sed -i.bak -E 's/github\.com\/coreos\/(errors|fmt|io)/\1/g' ./*.pb.go
|
sed -i.bak -E 's/github\.com\/coreos\/(errors|fmt|io|context|math\/bits)/\1/g' ./*.pb.go
|
||||||
sed -i.bak -E 's/import _ \"gogoproto\"//g' ./*.pb.go
|
sed -i.bak -E 's/import _ \"gogoproto\"//g' ./*.pb.go
|
||||||
sed -i.bak -E 's/import fmt \"fmt\"//g' ./*.pb.go
|
sed -i.bak -E 's/import fmt \"fmt\"//g' ./*.pb.go
|
||||||
sed -i.bak -E 's/import _ \"github\.com\/coreos\/google\/api\"//g' ./*.pb.go
|
sed -i.bak -E 's/import _ \"github\.com\/coreos\/google\/api\"//g' ./*.pb.go
|
||||||
@ -69,77 +90,3 @@ for dir in ${DIRS}; do
|
|||||||
goimports -w ./*.pb.go
|
goimports -w ./*.pb.go
|
||||||
popd
|
popd
|
||||||
done
|
done
|
||||||
|
|
||||||
# remove old swagger files so it's obvious whether the files fail to generate
|
|
||||||
rm -rf Documentation/dev-guide/apispec/swagger/*json
|
|
||||||
for pb in etcdserverpb/rpc api/v3lock/v3lockpb/v3lock api/v3election/v3electionpb/v3election; do
|
|
||||||
protobase="etcdserver/${pb}"
|
|
||||||
protoc -I. \
|
|
||||||
-I"${GRPC_GATEWAY_ROOT}"/third_party/googleapis \
|
|
||||||
-I"${GOGOPROTO_PATH}" \
|
|
||||||
-I"${COREOS_ROOT}" \
|
|
||||||
--grpc-gateway_out=logtostderr=true:. \
|
|
||||||
--swagger_out=logtostderr=true:./Documentation/dev-guide/apispec/swagger/. \
|
|
||||||
${protobase}.proto
|
|
||||||
# hack to move gw files around so client won't include them
|
|
||||||
pkgpath=$(dirname "${protobase}")
|
|
||||||
pkg=$(basename "${pkgpath}")
|
|
||||||
gwfile="${protobase}.pb.gw.go"
|
|
||||||
sed -i.bak -E "s/package $pkg/package gw/g" ${gwfile}
|
|
||||||
sed -i.bak -E "s/protoReq /&$pkg\./g" ${gwfile}
|
|
||||||
sed -i.bak -E "s/, client /, client $pkg./g" ${gwfile}
|
|
||||||
sed -i.bak -E "s/Client /, client $pkg./g" ${gwfile}
|
|
||||||
sed -i.bak -E "s/[^(]*Client, runtime/${pkg}.&/" ${gwfile}
|
|
||||||
sed -i.bak -E "s/New[A-Za-z]*Client/${pkg}.&/" ${gwfile}
|
|
||||||
# darwin doesn't like newlines in sed...
|
|
||||||
sed -i.bak -E "s|import \(|& \"github.com/coreos/etcd/${pkgpath}\"|" ${gwfile}
|
|
||||||
mkdir -p "${pkgpath}"/gw/
|
|
||||||
go fmt ${gwfile}
|
|
||||||
mv ${gwfile} "${pkgpath}/gw/"
|
|
||||||
rm -f ./etcdserver/${pb}*.bak
|
|
||||||
swaggerName=$(basename ${pb})
|
|
||||||
mv Documentation/dev-guide/apispec/swagger/etcdserver/${pb}.swagger.json \
|
|
||||||
Documentation/dev-guide/apispec/swagger/"${swaggerName}".swagger.json
|
|
||||||
done
|
|
||||||
rm -rf Documentation/dev-guide/apispec/swagger/etcdserver/
|
|
||||||
|
|
||||||
# append security to swagger spec
|
|
||||||
go get -u "github.com/hexfusion/schwag"
|
|
||||||
pushd "${SCHWAG_ROOT}"
|
|
||||||
git reset --hard "${SCHWAG_SHA}"
|
|
||||||
go install .
|
|
||||||
popd
|
|
||||||
schwag -input=Documentation/dev-guide/apispec/swagger/rpc.swagger.json
|
|
||||||
|
|
||||||
# install protodoc
|
|
||||||
# go get -v -u github.com/coreos/protodoc
|
|
||||||
#
|
|
||||||
# by default, do not run this option.
|
|
||||||
# only run when './scripts/genproto.sh -g'
|
|
||||||
#
|
|
||||||
if [ "$1" = "-g" ]; then
|
|
||||||
echo "protodoc is auto-generating grpc API reference documentation..."
|
|
||||||
go get -v -u github.com/coreos/protodoc
|
|
||||||
SHA_PROTODOC="4372ee725035a208404e2d5465ba921469decc32"
|
|
||||||
PROTODOC_PATH="${GOPATH}/src/github.com/coreos/protodoc"
|
|
||||||
pushd "${PROTODOC_PATH}"
|
|
||||||
git reset --hard "${SHA_PROTODOC}"
|
|
||||||
go install
|
|
||||||
echo "protodoc is updated"
|
|
||||||
popd
|
|
||||||
|
|
||||||
protodoc --directories="etcdserver/etcdserverpb=service_message,mvcc/mvccpb=service_message,lease/leasepb=service_message,auth/authpb=service_message" \
|
|
||||||
--title="etcd API Reference" \
|
|
||||||
--output="Documentation/dev-guide/api_reference_v3.md" \
|
|
||||||
--message-only-from-this-file="etcdserver/etcdserverpb/rpc.proto" \
|
|
||||||
--disclaimer="This is a generated documentation. Please read the proto files for more."
|
|
||||||
|
|
||||||
protodoc --directories="etcdserver/api/v3lock/v3lockpb=service_message,etcdserver/api/v3election/v3electionpb=service_message,mvcc/mvccpb=service_message" \
|
|
||||||
--title="etcd concurrency API Reference" \
|
|
||||||
--output="Documentation/dev-guide/api_concurrency_reference_v3.md" \
|
|
||||||
--disclaimer="This is a generated documentation. Please read the proto files for more."
|
|
||||||
|
|
||||||
echo "protodoc is finished..."
|
|
||||||
else
|
|
||||||
echo "skipping grpc API reference document auto-generation..."
|
|
||||||
fi
|
|
||||||
|
@ -32,11 +32,6 @@ main() {
|
|||||||
MINOR_VERSION=$(echo "${VERSION}" | cut -d. -f 1-2)
|
MINOR_VERSION=$(echo "${VERSION}" | cut -d. -f 1-2)
|
||||||
BRANCH="release-${MINOR_VERSION}"
|
BRANCH="release-${MINOR_VERSION}"
|
||||||
|
|
||||||
if ! command -v acbuild >/dev/null; then
|
|
||||||
echo "cannot find acbuild"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! command -v docker >/dev/null; then
|
if ! command -v docker >/dev/null; then
|
||||||
echo "cannot find docker"
|
echo "cannot find docker"
|
||||||
exit 1
|
exit 1
|
||||||
@ -56,7 +51,7 @@ main() {
|
|||||||
if [ ! -d "${reldir}/etcd" ]; then
|
if [ ! -d "${reldir}/etcd" ]; then
|
||||||
mkdir -p "${reldir}"
|
mkdir -p "${reldir}"
|
||||||
cd "${reldir}"
|
cd "${reldir}"
|
||||||
git clone git@github.com:coreos/etcd.git --branch "${BRANCH}"
|
git clone git@github.com:etcd-io/etcd.git --branch "${BRANCH}"
|
||||||
fi
|
fi
|
||||||
cd "${reldir}/etcd"
|
cd "${reldir}/etcd"
|
||||||
|
|
||||||
@ -68,7 +63,8 @@ main() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Check go version.
|
# Check go version.
|
||||||
local go_version="go$(yq -r ".go[0]" .travis.yml)"
|
# download "yq" from https://github.com/mikefarah/yq
|
||||||
|
local go_version="go$(yq read .travis.yml "go[0]")"
|
||||||
local current_go_version=$(go version | awk '{ print $3 }')
|
local current_go_version=$(go version | awk '{ print $3 }')
|
||||||
if [[ "${current_go_version}" != "${go_version}" ]]; then
|
if [[ "${current_go_version}" != "${go_version}" ]]; then
|
||||||
echo "Current go version is ${current_go_version}, but etcd ${RELEASE_VERSION} requires ${go_version} (see .travis.yml)."
|
echo "Current go version is ${current_go_version}, but etcd ${RELEASE_VERSION} requires ${go_version} (see .travis.yml)."
|
||||||
@ -87,10 +83,10 @@ main() {
|
|||||||
fi
|
fi
|
||||||
echo "Updating version from ${source_version} to ${VERSION} in version/version.go"
|
echo "Updating version from ${source_version} to ${VERSION} in version/version.go"
|
||||||
sed -i "s/${source_version}/${VERSION}/g" version/version.go
|
sed -i "s/${source_version}/${VERSION}/g" version/version.go
|
||||||
echo "Building etcd with updated version"
|
|
||||||
./build
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo "Building etcd and checking --version output"
|
||||||
|
./build
|
||||||
local etcd_version=$(bin/etcd --version | grep "etcd Version" | awk '{ print $3 }')
|
local etcd_version=$(bin/etcd --version | grep "etcd Version" | awk '{ print $3 }')
|
||||||
if [[ "${etcd_version}" != "${VERSION}" ]]; then
|
if [[ "${etcd_version}" != "${VERSION}" ]]; then
|
||||||
echo "Wrong etcd version in version/version.go. Expected ${etcd_version} but got ${VERSION}. Aborting."
|
echo "Wrong etcd version in version/version.go. Expected ${etcd_version} but got ${VERSION}. Aborting."
|
||||||
@ -106,7 +102,7 @@ main() {
|
|||||||
|
|
||||||
# Push the version change if it's not already been pushed.
|
# Push the version change if it's not already been pushed.
|
||||||
if [ $(git rev-list --count "origin/${BRANCH}..${BRANCH}") -gt 0 ]; then
|
if [ $(git rev-list --count "origin/${BRANCH}..${BRANCH}") -gt 0 ]; then
|
||||||
read -p "Push version bump up to ${VERSION} to github.com/coreos/etcd [y/N]? " confirm
|
read -p "Push version bump up to ${VERSION} to github.com/etcd-io/etcd [y/N]? " confirm
|
||||||
[[ "${confirm,,}" == "y" ]] || exit 1
|
[[ "${confirm,,}" == "y" ]] || exit 1
|
||||||
git push
|
git push
|
||||||
fi
|
fi
|
||||||
@ -141,8 +137,8 @@ main() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Sanity checks.
|
# Sanity checks.
|
||||||
./release/etcd-${RELEASE_VERSION}-linux-amd64/etcd --version | grep -q "etcd Version: ${VERSION}"
|
./release/etcd-${RELEASE_VERSION}-$(go env GOOS)-amd64/etcd --version | grep -q "etcd Version: ${VERSION}" || true
|
||||||
ETCDCTL_API=3 ./release/etcd-${RELEASE_VERSION}-linux-amd64/etcdctl version | grep -q "etcdctl version: ${VERSION}"
|
./release/etcd-${RELEASE_VERSION}-$(go env GOOS)-amd64/etcdctl version | grep -q "etcdctl version: ${VERSION}" || true
|
||||||
|
|
||||||
# Upload artifacts.
|
# Upload artifacts.
|
||||||
if [ "${NO_UPLOAD}" == 1 ]; then
|
if [ "${NO_UPLOAD}" == 1 ]; then
|
||||||
@ -152,7 +148,6 @@ main() {
|
|||||||
[[ "${confirm,,}" == "y" ]] || exit 1
|
[[ "${confirm,,}" == "y" ]] || exit 1
|
||||||
gsutil -m cp ./release/*.zip gs://etcd/${RELEASE_VERSION}/
|
gsutil -m cp ./release/*.zip gs://etcd/${RELEASE_VERSION}/
|
||||||
gsutil -m cp ./release/*.tar.gz gs://etcd/${RELEASE_VERSION}/
|
gsutil -m cp ./release/*.tar.gz gs://etcd/${RELEASE_VERSION}/
|
||||||
gsutil -m cp ./release/*.aci gs://etcd/${RELEASE_VERSION}/
|
|
||||||
gsutil -m acl ch -u allUsers:R -r gs://etcd/${RELEASE_VERSION}/
|
gsutil -m acl ch -u allUsers:R -r gs://etcd/${RELEASE_VERSION}/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -168,43 +163,22 @@ main() {
|
|||||||
done
|
done
|
||||||
gcloud docker -- login -u _json_key -p "$(cat /etc/gcp-key-etcd-development.json)" https://gcr.io
|
gcloud docker -- login -u _json_key -p "$(cat /etc/gcp-key-etcd-development.json)" https://gcr.io
|
||||||
|
|
||||||
|
echo "Pushing container images to quay.io" ${RELEASE_VERSION}
|
||||||
docker push quay.io/coreos/etcd:${RELEASE_VERSION}
|
docker push quay.io/coreos/etcd:${RELEASE_VERSION}
|
||||||
|
|
||||||
|
echo "Pushing container images to gcr.io" ${RELEASE_VERSION}
|
||||||
gcloud docker -- push gcr.io/etcd-development/etcd:${RELEASE_VERSION}
|
gcloud docker -- push gcr.io/etcd-development/etcd:${RELEASE_VERSION}
|
||||||
if [ "${MINOR_VERSION}" != "3.1" ]; then
|
|
||||||
for TARGET_ARCH in "-arm64" "-ppc64le"; do
|
for TARGET_ARCH in "-arm64" "-ppc64le"; do
|
||||||
docker push quay.io/coreos/etcd:${RELEASE_VERSION}${TARGET_ARCH}
|
echo "Pushing container images to quay.io" ${RELEASE_VERSION}${TARGET_ARCH}
|
||||||
gcloud docker -- push gcr.io/etcd-development/etcd:${RELEASE_VERSION}${TARGET_ARCH}
|
docker push quay.io/coreos/etcd:${RELEASE_VERSION}${TARGET_ARCH}
|
||||||
done
|
|
||||||
fi
|
echo "Pushing container images to gcr.io" ${RELEASE_VERSION}${TARGET_ARCH}
|
||||||
|
gcloud docker -- push gcr.io/etcd-development/etcd:${RELEASE_VERSION}${TARGET_ARCH}
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Setting permissions using gsutil..."
|
||||||
gsutil -m acl ch -u allUsers:R -r gs://artifacts.etcd-development.appspot.com
|
gsutil -m acl ch -u allUsers:R -r gs://artifacts.etcd-development.appspot.com
|
||||||
|
|
||||||
docker tag quay.io/coreos/etcd:${RELEASE_VERSION} quay.io/coreos/etcd:v${MINOR_VERSION}
|
|
||||||
docker push quay.io/coreos/etcd:v${MINOR_VERSION}
|
|
||||||
|
|
||||||
gcloud docker -- tag gcr.io/etcd-development/etcd:${RELEASE_VERSION} gcr.io/etcd-development/etcd:v${MINOR_VERSION}
|
|
||||||
gcloud docker -- push gcr.io/etcd-development/etcd:v${MINOR_VERSION}
|
|
||||||
fi
|
|
||||||
|
|
||||||
# TODO: test
|
|
||||||
# docker run --rm --name etcd-gcr-${RELEASE_VERSION} gcr.io/etcd-development/etcd:${RELEASE_VERSION};
|
|
||||||
# docker exec etcd-gcr-${RELEASE_VERSION} /bin/sh -c "/usr/local/bin/etcd --version"
|
|
||||||
# docker exec etcd-gcr-${RELEASE_VERSION} /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl version"
|
|
||||||
# docker exec etcd-gcr-${RELEASE_VERSION} /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl put foo bar"
|
|
||||||
# docker exec etcd-gcr-${RELEASE_VERSION} /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl get foo"
|
|
||||||
|
|
||||||
# Bump version to next development version.
|
|
||||||
git checkout -q "${BRANCH}" # Since we might be on a checkout of the remote version tag.
|
|
||||||
local source_version=$(egrep "\s+Version\s*=" version/version.go | sed -e "s/.*\"\(.*\)\".*/\1/g")
|
|
||||||
if [[ "${source_version}" != "${VERSION}+git" ]]; then
|
|
||||||
echo "Updating version from ${source_version} to ${VERSION}+git in version/version.go"
|
|
||||||
sed -i "s/${source_version}/${VERSION}+git/g" version/version.go
|
|
||||||
echo "Building etcd with ${VERSION}+git in version/version.go"
|
|
||||||
git add version/version.go
|
|
||||||
git commit -m "version: bump up to ${VERSION}+git"
|
|
||||||
git diff --staged
|
|
||||||
read -p "Push version bump up to ${VERSION}+git to github.com/coreos/etcd [y/N]? " confirm
|
|
||||||
[[ "${confirm,,}" == "y" ]] || exit 1
|
|
||||||
git push
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# TODO: signing process
|
# TODO: signing process
|
||||||
|
@ -1,69 +1,22 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
# A script for updating godep dependencies for the vendored directory /cmd/
|
|
||||||
# without pulling in etcd itself as a dependency.
|
|
||||||
#
|
|
||||||
# update depedency
|
|
||||||
# 1. edit glide.yaml with version, git SHA
|
|
||||||
# 2. run ./scripts/updatedep.sh
|
|
||||||
# 3. it automatically detects new git SHA, and vendors updates to cmd/vendor directory
|
|
||||||
#
|
|
||||||
# add depedency
|
|
||||||
# 1. run ./scripts/updatedep.sh github.com/USER/PROJECT#^1.0.0
|
|
||||||
# OR
|
|
||||||
# ./scripts/updatedep.sh github.com/USER/PROJECT#9b772b54b3bf0be1eec083c9669766a56332559a
|
|
||||||
# 2. make sure glide.yaml and glide.lock are updated
|
|
||||||
|
|
||||||
if ! [[ "$0" =~ scripts/updatedep.sh ]]; then
|
if ! [[ "$0" =~ scripts/updatedep.sh ]]; then
|
||||||
echo "must be run from repository root"
|
echo "must be run from repository root"
|
||||||
exit 255
|
exit 255
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rm -rf vendor
|
if [ -d "gopath.proto" ]; then
|
||||||
mv cmd/vendor vendor
|
# gopath.proto is created by genproto.sh and it thoroughly messes
|
||||||
|
# with go mod.
|
||||||
|
echo "Remove gopath.proto before running this script"
|
||||||
|
exit 255
|
||||||
|
fi
|
||||||
|
|
||||||
# TODO: glide doesn't play well with symlink
|
if [[ $(go version) != "go version go1.12"* ]]; then
|
||||||
echo "manually deleting etcd-repo symlink in vendor"
|
echo "expect Go 1.12+, got:" "$(go version)"
|
||||||
rm -f vendor/github.com/coreos/etcd
|
exit 255
|
||||||
|
fi
|
||||||
GLIDE_ROOT="$GOPATH/src/github.com/Masterminds/glide"
|
|
||||||
GLIDE_SHA=21ff6d397ccca910873d8eaabab6a941c364cc70
|
|
||||||
go get -d -u github.com/Masterminds/glide
|
|
||||||
pushd "${GLIDE_ROOT}"
|
|
||||||
git reset --hard ${GLIDE_SHA}
|
|
||||||
go install
|
|
||||||
popd
|
|
||||||
|
|
||||||
GLIDE_VC_ROOT="$GOPATH/src/github.com/sgotti/glide-vc"
|
|
||||||
GLIDE_VC_SHA=d96375d23c85287e80296cdf48f9d21c227fa40a
|
|
||||||
go get -d -u github.com/sgotti/glide-vc
|
|
||||||
pushd "${GLIDE_VC_ROOT}"
|
|
||||||
git reset --hard ${GLIDE_VC_SHA}
|
|
||||||
go install
|
|
||||||
popd
|
|
||||||
|
|
||||||
if [ -n "$1" ]; then
|
|
||||||
echo "glide get on $1"
|
|
||||||
matches=$(grep "name: $1" glide.lock)
|
|
||||||
if [ ! -z "$matches" ]; then
|
|
||||||
echo "glide update on $1"
|
|
||||||
glide update --strip-vendor "$1"
|
|
||||||
else
|
|
||||||
echo "glide get on $1"
|
|
||||||
glide get --strip-vendor "$1"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "glide update on *"
|
|
||||||
glide update --strip-vendor
|
|
||||||
fi;
|
|
||||||
|
|
||||||
echo "removing test files"
|
|
||||||
glide vc --only-code --no-tests
|
|
||||||
|
|
||||||
mv vendor cmd/
|
|
||||||
|
|
||||||
echo "recreating symlink to etcd"
|
|
||||||
ln -s ../../../../ cmd/vendor/github.com/coreos/etcd
|
|
||||||
|
|
||||||
echo "done"
|
|
||||||
|
|
||||||
|
GO111MODULE=on go mod tidy -v
|
||||||
|
GO111MODULE=on go mod vendor -v
|
||||||
|
Loading…
x
Reference in New Issue
Block a user