Docker improvements (#571)

- Copy the current checkout to the Dockerfile.
- Add .dockerignore to exclude files while copying.
- Test tip-of-tree build within CI.
- Run the test suite outside the Docker image.
- Perform extra sanity tests.
- Switch to make commands for CircleCI.
- Improve Docker README.
This commit is contained in:
Kleis Auke Wolthuizen
2020-09-02 19:50:52 +02:00
committed by GitHub
parent f6c9e453f8
commit 645d276b5c
6 changed files with 86 additions and 63 deletions

View File

@@ -1,21 +1,28 @@
#!/usr/bin/env make
# A Makefile to build, test, tag and publish the Emscripten SDK Docker container.
# Emscripten version to build: Should match the version that has been already released.
# i.e.: 1.38.45, 1.38.45-upstream
# i.e.: 1.39.18
version =
alias =
image_name ?= emscripten/emsdk
.TEST:
ifndef version
$(error argument 'version' is not set. Please call `make version=SOME_VERSION ...`)
endif
build: .TEST
docker build --network host --build-arg=EMSCRIPTEN_VERSION=${version} --tag emscripten/emsdk:${version} .
build: Dockerfile .TEST
cd .. && docker build --network host --build-arg=EMSCRIPTEN_VERSION=${version} -t ${image_name}:${version} -f docker/$< .
test: test_dockerimage.sh .TEST
# test as non-root
docker run --rm -u `id -u`:`id -g` -w /emsdk/docker --net=host ${image_name}:${version} \
bash $<
push: .TEST
docker push emscripten/emsdk:${version}
docker push ${image_name}:${version}
ifdef alias
docker tag emscripten/emsdk:${version} emscripten/emsdk:${alias}
docker push emscripten/emsdk:${alias}
docker tag ${image_name}:${version} ${image_name}:${alias}
docker push ${image_name}:${alias}
endif