Multiarch release (#1929)

* Adding release script for multiarch

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Comment on buildx

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Remove need of triggering buildx script explicitly in build

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
This commit is contained in:
Harsh Thakur
2021-06-02 14:40:11 +05:30
committed by GitHub
co-authored by Sanket Sudake
parent 4c9b67ead4
commit 5f47a25711
3 changed files with 77 additions and 3 deletions
+20 -2
View File
@@ -15,7 +15,7 @@
.DEFAULT_GOAL := check
# Platforms to build in multi-architecture images.
PLATFORMS ?= linux/amd64,linux/arm64,linux/arm
PLATFORMS ?= linux/amd64,linux/arm64,linux/arm/v7
# Repository prefix and tag to push multi-architecture images to.
REPO ?= fission
@@ -43,6 +43,9 @@ build:
install-cli: build
mv cmd/fission-cli/fission $(GOPATH)/bin
verify-builder:
@./hack/buildx.sh
# build images (environment images are not included)
image:
docker build -t fission-bundle -f cmd/fission-bundle/Dockerfile.fission-bundle .
@@ -51,13 +54,28 @@ image:
docker build -t reporter -f cmd/builder/Dockerfile.reporter .
# build multi-architecture images for release.
image-multiarch:
image-multiarch: verify-builder
docker buildx build --platform=$(PLATFORMS) -t $(REPO)/fission-bundle:$(TAG) --push -f cmd/fission-bundle/Dockerfile.fission-bundle .
docker buildx build --platform=$(PLATFORMS) -t $(REPO)/fetcher:$(TAG) --push -f cmd/fetcher/Dockerfile.fission-fetcher .
docker buildx build --platform=$(PLATFORMS) -t $(REPO)/builder:$(TAG) --push -f cmd/builder/Dockerfile.fission-builder .
docker buildx build --platform=$(PLATFORMS) -t $(REPO)/preupgradechecks:$(TAG) --push -f cmd/preupgradechecks/Dockerfile.fission-preupgradechecks .
docker buildx build --platform=$(PLATFORMS) -t $(REPO)/reporter:$(TAG) --push -f cmd/reporter/Dockerfile.reporter .
multiarch-bundle: verify-builder
docker buildx build --platform=$(PLATFORMS) -t $(REPO)/fission-bundle:$(TAG) --push -f cmd/fission-bundle/Dockerfile.fission-bundle .
multiarch-fetcher: verify-builder
docker buildx build --platform=$(PLATFORMS) -t $(REPO)/fetcher:$(TAG) --push -f cmd/fetcher/Dockerfile.fission-fetcher .
multiarch-builder: verify-builder
docker buildx build --platform=$(PLATFORMS) -t $(REPO)/builder:$(TAG) --push -f cmd/builder/Dockerfile.fission-builder .
multiarch-preupgrade: verify-builder
docker buildx build --platform=$(PLATFORMS) -t $(REPO)/pre-upgrade-checks:$(TAG) --push -f cmd/preupgradechecks/Dockerfile.fission-preupgradechecks .
multiarch-reporter: verify-builder
docker buildx build --platform=$(PLATFORMS) -t $(REPO)/reporter:$(TAG) --push -f cmd/reporter/Dockerfile.reporter .
generate-crds:
controller-gen crd:trivialVersions=false,preserveUnknownFields=false paths=./pkg/apis/core/v1 output:crd:artifacts:config=crds/v1
Executable
+26
View File
@@ -0,0 +1,26 @@
set -e
## This script needs to be run to start the emulator for multiarch builds
create_docker_builder() {
if ! $(docker buildx inspect --bootstrap | grep "^Driver" | grep -q "docker-container"); then
echo "Starting docker builder fission"
docker buildx create --name=fission --use --driver=docker-container
docker buildx inspect --bootstrap
fi
}
check_platform() {
if ! $(docker buildx inspect --bootstrap | grep "^Platforms:" | grep -q "$1"); then
echo "Platform $1 not supported by builder"
exit 1
fi
}
create_docker_builder
PLATFORMS=(
linux/amd64
linux/arm6455
linux/arm/v7
)
for platform in "${PLATFORMS[@]}"; do
check_platform $platform
done
+31 -1
View File
@@ -70,6 +70,36 @@ push_all() {
push_pre_upgrade_checks_image latest
}
# Build and push fission-bundle image
push_multiarch_fission_bundle_image() {
TAG=$1 make multiarch-bundle
}
push_multiarch_fetcher_image() {
TAG=$1 make multiarch-fetcher
}
push_builder_image() {
TAG=$1 make multiarch-builder
}
# Push pre-upgrade-checks image
push_pre_upgrade_checks_image() {
TAG=$1 make multiarch-preupgrade
}
push_builder_image() {
TAG=$1 make multiarch-reporter
}
push_multiarch_all() {
TAG=$version make image-multiarch
TAG=latest make image-multiarch
}
tag_and_release() {
local version=$1
local gittag=$version
@@ -285,7 +315,7 @@ release_environment_check $version $chartsrepo
docker run --rm -it -v $FISSION_HOME:/go/src/github.com/fission -v /var/run/docker.sock:/var/run/docker.sock \
-e VERSION=$version -w "/go/src/github.com/fission/fission/hack" fission-release-builder sh -c "./release-build.sh"
push_all $version
push_multiarch_all $version
tag_and_release $version
attach_github_release_cli $version