Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
6271587
bump stackage (16.14 -> 18.18)
fisx Nov 30, 2021
b97e697
...
fisx Dec 1, 2021
0d21f18
Merge remote-tracking branch 'origin/develop' into bump-stackage
fisx Dec 7, 2021
33f6f30
...
fisx Dec 7, 2021
84be2c1
Upgrade nix and stack
akshaymankar Dec 7, 2021
5c1d2bf
Avoid using deprecated Data.ByteString.Lazy.Builder
akshaymankar Dec 7, 2021
3f97341
Auto derive MonadUnliftIO instead of using askUnliftIO
akshaymankar Dec 7, 2021
fb5127d
Use openFile from Imports
akshaymankar Dec 7, 2021
40efbba
Adapt for the new generic-random
akshaymankar Dec 7, 2021
db5979c
Adapt for new swagger2
akshaymankar Dec 7, 2021
87afa29
Adapt for new random
akshaymankar Dec 7, 2021
9dbe88f
Adapt for new HaskellNet
akshaymankar Dec 7, 2021
98de4dc
Deal with -Wunused-record-wildcards
akshaymankar Dec 7, 2021
c4f94ae
move-team: HLint
akshaymankar Dec 7, 2021
6c4af37
Adapt for new quickcheck-state-machine
akshaymankar Dec 7, 2021
55b0c50
Remvoe redandant import
akshaymankar Dec 7, 2021
1c8970f
THIS EMPTY COMMIT SHOW MY HAPPINESS THAT EVERYTHING COMPILES!!
akshaymankar Dec 7, 2021
6377780
Remvoe accidental saml2-web-sso
akshaymankar Dec 7, 2021
59c7d7f
Use merged commit of saml2-web-sso
akshaymankar Dec 7, 2021
ff45952
zauth: Update cargoSha256
akshaymankar Dec 7, 2021
b710c74
Dockerfile.prebuilder: Bump ghc and stack versions
akshaymankar Dec 8, 2021
1360219
Add integer-gmp to stack.yaml
akshaymankar Dec 8, 2021
6c48677
Dockerfile.prebuilder: Add binutils-gold
akshaymankar Dec 8, 2021
7ddefe4
Start docker build with ubuntu:20.04
akshaymankar Dec 8, 2021
07d71e3
Fix ubuntu dockerfiles
akshaymankar Dec 8, 2021
e1c98e8
ubuntu/docker: Install pkg-config to install cryptobox
akshaymankar Dec 8, 2021
36e5e4b
ubuntu/docker: Ensure installation is noninteractive
akshaymankar Dec 8, 2021
0876da4
ubuntu/docker: Use new package for libleveldb1
akshaymankar Dec 8, 2021
df63641
ubutu/dockerfile.deps: Better apt package names
akshaymankar Dec 8, 2021
a74c51b
ubuntu/dockefile.prebuilder: Better package names
akshaymankar Dec 8, 2021
9790536
ubuntu/dockerfile: More noninteractive frontend
akshaymankar Dec 8, 2021
5a2b0fe
Even more noninteractive apt installs
akshaymankar Dec 8, 2021
e3c4750
ubuntu/docker: Add rest of the dockerfiles
akshaymankar Dec 8, 2021
2550cd5
ubuntu/docker: set locale
akshaymankar Dec 8, 2021
67f0318
Fix dockerfile
akshaymankar Dec 8, 2021
f39ea0f
ubuntu/docker: Add missing libs
akshaymankar Dec 9, 2021
276c405
ubuntu/docker: Add libsodium
akshaymankar Dec 9, 2021
07eb13c
ubuntu/docker: Add libxml2
akshaymankar Dec 9, 2021
b32442b
ubuntu/docker: Add protobuf-compiler
akshaymankar Dec 9, 2021
8160340
alpine/docker: Patch stack.yaml to use integer-simple, upgrade alpine
akshaymankar Dec 9, 2021
cc65eba
alpine/docker: Better patch not dependant on yq
akshaymankar Dec 9, 2021
64e713b
alpine/docker: Add slash
akshaymankar Dec 9, 2021
1660949
Go back to alpine 3.12
akshaymankar Dec 9, 2021
2448eb3
alpine/docker: no need for yq
akshaymankar Dec 9, 2021
b52ed58
alpine/docker: Add ghc boot dependencies
akshaymankar Dec 9, 2021
fc74fbb
ubuntu/docker: Do not build haddocks
akshaymankar Dec 9, 2021
ba1be16
dev-packages.nix: Fix metadata about stack
akshaymankar Dec 9, 2021
9d03ba6
Merge branch 'develop' into bump-stackage
akshaymankar Jan 3, 2022
71cf980
Update cabal.project
akshaymankar Jan 3, 2022
87e804d
build/ubuntu/Dockerfile.deps: Only install geoip-database
akshaymankar Jan 3, 2022
2075467
build/ubuntu/Dockerfile.deps: Install netbase
akshaymankar Jan 3, 2022
4c249a3
build/ubuntu/Dockerfile.deps: Remove apt lists to reduce image size
akshaymankar Jan 3, 2022
b1e31ca
Make Ubuntu builds as default for all haskell components
akshaymankar Jan 5, 2022
c34abc2
Add changelog
akshaymankar Jan 5, 2022
7f68361
build/ubuntu/Dockerfile.executable: Add the comment back
akshaymankar Jan 5, 2022
76a2485
dev-packages.nix: De-duplicate list of C library out deps
akshaymankar Jan 5, 2022
fe268ca
Merge branch 'develop' into bump-stackage
akshaymankar Jan 10, 2022
1dc3856
Regen stack.lock
akshaymankar Jan 10, 2022
4784b74
Merge branch 'develop' into bump-stackage
fisx Jan 10, 2022
8c96a09
Fixup
fisx Jan 10, 2022
d02fb0d
build/ubuntu/intermediate: Add deleted comment
akshaymankar Jan 10, 2022
25cc49d
Add changelog entry about nixpkgs bump
akshaymankar Jan 10, 2022
26a2403
ubuntu-builds: Use ghcup to install stack
akshaymankar Jan 10, 2022
9eafe75
ubuntu-builds: Fix prebuilder dockerfile
akshaymankar Jan 10, 2022
92f3c5d
Merge branch 'develop' into bump-stackage
akshaymankar Jan 10, 2022
d6c9049
wire-api/Arbitrary: Delete dead code
akshaymankar Jan 10, 2022
8bb5a9f
wire-api/Arbitrary: Delete redundant import
akshaymankar Jan 10, 2022
8cd724f
Merge branch 'develop' into bump-stackage
fisx Jan 13, 2022
04c1ae8
Merge branch 'develop' into bump-stackage
akshaymankar Jan 17, 2022
a60c7cd
Downgrade nixpkgs for HLS 1.4
akshaymankar Jan 17, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -190,39 +190,39 @@ i-%:
.PHONY: docker-prebuilder
docker-prebuilder:
# `docker-prebuilder` needs to be built or pulled only once (unless native dependencies change)
$(MAKE) -C build/alpine prebuilder
$(MAKE) -C build/ubuntu prebuilder

