Three builders.

This commit is contained in:
Jeffrey Regan
2019-10-07 14:20:05 -07:00
parent 988af1ff61
commit 4eb2d5bcc2
6 changed files with 143 additions and 59 deletions

View File

@@ -70,8 +70,19 @@ require sigs.k8s.io/kustomize/v4 v4.0.1
#### Release artifacts #### Release artifacts
Source code tar balls and zip files (no executables) Release notes should appear on the [release page].
appear on the [release page].
[release notes generator]: https://github.com/kubernetes-sigs/controller-runtime/blob/master/hack/release/release-notes.sh
> TODO: install a decent library [release notes generator].
> Until then, just run something like
> ```
> git log --pretty="%h - %s (%aN)" v3.1.0..v3.2.0
> ```
> and summarize the results via the [release page] UX.
There's no binary, just a repo tag in the form `v4.3.2`
that others can `require` from their `go.mod` files.
### sigs.k8s.io/kustomize/pluginator ### sigs.k8s.io/kustomize/pluginator
@@ -190,7 +201,7 @@ fi
Install [`cloud-build-local`], then run Install [`cloud-build-local`], then run
``` ```
./releasing/localbuild.sh ./releasing/localbuild.sh (kustomize|pluginator)
``` ```
This should create release artifacts in a local directory. This should create release artifacts in a local directory.

View File

@@ -2,14 +2,85 @@
set -e set -e
set -x set -x
# Script to run http://goreleaser.com
module=$1
shift
if [ "$module" == "api" ]; then
echo "goreleaser only releases 'main' packages (executables)"
echo "See https://github.com/goreleaser/goreleaser/issues/981"
exit 1
fi
config=$(mktemp)
cat <<EOF >$config
project_name: $module
env:
- CGO_ENABLED=0
- GO111MODULE=on
checksum:
name_template: 'checksums.txt'
changelog:
sort: asc
filters:
exclude:
- '^docs:'
- '^test:'
- Merge pull request
- Merge branch
release:
github:
owner: kubernetes-sigs
name: kustomize
EOF
case "$module" in
kustomize)
cat <<EOF >>$config
builds:
- main: ./main.go
binary: kustomize
ldflags: -s -X sigs.k8s.io/kustomize/kustomize/v3/provenance.version={{.Version}} -X sigs.k8s.io/kustomize/kustomize/v3/provenance.gitCommit={{.Commit}} -X sigs.k8s.io/kustomize/kustomize/v3/provenance.buildDate={{.Date}}
goos:
- linux
- darwin
- windows
goarch:
- amd64
archive:
format: binary
EOF
;;
pluginator)
cat <<EOF >>$config
builds:
- main: ./main.go
binary: pluginator
goos:
- linux
- darwin
- windows
goarch:
- amd64
archive:
format: binary
EOF
;;
*)
echo "Don't recognize module $module"
exit 1
;;
esac
cat $config
if [ "$module" != "api" ]; then
# goreleaser must be run from the _module_ being released. # goreleaser must be run from the _module_ being released.
cd kustomize cd $module
fi
/bin/goreleaser \ /bin/goreleaser release --config=$config --rm-dist --skip-validate $@
release \
--config=../releasing/goreleaser.yaml \
--rm-dist \
--skip-validate \
$@

View File

@@ -3,7 +3,7 @@ steps:
args: [fetch, --tags, --depth=100] args: [fetch, --tags, --depth=100]
- name: goreleaser/goreleaser - name: goreleaser/goreleaser
entrypoint: /bin/sh entrypoint: /bin/sh
args: ["releasing/cloudbuild.sh"] args: ["releasing/cloudbuild.sh", "kustomize"]
secretEnv: ['GITHUB_TOKEN'] secretEnv: ['GITHUB_TOKEN']
secrets: secrets:
- kmsKeyName: projects/kustomize-199618/locations/global/keyRings/github-tokens/cryptoKeys/gh-release-token - kmsKeyName: projects/kustomize-199618/locations/global/keyRings/github-tokens/cryptoKeys/gh-release-token

View File

