Skip to content

Commit ac8ab84

Browse files
committed
Switch to new baseimage-pipeline
We now have baseimage in its own repository. We also bake a lot more of the image in during baseimage creation, so we can relax some of the logic here. Fixes FAB-284 Change-Id: I489004800635a126cff78dab79134fac9ae24722 Signed-off-by: Gregory Haskins <[email protected]>
1 parent 79b70e4 commit ac8ab84

31 files changed

+20
-2127
lines changed

.baseimage-release

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0.1.0

Makefile

+17-23
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,16 @@ else
4747
PROJECT_VERSION=$(BASE_VERSION)
4848
endif
4949

50-
DOCKER_TAG=$(shell uname -m)-$(PROJECT_VERSION)
51-
5250
PKGNAME = github.com/$(PROJECT_NAME)
5351
GO_LDFLAGS = -X github.com/hyperledger/fabric/metadata.Version=$(PROJECT_VERSION)
5452
CGO_FLAGS = CGO_CFLAGS=" " CGO_LDFLAGS="-lrocksdb -lstdc++ -lm -lz -lbz2 -lsnappy"
5553
UID = $(shell id -u)
54+
ARCH=$(shell uname -m)
5655
CHAINTOOL_RELEASE=v0.9.0
56+
BASEIMAGE_RELEASE=$(shell cat ./.baseimage-release)
57+
58+
DOCKER_TAG=$(ARCH)-$(PROJECT_VERSION)
59+
BASE_DOCKER_TAG=$(ARCH)-$(BASEIMAGE_RELEASE)
5760