.PHONY: docker-deps
docker-deps:
# `docker-deps` needs to be built or pulled only once (unless native dependencies change)
$(MAKE) -C build/alpine deps
$(MAKE) -C build/ubuntu deps

.PHONY: docker-builder
docker-builder:
# `docker-builder` needs to be built or pulled only once (unless native dependencies change)
$(MAKE) -C build/alpine builder
$(MAKE) -C build/ubuntu builder

.PHONY: docker-intermediate
docker-intermediate:
# `docker-intermediate` needs to be built whenever code changes - this essentially runs `stack clean && stack install` on the whole repo
docker build -t $(DOCKER_USER)/alpine-intermediate:$(DOCKER_TAG) -f build/alpine/Dockerfile.intermediate --build-arg builder=$(DOCKER_USER)/alpine-builder:develop --build-arg deps=$(DOCKER_USER)/alpine-deps:develop .;
docker tag $(DOCKER_USER)/alpine-intermediate:$(DOCKER_TAG) $(DOCKER_USER)/alpine-intermediate:latest;
if test -n "$$DOCKER_PUSH"; then docker login -u $(DOCKER_USERNAME) -p $(DOCKER_PASSWORD); docker push $(DOCKER_USER)/alpine-intermediate:$(DOCKER_TAG); docker push $(DOCKER_USER)/alpine-intermediate:latest; fi;
docker build -t $(DOCKER_USER)/ubuntu20-intermediate:$(DOCKER_TAG) -f build/ubuntu/Dockerfile.intermediate --build-arg builder=$(DOCKER_USER)/ubuntu20-builder:develop --build-arg deps=$(DOCKER_USER)/ubuntu20-deps:develop .;
docker tag $(DOCKER_USER)/ubuntu20-intermediate:$(DOCKER_TAG) $(DOCKER_USER)/ubuntu20-intermediate:latest;
if test -n "$$DOCKER_PUSH"; then docker login -u $(DOCKER_USERNAME) -p $(DOCKER_PASSWORD); docker push $(DOCKER_USER)/ubuntu20-intermediate:$(DOCKER_TAG); docker push $(DOCKER_USER)/ubuntu20-intermediate:latest; fi;

