-
Notifications
You must be signed in to change notification settings - Fork 24.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
build: move ngcontainer sources to angular/angular
These were previously at https://github.com/alexeagle/ngcontainer
- Loading branch information
Showing
3 changed files
with
134 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
FROM circleci/node:8.9.2-browsers | ||
|
||
USER root | ||
|
||
### | ||
# Java install | ||
# See https://github.com/docker-library/openjdk/blob/415b0cc42d91ef5d70597d8a24d942967728242b/8-jdk/Dockerfile | ||
# see https://bugs.debian.org/775775 | ||
# and https://github.com/docker-library/java/issues/19#issuecomment-70546872 | ||
RUN JAVA_DEBIAN_VERSION="8u131-b11-1~bpo8+1" \ | ||
&& CA_CERTIFICATES_JAVA_VERSION="20161107~bpo8+1" \ | ||
&& echo 'deb http://deb.debian.org/debian jessie-backports main' > /etc/apt/sources.list.d/jessie-backports.list \ | ||
&& apt-get update \ | ||
&& apt-get install -y \ | ||
openjdk-8-jre-headless="$JAVA_DEBIAN_VERSION" \ | ||
ca-certificates-java="$CA_CERTIFICATES_JAVA_VERSION" \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
### | ||
# Bazel install | ||
# See https://bazel.build/versions/master/docs/install-ubuntu.html#using-bazel-custom-apt-repository-recommended | ||
RUN BAZEL_VERSION="0.11.1" \ | ||
&& wget -q -O - https://bazel.build/bazel-release.pub.gpg | apt-key add - \ | ||
&& echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" > /etc/apt/sources.list.d/bazel.list \ | ||
&& apt-get update \ | ||
&& apt-get install -y bazel=$BAZEL_VERSION \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
### | ||
# Brotli compression | ||
# Not available on backports so we have to pull from Debian 9 | ||
# See https://packages.debian.org/search?keywords=brotli | ||
RUN echo "deb http://deb.debian.org/debian stretch main contrib" > /etc/apt/sources.list.d/stretch.list \ | ||
&& apt-get update \ | ||
&& apt-get install -y --no-install-recommends brotli/stretch | ||
|
||
### | ||
# Buildifier | ||
# BUILD file formatter | ||
# 'bazel clean --expunge' conserves size of the image | ||
RUN git clone https://github.com/bazelbuild/buildtools.git \ | ||
&& (cd buildtools \ | ||
&& bazel build //buildifier \ | ||
&& cp bazel-bin/buildifier/linux_amd64_stripped/buildifier /usr/local/bin/ \ | ||
&& bazel clean --expunge \ | ||
) && rm -rf buildtools | ||
|
||
### | ||
# Skylint | ||
# .bzl file linter | ||
# Follows readme at https://github.com/bazelbuild/bazel/blob/master/site/docs/skylark/skylint.md#building-the-linter | ||
# 'bazel clean --expunge' conserves size of the image | ||
RUN git clone https://github.com/bazelbuild/bazel.git \ | ||
&& (cd bazel \ | ||
&& bazel build //src/tools/skylark/java/com/google/devtools/skylark/skylint:Skylint_deploy.jar \ | ||
&& cp bazel-bin/src/tools/skylark/java/com/google/devtools/skylark/skylint/Skylint_deploy.jar /usr/local/bin \ | ||
&& bazel clean --expunge \ | ||
) && rm -rf bazel | ||
|
||
USER circleci | ||
|
||
### | ||
# Fix up npm global installation | ||
# See https://docs.npmjs.com/getting-started/fixing-npm-permissions | ||
RUN mkdir ~/.npm-global \ | ||
&& npm config set prefix '~/.npm-global' \ | ||
&& echo "export PATH=~/.npm-global/bin:$PATH" >> ~/.profile | ||
|
||
### | ||
# This version of ChromeDriver works with the Chrome version included | ||
# in the circleci/*-browsers base image above. | ||
# This variable is intended to be used by passing it as an argument to | ||
# "postinstall": "webdriver-manager update ..." | ||
ENV CHROMEDRIVER_VERSION_ARG "--versions.chrome 2.33" | ||
|
||
### | ||
# Used by some Angular integration test scripts | ||
ENV PROJECT_ROOT | ||
|
||
WORKDIR /home/circleci | ||
ENTRYPOINT ["/bin/bash", "--login"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
# ngcontainer | ||
|
||
This docker container provides everything needed to build and test Angular applications: | ||
|
||
- node 8.9.2 | ||
- npm 5.5.1 | ||
- yarn 1.3.2 | ||
- Java 8 (for Closure Compiler and Bazel) | ||
- Bazel build tool v0.11.1 - http://bazel.build | ||
- Google Chrome 63.0.3239.84 | ||
- Mozilla Firefox 47.0.1 | ||
- xvfb (virtual framebuffer) for headless testing | ||
- Brotli compression utility, making smaller files than gzip | ||
|
||
By using this, you avoid installation steps in your CI scripts and get a more consistent dev environment. | ||
|
||
## Example | ||
|
||
See https://github.com/angular/closure-demo/blob/master/.circleci/config.yml | ||
where this container is used in CircleCI. | ||
|
||
To run locally: | ||
|
||
``` | ||
$ docker run -it --rm angular/ngcontainer | ||
``` | ||
|
||
## Running tests | ||
|
||
Any program that needs to talk to a browser (eg. protractor) should be run under xvfb when executing on a headless machine like on CI. The nice way to factor this is to have your top-level test command which you run locally: | ||
|
||
``` | ||
$ yarn test | ||
``` | ||
|
||
Then in your CI configuration, you'd run | ||
|
||
``` | ||
$ xvfb-run -a yarn test | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
set -e | ||
|
||
TAG=$1 | ||
if [ -z $TAG ] | ||
then echo "usage: $0 [tag]"; exit 1 | ||
fi | ||
|
||
docker build . -t angular/ngcontainer:$TAG | ||
docker tag angular/ngcontainer:$TAG angular/ngcontainer:latest | ||
docker push angular/ngcontainer:$TAG | ||
docker push angular/ngcontainer:latest | ||
git tag -a "ngcontainer_${TAG}" -m "published to docker" | ||
git push --tags |