5861
EXECUTABLES = go docker git curl
5962
K := $(foreach exec,$(EXECUTABLES),\
@@ -63,13 +66,9 @@ K := $(foreach exec,$(EXECUTABLES),\
6366
SUBDIRS = gotools sdk/node
6467
SUBDIRS:=$(strip $(SUBDIRS))
6568

66-
# Make our baseimage depend on any changes to images/base or scripts/provision
67-
BASEIMAGE_RELEASE = $(shell cat ./images/base/release)
68-
BASEIMAGE_DEPS = $(shell git ls-files images/base scripts/provision)
69-
7069
JAVASHIM_DEPS = $(shell git ls-files core/chaincode/shim/java)
7170
PROJECT_FILES = $(shell git ls-files)
72-
IMAGES = base src ccenv peer membersrvc javaenv
71+
IMAGES = src ccenv peer membersrvc javaenv
7372

7473
all: peer membersrvc checks
7574

@@ -122,14 +121,14 @@ linter: gotools
122121
# we may later inject the binary into a different docker environment
123122
# This is necessary since we cannot guarantee that binaries built
124123
# on the host natively will be compatible with the docker env.
125-
%/bin/protoc-gen-go: build/image/base/.dummy Makefile
124+
%/bin/protoc-gen-go: Makefile
126125
@echo "Building $@"
127126
@mkdir -p $(@D)
128127
@docker run -i \
129128
--user=$(UID) \
130129
-v $(abspath vendor/github.com/golang/protobuf):/opt/gopath/src/github.com/golang/protobuf \
131130
-v $(abspath $(@D)):/opt/gopath/bin \
132-
hyperledger/fabric-baseimage go install github.com/golang/protobuf/protoc-gen-go
131+
hyperledger/fabric-baseimage:$(BASE_DOCKER_TAG) go install github.com/golang/protobuf/protoc-gen-go
133132

134133
build/bin/chaintool: Makefile
135134
@echo "Installing chaintool"
@@ -172,25 +171,19 @@ build/bin/block-listener:
172171
@echo "Binary available as $@"
173172
@touch $@
174173

175-
build/bin/%: build/image/base/.dummy $(PROJECT_FILES)
174+
build/bin/%: $(PROJECT_FILES)
176175
@mkdir -p $(@D)
177176
@echo "$@"
178177
$(CGO_FLAGS) GOBIN=$(abspath $(@D)) go install -ldflags "$(GO_LDFLAGS)" $(PKGNAME)/$(@F)
179178
@echo "Binary available as $@"
180179
@touch $@
181180

182-
# Special override for base-image.
183-
build/image/base/.dummy: $(BASEIMAGE_DEPS)
184-
@echo "Building docker base-image"
185-
@mkdir -p $(@D)
186-
@./scripts/provision/docker.sh $(BASEIMAGE_RELEASE)
187-
@touch $@
188-
189181
# Special override for src-image
190-
build/image/src/.dummy: build/image/base/.dummy $(PROJECT_FILES)
182+
build/image/src/.dummy: $(PROJECT_FILES)
191183
@echo "Building docker src-image"
192184
@mkdir -p $(@D)
193185
@cat images/src/Dockerfile.in \
186+
| sed -e 's/_BASE_TAG_/$(BASE_DOCKER_TAG)/g' \
194187
| sed -e 's/_TAG_/$(DOCKER_TAG)/g' \
195188
> $(@D)/Dockerfile
196189
@git ls-files | tar -jcT - > $(@D)/gopath.tar.bz2
@@ -202,6 +195,7 @@ build/image/src/.dummy: build/image/base/.dummy $(PROJECT_FILES)
202195
build/image/ccenv/.dummy: build/image/src/.dummy build/image/ccenv/bin/protoc-gen-go build/image/ccenv/bin/chaintool Makefile
203196
@echo "Building docker ccenv-image"
204197
@cat images/ccenv/Dockerfile.in \
198+
| sed -e 's/_BASE_TAG_/$(BASE_DOCKER_TAG)/g' \
205199
| sed -e 's/_TAG_/$(DOCKER_TAG)/g' \
206200
> $(@D)/Dockerfile
207201
docker build -t $(PROJECT_NAME)-ccenv $(@D)
@@ -216,7 +210,10 @@ build/image/ccenv/.dummy: build/image/src/.dummy build/image/ccenv/bin/protoc-ge
216210
build/image/javaenv/.dummy: Makefile $(JAVASHIM_DEPS)
217211
@echo "Building docker javaenv-image"
218212
@mkdir -p $(@D)
219-
@cat images/javaenv/Dockerfile.in > $(@D)/Dockerfile
213+
@cat images/javaenv/Dockerfile.in \
214+
| sed -e 's/_BASE_TAG_/$(BASE_DOCKER_TAG)/g' \
215+
| sed -e 's/_TAG_/$(DOCKER_TAG)/g' \
216+
> $(@D)/Dockerfile
220217
@git ls-files core/chaincode/shim/java | tar -jcT - > $(@D)/javashimsrc.tar.bz2
221218
@git ls-files protos core/chaincode/shim/table.proto settings.gradle | tar -jcT - > $(@D)/protos.tar.bz2
222219
docker build -t $(PROJECT_NAME)-javaenv $(@D)
@@ -229,6 +226,7 @@ build/image/%/.dummy: build/image/src/.dummy build/docker/bin/%
229226
@echo "Building docker $(TARGET)-image"
230227
@mkdir -p $(@D)/bin
231228
@cat images/app/Dockerfile.in \
229+
| sed -e 's/_BASE_TAG_/$(BASE_DOCKER_TAG)/g' \
232230
| sed -e 's/_TAG_/$(DOCKER_TAG)/g' \
233231
> $(@D)/Dockerfile
234232
cp build/docker/bin/$(TARGET) $(@D)/bin
@@ -240,10 +238,6 @@ build/image/%/.dummy: build/image/src/.dummy build/docker/bin/%
240238
protos: gotools
241239
./devenv/compile_protos.sh
242240

243-
base-image-clean:
244-
-docker rmi -f $(PROJECT_NAME)-baseimage
245-
-@rm -rf build/image/base ||:
246-
247241
src-image-clean: ccenv-image-clean peer-image-clean membersrvc-image-clean
248242

249243
%-image-clean:

devenv/Vagrantfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ cd #{SRCMOUNT}/devenv
2727
2828
SCRIPT
2929

30-
baseimage_release = File.read '../images/base/release'
30+
baseimage_release = File.read '../.baseimage-release'
3131

3232
Vagrant.require_version ">= 1.7.4"
3333
Vagrant.configure('2') do |config|

devenv/setup.sh

-19
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,6 @@ DEVENV_REVISION=`(cd /hyperledger/devenv; git rev-parse --short HEAD)`
4040
SCRIPT_DIR="$(readlink -f "$(dirname "$0")")"
4141
cat "$SCRIPT_DIR/failure-motd.in" >> /etc/motd
4242

43-
# Update system
44-
apt-get update -qq
45-
46-
# Prep apt-get for docker install
47-
apt-get install -y apt-transport-https ca-certificates
48-
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
49-
50-
# Add docker repository
51-
echo deb https://apt.dockerproject.org/repo ubuntu-trusty main > /etc/apt/sources.list.d/docker.list
52-
53-
# Update system
54-
apt-get update -qq
55-
5643
# Storage backend logic
5744
case "${DOCKER_STORAGE_BACKEND}" in
5845
aufs|AUFS|"")
@@ -72,9 +59,6 @@ case "${DOCKER_STORAGE_BACKEND}" in
7259
exit 1;;
7360
esac
7461

75-
# Install docker
76-
apt-get install -y linux-image-extra-$(uname -r) apparmor docker-engine
77-
7862
# Configure docker
7963
DOCKER_OPTS="-s=${DOCKER_STORAGE_BACKEND_STRING} -r=true --api-cors-header='*' -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock ${DOCKER_OPTS}"
8064
sed -i.bak '/^DOCKER_OPTS=/{h;s|=.*|=\"'"${DOCKER_OPTS}"'\"|};${x;/^$/{s||DOCKER_OPTS=\"'"${DOCKER_OPTS}"'\"|;H};x}' /etc/default/docker
@@ -85,9 +69,6 @@ usermod -a -G docker vagrant # Add vagrant user to the docker group
8569
# Test docker
8670
docker run --rm busybox echo All good
8771

88-
# Run our common setup
89-
/hyperledger/scripts/provision/host.sh
90-
9172
# Set Go environment variables needed by other scripts
9273
export GOPATH="/opt/gopath"
9374
export GOROOT="/opt/go/"

images/base/.gitignore

-1
This file was deleted.

images/base/Dockerfile.in

-5
This file was deleted.

images/base/Makefile

-50
This file was deleted.

images/base/README.md

-53
This file was deleted.

images/base/http/preseed.cfg

-34
This file was deleted.

0 commit comments

Comments
 (0)