.PHONY: docker-exe-%
docker-exe-%:
docker image ls | grep $(DOCKER_USER)/alpine-deps > /dev/null || (echo "'make docker-deps' required.", exit 1)
docker image ls | grep $(DOCKER_USER)/alpine-intermediate > /dev/null || (echo "'make docker-intermediate' required."; exit 1)
docker build -t $(DOCKER_USER)/"$*":$(DOCKER_TAG) -f build/alpine/Dockerfile.executable --build-arg executable="$*" --build-arg intermediate=$(DOCKER_USER)/alpine-intermediate --build-arg deps=$(DOCKER_USER)/alpine-deps .
docker image ls | grep $(DOCKER_USER)/ubuntu20-deps > /dev/null || (echo "'make docker-deps' required.", exit 1)
docker image ls | grep $(DOCKER_USER)/ubuntu20-intermediate > /dev/null || (echo "'make docker-intermediate' required."; exit 1)
docker build -t $(DOCKER_USER)/"$*":$(DOCKER_TAG) -f build/ubuntu/Dockerfile.executable --build-arg executable="$*" --build-arg intermediate=$(DOCKER_USER)/ubuntu20-intermediate --build-arg deps=$(DOCKER_USER)/ubuntu20-deps .
docker tag $(DOCKER_USER)/"$*":$(DOCKER_TAG) $(DOCKER_USER)/"$*":latest
if test -n "$$DOCKER_PUSH"; then docker login -u $(DOCKER_USERNAME) -p $(DOCKER_PASSWORD); docker push $(DOCKER_USER)/"$*":$(DOCKER_TAG); docker push $(DOCKER_USER)/"$*":latest; fi;

.PHONY: docker-services
docker-services:
# make docker-services doesn't compile, only makes small images out of the `docker-intermediate` image
# to recompile, run `docker-intermediate` first.
docker image ls | grep $(DOCKER_USER)/alpine-deps > /dev/null || (echo "'make docker-deps' required.", exit 1)
docker image ls | grep $(DOCKER_USER)/alpine-intermediate > /dev/null || (echo "'make docker-intermediate' required."; exit 1)
docker image ls | grep $(DOCKER_USER)/ubuntu20-deps > /dev/null || (echo "'make docker-deps' required.", exit 1)
docker image ls | grep $(DOCKER_USER)/ubuntu20-intermediate > /dev/null || (echo "'make docker-intermediate' required."; exit 1)
# `make -C services/brig docker` == `make docker-exe-brig docker-exe-brig-integration docker-exe-brig-schema docker-exe-brig-index`
$(MAKE) -C services/brig docker
$(MAKE) -C services/gundeck docker
Expand All @@ -236,10 +236,10 @@ docker-services:

DOCKER_DEV_NETWORK := --net=host
DOCKER_DEV_VOLUMES := -v `pwd`:/wire-server
DOCKER_DEV_IMAGE := quay.io/wire/alpine-builder:$(DOCKER_TAG)
DOCKER_DEV_IMAGE := quay.io/wire/ubuntu20-builder:$(DOCKER_TAG)
.PHONY: run-docker-builder
run-docker-builder:
@echo "if this does not work, consider 'docker pull', 'docker tag', or 'make -C build-alpine builder'."
@echo "if this does not work, consider 'docker pull', 'docker tag', or 'make -C build/ubuntu builder'."
docker run --workdir /wire-server -it $(DOCKER_DEV_NETWORK) $(DOCKER_DEV_VOLUMES) --rm $(DOCKER_DEV_IMAGE) /bin/bash

.PHONY: git-add-cassandra-schema
Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,22 +108,22 @@ For building nginz, see [services/nginz/README.md](services/nginz/README.md)

#### 2. Use docker

*If you don't wish to build all docker images from scratch (e.g. the `alpine-builder` takes a very long time), ready-built images can be downloaded from [here](https://quay.io/organization/wire).*
*If you don't wish to build all docker images from scratch (e.g. the `ubuntu20-builder` takes a very long time), ready-built images can be downloaded from [here](https://quay.io/organization/wire).*

