chore(build): Tuned cross compiling a bit (#405)

* Renamed to --build-cross to --all (as we are not building a cross but all binaries. Could be renamed to --all-bin to be more clear)
* Fixed inclusion of external build-flags.sh script (which was broken when used build.sh with a symbolic label)
* Moved cross compiling to the end (to not interfer with --fast or --codegen)
* Aligned labels (to be short and concise)
This commit is contained in:
Roland Huß 2019-09-12 16:39:32 +02:00 committed by Knative Prow Robot
parent 9b52fc8345
commit 34fcd89bcd
1 changed files with 19 additions and 21 deletions

View File

@ -14,8 +14,6 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
source $(dirname $0)/build-flags.sh
set -o pipefail set -o pipefail
source_dirs="cmd pkg test" source_dirs="cmd pkg test"
@ -48,16 +46,6 @@ run() {
exit 0 exit 0
fi fi
if $(has_flag --build-cross -x); then
local failed=0
echo "🚧 Running kn cross platform build"
build_cross || failed=1
if (( failed )); then
echo "✋ Cross platform build failed"
fi
exit ${failed}
fi
if $(has_flag --watch -w); then if $(has_flag --watch -w); then
# Build and test first # Build and test first
go_build go_build
@ -97,6 +85,11 @@ run() {
go_build go_build
go_test go_test
# Cross compile in addition if requested
if $(has_flag --all -x); then
cross_build || (echo "✋ Cross platform build failed" && exit 1)
fi
echo "────────────────────────────────────────────" echo "────────────────────────────────────────────"
./kn version ./kn version
} }
@ -141,8 +134,7 @@ source_format() {
go_build() { go_build() {
echo "🚧 Compile" echo "🚧 Compile"
source "./hack/build-flags.sh" go build -mod=vendor -ldflags "$(build_flags $(basedir))" -o kn ./cmd/...
go build -mod=vendor -ldflags "$(build_flags .)" -o kn ./cmd/...
} }
go_test() { go_test() {
@ -271,17 +263,20 @@ has_flag() {
echo 'false' echo 'false'
} }
build_cross() { cross_build() {
local ld_flags="$(build_flags $(dirname $0)/..)" local basedir=$(basedir)
local ld_flags="$(build_flags $basedir)"
local pkg="github.com/knative/client/pkg/kn/commands" local pkg="github.com/knative/client/pkg/kn/commands"
local failed=0 local failed=0
echo "⚔️ ${S}Compile"
export CGO_ENABLED=0 export CGO_ENABLED=0
echo "🚧 🐧 Building for Linux" echo " 🐧 kn-linux-amd64"
GOOS=linux GOARCH=amd64 go build -mod=vendor -ldflags "${ld_flags}" -o ./kn-linux-amd64 ./cmd/... || failed=1 GOOS=linux GOARCH=amd64 go build -mod=vendor -ldflags "${ld_flags}" -o ./kn-linux-amd64 ./cmd/... || failed=1
echo "🚧 🍏 Building for macOS" echo " 🍏 kn-darwin-amd64"
GOOS=darwin GOARCH=amd64 go build -mod=vendor -ldflags "${ld_flags}" -o ./kn-darwin-amd64 ./cmd/... || failed=1 GOOS=darwin GOARCH=amd64 go build -mod=vendor -ldflags "${ld_flags}" -o ./kn-darwin-amd64 ./cmd/... || failed=1
echo "🚧 🎠 Building for Windows" echo " 🎠 kn-windows-amd64.exe"
GOOS=windows GOARCH=amd64 go build -mod=vendor -ldflags "${ld_flags}" -o ./kn-windows-amd64.exe ./cmd/... || failed=1 GOOS=windows GOARCH=amd64 go build -mod=vendor -ldflags "${ld_flags}" -o ./kn-windows-amd64.exe ./cmd/... || failed=1
return ${failed} return ${failed}
@ -301,7 +296,7 @@ with the following options:
-t --test Run tests when used with --fast or --watch -t --test Run tests when used with --fast or --watch
-c --codegen Runs formatting, doc gen and update without compiling/testing -c --codegen Runs formatting, doc gen and update without compiling/testing
-w --watch Watch for source changes and recompile in fast mode -w --watch Watch for source changes and recompile in fast mode
-x --build-cross Build cross platform binaries -x --all Build binaries for all platforms
-h --help Display this help message -h --help Display this help message
--verbose More output --verbose More output
--debug Debug information for this script (set -x) --debug Debug information for this script (set -x)
@ -319,7 +314,7 @@ Examples:
* Run only tests: .................... build.sh --test * Run only tests: .................... build.sh --test
* Compile with tests: ................ build.sh -f -t * Compile with tests: ................ build.sh -f -t
* Automatic recompilation: ........... build.sh --watch * Automatic recompilation: ........... build.sh --watch
* Build cross platform binaries: ..... build.sh --build-cross * Build cross platform binaries: ..... build.sh --all
EOT EOT
} }
@ -328,4 +323,7 @@ if $(has_flag --debug); then
set -x set -x
fi fi
# Shared funcs with CI
source $(basedir)/hack/build-flags.sh
run $* run $*