mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-21 06:21:43 +00:00
Merge pull request #1969 from pwittrock/release-scripts
Add release scripts for modules and binaries
This commit is contained in:
12
cmd/config/fixgomod.sh
Executable file
12
cmd/config/fixgomod.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2019 The Kubernetes Authors.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
set -e
|
||||
|
||||
: "${kyaml_major?Need to source VERSIONS}"
|
||||
: "${kyaml_minor?Need to source VERSIONS}"
|
||||
: "${kyaml_patch?Need to source VERSIONS}"
|
||||
|
||||
go mod edit -dropreplace=sigs.k8s.io/kustomize/kyaml@v0.0.0
|
||||
go mod edit -require=sigs.k8s.io/kustomize/kyaml@v$kyaml_major.$kyaml_minor.$kyaml_patch
|
||||
12
cmd/kubectl/fixgomod.sh
Executable file
12
cmd/kubectl/fixgomod.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2019 The Kubernetes Authors.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
set -e
|
||||
|
||||
: "${kyaml_major?Need to source VERSIONS}"
|
||||
: "${kyaml_minor?Need to source VERSIONS}"
|
||||
: "${kyaml_patch?Need to source VERSIONS}"
|
||||
|
||||
go mod edit -dropreplace=sigs.k8s.io/kustomize/kyaml@v0.0.0
|
||||
go mod edit -require=sigs.k8s.io/kustomize/kyaml@v$kyaml_major.$kyaml_minor.$kyaml_patch
|
||||
38
kustomize/fixgomod.sh
Executable file
38
kustomize/fixgomod.sh
Executable file
@@ -0,0 +1,38 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2019 The Kubernetes Authors.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
set -e
|
||||
|
||||
: "${api_major?Need to source VERSIONS}"
|
||||
: "${api_minor?Need to source VERSIONS}"
|
||||
: "${api_patch?Need to source VERSIONS}"
|
||||
|
||||
: "${kyaml_major?Need to source VERSIONS}"
|
||||
: "${kyaml_minor?Need to source VERSIONS}"
|
||||
: "${kyaml_patch?Need to source VERSIONS}"
|
||||
|
||||
: "${cmd_config_major?Need to source VERSIONS}"
|
||||
: "${cmd_config_minor?Need to source VERSIONS}"
|
||||
: "${cmd_config_patch?Need to source VERSIONS}"
|
||||
|
||||
: "${cmd_kubectl_major?Need to source VERSIONS}"
|
||||
: "${cmd_kubectl_minor?Need to source VERSIONS}"
|
||||
: "${cmd_kubectl_patch?Need to source VERSIONS}"
|
||||
|
||||
|
||||
# api
|
||||
go mod edit -dropreplace=sigs.k8s.io/kustomize/api@v0.0.0
|
||||
go mod edit -require=sigs.k8s.io/kustomize/api@v$api_major.$api_minor.$api_patch
|
||||
|
||||
# kyaml
|
||||
go mod edit -dropreplace=sigs.k8s.io/kustomize/kyaml@v0.0.0
|
||||
go mod edit -require=sigs.k8s.io/kustomize/kyaml@v$kyaml_major.$kyaml_minor.$kyaml_patch
|
||||
|
||||
# cmd/config
|
||||
go mod edit -dropreplace=sigs.k8s.io/kustomize/cmd/config@v0.0.0
|
||||
go mod edit -require=sigs.k8s.io/kustomize/cmd/config@v$cmd_config_major.$cmd_config_minor.$cmd_config_patch
|
||||
|
||||
# cmd/kubectl
|
||||
go mod edit -dropreplace=sigs.k8s.io/kustomize/cmd/kubectl@v0.0.0
|
||||
go mod edit -require=sigs.k8s.io/kustomize/cmd/kubectl@v$cmd_kubectl_major.$cmd_kubectl_minor.$cmd_kubectl_patch
|
||||
29
releasing/VERSIONS
Normal file
29
releasing/VERSIONS
Normal file
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# VERSIONS contains the release versions of each kustomize go module
|
||||
# update this file and run releaseall.sh to cut a new release
|
||||
|
||||
# kyaml version
|
||||
export kyaml_major=0
|
||||
export kyaml_minor=0
|
||||
export kyaml_patch=1
|
||||
|
||||
# kustomize api version
|
||||
export api_major=0
|
||||
export api_minor=3
|
||||
export api_patch=0
|
||||
|
||||
# cmd/config version
|
||||
export cmd_config_major=0
|
||||
export cmd_config_minor=0
|
||||
export cmd_config_patch=1
|
||||
|
||||
# cmd/kubectl version
|
||||
export cmd_kubectl_major=0
|
||||
export cmd_kubectl_minor=0
|
||||
export cmd_kubectl_patch=1
|
||||
|
||||
# kustomize version
|
||||
export kustomize_major=3
|
||||
export kustomize_minor=5
|
||||
export kustomize_patch=1
|
||||
21
releasing/releaseallmodules.sh
Executable file
21
releasing/releaseallmodules.sh
Executable file
@@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2019 The Kubernetes Authors.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
set -e
|
||||
|
||||
# fetch upstream once
|
||||
git fetch upstream
|
||||
export FETCH="false"
|
||||
|
||||
# release modules without binaries
|
||||
for module in "kyaml api cmd/config cmd/kubectl"
|
||||
do
|
||||
releasing/releasemodule.sh $module
|
||||
done
|
||||
|
||||
# release modules with binaries
|
||||
for binary in "kustomize"
|
||||
do
|
||||
BINARY=true releasing/releasemodule.sh $binary
|
||||
done
|
||||
104
releasing/releasemodule.sh
Executable file
104
releasing/releasemodule.sh
Executable file
@@ -0,0 +1,104 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2019 The Kubernetes Authors.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
# run this script with releasing/releasemodule.sh MODULE
|
||||
# -- e.g. releasing/releasemodule.sh cmd/config
|
||||
# to push the latest tag to release a binary, run with BINARY=true
|
||||
# -- e.g. BINARY=true releasing/releasemodule.sh kustomize
|
||||
# to skip fetch from upstream, run with FETCH=false
|
||||
# -- e.g. FETCH=false releasing/releasemodule.sh kyaml
|
||||
# for a list of modules see releasing/releaseallmodules.sh
|
||||
set -e
|
||||
|
||||
# perform release for a module
|
||||
function releaseModule {
|
||||
# calculate the branch and tag names
|
||||
module=$1
|
||||
slash="/"
|
||||
module_name=${module/$slash/_}
|
||||
name="${module_name}_major"
|
||||
major="${!name}"
|
||||
name="${module_name}_minor"
|
||||
minor="${!name}"
|
||||
name="${module_name}_patch"
|
||||
patch="${!name}"
|
||||
branch="release-${module}-v${major}.${minor}"
|
||||
tag="${module}/v${major}.${minor}.${patch}"
|
||||
|
||||
# create a temporary workspace for our work
|
||||
wktree=$(mktemp -d /tmp/kustomize-releases-XXXXXX)
|
||||
git branch -f $branch upstream/master # always release from master
|
||||
git worktree add $wktree $branch # create a separate worktree for the branch
|
||||
pushd .
|
||||
cd $wktree/$module # cd into the worktree/module
|
||||
|
||||
echo "dir: $wktree"
|
||||
echo "module: $module v$major.$minor.$patch"
|
||||
echo "branch: $branch"
|
||||
echo "tag: $tag"
|
||||
|
||||
# clean up replaces in go.mod as needed
|
||||
FILE=fixgomod.sh
|
||||
if test -f "$FILE"; then
|
||||
./fixgomod.sh
|
||||
|
||||
go mod tidy
|
||||
go test ./...
|
||||
go mod tidy
|
||||
git add .
|
||||
git commit -m "update go.mod for release" || echo "no changes made to go.mod"
|
||||
fi
|
||||
|
||||
if [ "$NO_DRY_RUN" == "true" ]; then
|
||||
git push upstream $branch
|
||||
git tag -a $tag -m "Release $tag on branch $branch"
|
||||
git push upstream $tag
|
||||
else
|
||||
printf "\nSkipping push binary $binary -- run with NO_DRY_RUN=true to push the release.\n\n"
|
||||
fi
|
||||
|
||||
# cleanup release artifacts
|
||||
popd
|
||||
rm -rf $wktree
|
||||
git worktree prune
|
||||
git branch -D $branch
|
||||
echo "$module complete"
|
||||
}
|
||||
|
||||
function releaseBinary {
|
||||
# move the latest tag for the binary to trigger cloudbuild
|
||||
binary=$1
|
||||
echo "binary: $binary"
|
||||
|
||||
if [ "$NO_DRY_RUN" == "true" ]; then
|
||||
git tag -d latest_$binary
|
||||
git push upstream :latest_$binary
|
||||
git tag -a latest_$binary
|
||||
git push upstream latest_$binary
|
||||
else
|
||||
echo "Skipping push binary $binary -- run with NO_DRY_RUN=true to push the release."
|
||||
fi
|
||||
}
|
||||
|
||||
# configure the branch and tag names
|
||||
module="${1?must provide the module to release as an argument}"
|
||||
|
||||
# get the release versions
|
||||
source releasing/VERSIONS
|
||||
|
||||
FETCH=${FETCH:-"true"}
|
||||
NO_DRY_RUN=${NO_DRY_RUN:-"false"}
|
||||
|
||||
# get the most recent changes
|
||||
if [ "$FETCH" == "true" ]; then
|
||||
git fetch upstream
|
||||
fi
|
||||
|
||||
# release the module
|
||||
releaseModule $module
|
||||
|
||||
# release the binary
|
||||
if [ "$BINARY" == "true" ]; then
|
||||
releaseBinary $module
|
||||
fi
|
||||
Reference in New Issue
Block a user