If you wish to build your own docker images, you need [docker version >= 17.05](https://www.docker.com/) and [`make`](https://www.gnu.org/software/make/). Then,

```bash
# optionally:
# make docker-builder # if you don't run this, it pulls the alpine-builder image from quay.io
# make docker-builder # if you don't run this, it pulls the ubuntu20-builder image from quay.io
make docker-deps docker-intermediate docker-services

# subsequent times, after changing code, if you wish to re-create docker images, it's sufficient to
make docker-intermediate docker-services
```

will, eventually, have built a range of docker images. Make sure to [give Docker enough RAM](https://github.com/wireapp/wire-server/issues/562); if you see `make: *** [builder] Error 137`, it might be a sign that the build ran out of memory. You can also mix and match – e.g. pull the [`alpine-builder`](https://quay.io/repository/wire/alpine-builder?tab=tags) image and build the rest locally.
will, eventually, have built a range of docker images. Make sure to [give Docker enough RAM](https://github.com/wireapp/wire-server/issues/562); if you see `make: *** [builder] Error 137`, it might be a sign that the build ran out of memory. You can also mix and match – e.g. pull the [`ubuntu20-builder`](https://quay.io/repository/wire/ubuntu20-builder?tab=tags) image and build the rest locally.

See the `Makefile`s and `Dockerfile`s, as well as [build/alpine/README.md](build/alpine/README.md) for details.
See the `Makefile`s and `Dockerfile`s, as well as [build/ubuntu/README.md](build/ubuntu/README.md) for details.

### How to run integration tests

Expand Down
31 changes: 0 additions & 31 deletions build/alpine/Dockerfile.deps

This file was deleted.

26 changes: 0 additions & 26 deletions build/alpine/Dockerfile.fast-intermediate

This file was deleted.

54 changes: 0 additions & 54 deletions build/alpine/Dockerfile.prebuilder

This file was deleted.

23 changes: 0 additions & 23 deletions build/alpine/Makefile

This file was deleted.

10 changes: 0 additions & 10 deletions build/alpine/ghc/build.mk

This file was deleted.

10 changes: 0 additions & 10 deletions build/alpine/ghc/config.yaml

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# Requires docker >= 17.05 (requires support for multi-stage builds)
ARG prebuilder=quay.io/wire/alpine-prebuilder
ARG prebuilder=quay.io/wire/ubuntu20-prebuilder

FROM ${prebuilder}
WORKDIR /
Expand All @@ -18,9 +17,9 @@ RUN set -x && \
cd /wire-server && \
stack update && \
echo "allow-different-user: true" >> /root/.stack/config.yaml && \
stack build --haddock --dependencies-only haskell-src-exts && \
stack build --haddock --no-haddock-hyperlink-source haskell-src-exts && \
stack build --pedantic --haddock --test --no-run-tests --bench --no-run-benchmarks --dependencies-only -j${THREADS} && \
stack build --dependencies-only haskell-src-exts && \
stack build haskell-src-exts && \
stack build --pedantic --test --no-run-tests --bench --no-run-benchmarks --dependencies-only -j${THREADS} && \
stack install ormolu && \
cd / && \
# we run the build only to cache the built source in /root/.stack, we can remove the source code itself
Expand Down
33 changes: 33 additions & 0 deletions build/ubuntu/Dockerfile.deps
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
FROM ubuntu:20.04 as cryptobox-builder

# compile cryptobox-c
RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get install -y cargo file libsodium-dev git pkg-config && \
cd /tmp && \
git clone https://github.com/wireapp/cryptobox-c.git && \
cd cryptobox-c && \
export SODIUM_USE_PKG_CONFIG=1 && \
cargo build --release

# Minimal dependencies for ubuntu-compiled, dynamically linked wire-server Haskell services
FROM ubuntu:20.04

COPY --from=cryptobox-builder /tmp/cryptobox-c/target/release/libcryptobox.so /usr/lib

RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get install -y \
libsodium23 \
libssl1.1 \
libgmp10 \
libffi7 \
libicu66 \
geoip-database \
ca-certificates \
dumb-init \
libxml2 \
libncurses6 \
zlib1g \
netbase && \
rm -rf /var/lib/apt/lists/*
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,9 @@
# Requires to have created the wire-server-builder and wire-server-deps docker images (run `make` in this directory)
# Usage example:
# (from wire-server root directory)
# export EXECUTABLE=galley-schema; docker build -t $EXECUTABLE -f build/alpine/Dockerfile.executable --build-arg executable=$EXECUTABLE .

ARG intermediate=quay.io/wire/alpine-intermediate
ARG deps=quay.io/wire/alpine-deps
# export EXECUTABLE=galley-schema; docker build -t $EXECUTABLE -f build/ubuntu/Dockerfile.executable --build-arg executable=$EXECUTABLE .
ARG intermediate=quay.io/wire/ubuntu20-intermediate
ARG deps=quay.io/wire/ubuntu20-deps

#--- Intermediate stage ---
FROM ${intermediate} as intermediate
Expand Down
18 changes: 18 additions & 0 deletions build/ubuntu/Dockerfile.fast-intermediate
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
ARG builder=quay.io/wire/ubuntu20-builder
ARG deps=quay.io/wire/ubuntu-deps

#--- Builder stage ---
FROM ${builder} as builder

WORKDIR /wire-server/

COPY . /wire-server/

RUN make clean fast

#--- Minified stage ---
FROM ${deps}

COPY --from=builder /wire-server/dist/ /dist/
# brig also needs some templates.
COPY --from=builder /wire-server/services/brig/deb/opt/brig/templates/ /dist/templates/
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
# Produces intermediate docker image with all executables under /dist

# Requires docker version >= 17.05 (requires support for multi-stage builds)
# Requires to have created the wire-server-builder and wire-server-deps docker images (run `make` in this directory)
# Usage example:
# (from wire-server root directory)
# docker build -f build/alpine/Dockerfile.intermediate .
# docker build -f build/alpine/Dockerfile.intermediate

ARG builder=quay.io/wire/alpine-builder
ARG deps=quay.io/wire/alpine-deps
ARG builder=quay.io/wire/ubuntu20-builder
ARG deps=quay.io/wire/ubuntu20-deps

#--- Builder stage ---
FROM ${builder} as builder
Expand Down
Loading