@@ -0,0 +1,11 @@
steps:
- name: "gcr.io/cloud-builders/git"
args: [fetch, --tags, --depth=100]
- name: goreleaser/goreleaser
entrypoint: /bin/sh
args: ["releasing/cloudbuild.sh", "pluginator"]
secretEnv: ['GITHUB_TOKEN']
secrets:
- kmsKeyName: projects/kustomize-199618/locations/global/keyRings/github-tokens/cryptoKeys/gh-release-token
secretEnv:
GITHUB_TOKEN: CiQAyrREbPgXJOeT7M3t+WlxkhXwlMPudixBeiyWTjmLOMLqdK4SUQA0W+xUmDJKAhyfHCcwqSEzUn9OwKC7XAYcmwe0CCKTCbPbDgmioDK24q3LVapndXNvnnHvCjhOJNEr1o+P1DCF+LlzYV2YL8lP09rrKrslPg==

View File

@@ -1,38 +0,0 @@
# Documentation at http://goreleaser.com
# By default, output sent to ./dist (see docs).
#
# 2019-may-29: windows removed because of error
# pkg/plugins/execplugin.go:111:2: undefined: syscall.Mkfifo
#
project_name: kustomize
builds:
- main: ./main.go
binary: kustomize
ldflags: -s -X sigs.k8s.io/kustomize/kustomize/v3/provenance.version={{.Version}} -X sigs.k8s.io/kustomize/kustomize/v3/provenance.gitCommit={{.Commit}} -X sigs.k8s.io/kustomize/kustomize/v3/provenance.buildDate={{.Date}}
goos:
- linux
- darwin
- windows
goarch:
- amd64
env:
- CGO_ENABLED=0
- GO111MODULE=on
checksum:
name_template: 'checksums.txt'
archive:
format: binary
snapshot:
name_template: "master"
changelog:
sort: asc
filters:
exclude:
- '^docs:'
- '^test:'
- Merge pull request
- Merge branch
release:
github:
owner: kubernetes-sigs
name: kustomize

View File

@@ -2,7 +2,7 @@
# Usage - from the repository root, enter # Usage - from the repository root, enter
# #
# ./releasing/localbuild.sh # ./releasing/localbuild.sh (kustomize|pluginator)
# #
# The script attempts to use cloudbuild configuration # The script attempts to use cloudbuild configuration
# to create a release "locally". # to create a release "locally".
@@ -17,25 +17,53 @@
# applied to the kustomize repo, the cloud builder # applied to the kustomize repo, the cloud builder
# reads the repository-relative file # reads the repository-relative file
# #
# releasing/cloudbuild.yaml # releasing/cloudbuild_(kustomize|pluginator).yaml
# #
# Inside this yaml file is a reference to the script # Inside this yaml file is a reference to the script
# #
# releasing/cloudbuild.sh # releasing/cloudbuild.sh
# #
# which runs goreleaser from the proper directory. # which runs goreleaser from the proper directory, with the
# proper config.
# #
# The script you are reading now does something # The script you are reading now does something
# analogous via docker tricks. # analogous via docker tricks.
set -e set -e
# Modify cloudbuild.yaml to add the --snapshot flag. module=$1
# This suppresses the github release, and leaves case "$module" in
# the build output in the kustomize/dist directory. api)
echo "goreleaser only releases 'main' packages (executables)"
echo "See https://github.com/goreleaser/goreleaser/issues/981"
exit 1
;;
kustomize)
;;
pluginator)
;;
*)
echo "Don't recognize module=$module"
exit 1
;;
esac
config=$(mktemp) config=$(mktemp)
sed 's|\["releasing/cloudbuild.sh"\]|["releasing/cloudbuild.sh", "--snapshot"]|' \ cp releasing/cloudbuild_${module}.yaml $config
releasing/cloudbuild.yaml > $config
# Delete the cloud-builders/git step.
sed -i '2,3d' $config
# Add the --snapshot flag to suppress the
# github release and leave the build output
# in the kustomize/dist directory.
sed -i 's|"\]$|", "--snapshot"]|' \
$config
echo "Executing cloud-build-local with:"
echo "========================="
cat $config
echo "========================="
cloud-build-local \ cloud-build-local \
--config=$config \ --config=$config \
@@ -43,7 +71,8 @@ cloud-build-local \
--dryrun=false \ --dryrun=false \
. .
# Print results of local build echo " "
echo "Result of local build:"
echo "##########################################" echo "##########################################"
tree ./kustomize/dist tree ./kustomize/dist
echo "##########################################" echo "##########################################"