From cbf81b13a7a5d735492eefb767953330cb43597b Mon Sep 17 00:00:00 2001 From: Chris Allen Date: Tue, 2 Oct 2018 22:51:24 -0500 Subject: [PATCH 1/4] Docker respin, GitLab CI --- .gitlab-ci.yml | 21 +++++++++++++++++++ .travis.yml | 55 -------------------------------------------------- Dockerfile | 29 +++++++++++++++++++------- Makefile | 12 +++++++---- 4 files changed, 51 insertions(+), 66 deletions(-) create mode 100644 .gitlab-ci.yml delete mode 100644 .travis.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..4e31a2f --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,21 @@ +image: registry.gitlab.com/lorepub/moot/moot-build-image:latest + +stages: + - build + +cache: + key: global-cache + # key: ${CI_COMMIT_REF_SLUG} + paths: + - node_modules/ + - .stack-work/ + - /root/.stack/ + +build: + stage: build + script: | + npm link gulp + cd frontend && npm install + make build + tags: + - moot diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index b9d92d2..0000000 --- a/.travis.yml +++ /dev/null @@ -1,55 +0,0 @@ -sudo: false -language: generic - -services: - - postgresql - -addons: - apt: - packages: - - libgmp-dev - - postgresql-client - - postgresql-server-dev-all - - postgresql: "9.6" - -before_install: - - cd frontend - - npm install - - cd .. - -install: - # stack - - mkdir -p ~/.local/bin - - travis_retry curl -L https://github.com/commercialhaskell/stack/releases/download/v1.7.1/stack-1.7.1-linux-x86_64.tar.gz | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack' - - export PATH=~/.local/bin:$PATH - - stack --no-terminal --version - - stack install happy - - stack install alex - # backend - - stack install yesod-bin - # test suite - - stack install hspec-discover - # database - - echo "CREATE USER moot WITH PASSWORD 'moot';" | psql postgres - - createdb -O moot moot - -# build frontend -before_script: - - cd frontend - - npm run-script build - - cd .. - -script: - - stack setup - - stack update - - stack build --fast -j1 - - stack test --fast - -cache: - timeout: 6000 - directories: - - $HOME/.cabal - - $HOME/.ghc - - $HOME/.stack - - .stack-work/ diff --git a/Dockerfile b/Dockerfile index be5eea8..9106bd7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,22 +1,37 @@ FROM ubuntu:18.04 -# FROM fpco/stack-build:lts-12.2 ENV LANG=C.UTF-8 \ LC_ALL=C.UTF-8 \ - PATH=/moot/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin RUN apt-get update && \ apt-get install -y wget curl gnupg2 postgresql-server-dev-all postgresql-client && \ curl -sSL https://get.haskellstack.org/ | sh && \ rm -rf /var/lib/apt/lists/* -# setup node for building frontend -WORKDIR / +RUN stack setup --resolver lts-12.2 -RUN curl -sL https://deb.nodesource.com/setup_8.x -o nodesource_setup.sh && \ +RUN mkdir -p /builds/lorepub/moot +WORKDIR /builds/lorepub/moot + +RUN curl -sL https://deb.nodesource.com/setup_9.x -o nodesource_setup.sh && \ bash nodesource_setup.sh && \ apt-get install -y nodejs -WORKDIR /moot +COPY frontend/package.json package.json + +RUN npm install -g gulp + +RUN addgroup --gid 1000 docker && \ + adduser --uid 1000 --ingroup docker --home /home/docker --shell /bin/sh --disabled-password --gecos "" docker -ENV HOME /moot +# install fixuid +RUN USER=docker && \ + GROUP=docker && \ + curl -SsL https://github.com/boxboat/fixuid/releases/download/v0.1/fixuid-0.1-linux-amd64.tar.gz | tar -C /usr/local/bin -xzf - && \ + chown root:root /usr/local/bin/fixuid && \ + chmod 4755 /usr/local/bin/fixuid && \ + mkdir -p /etc/fixuid && \ + printf "user: $USER\ngroup: $GROUP\n" > /etc/fixuid/config.yml +USER docker:docker +ENTRYPOINT ["fixuid"] diff --git a/Makefile b/Makefile index 4392d73..2f09ee5 100644 --- a/Makefile +++ b/Makefile @@ -106,10 +106,14 @@ fixtures: build truncate-tables: build stack exec -- truncate +build-image: + sudo docker build -t moot-build-image . + sudo docker tag moot-build-image:latest registry.gitlab.com/lorepub/moot/moot-build-image:latest + docker-shell: - docker exec -e COLUMNS="`tput cols`" -e LINES="`tput lines`" -it $$(docker-compose ps -q moot_app) /bin/bash -c "reset -w && /bin/bash" + docker run -u 1000:1000 -v `pwd`:/builds/lorepub/moot -it moot-build-image /bin/bash -docker-pgshell: - docker exec -e COLUMNS="`tput cols`" -e LINES="`tput lines`" -it $$(docker-compose ps -q postgres) /bin/bash -c "reset -w && /bin/bash" +push-image: + sudo docker push registry.gitlab.com/lorepub/moot/moot-build-image -.PHONY : build build-dirty run install ghci test test-ghci ghcid dev-deps +.PHONY: build build-dirty run install ghci test test-ghci ghcid dev-deps build-image push-image From d22fddea1f65e57fd49ca005e156254315112a0e Mon Sep 17 00:00:00 2001 From: Chris Allen Date: Tue, 2 Oct 2018 23:13:31 -0500 Subject: [PATCH 2/4] just run make build --- .gitlab-ci.yml | 2 -- Dockerfile | 14 -------------- Dockerfile.dev | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 16 deletions(-) create mode 100644 Dockerfile.dev diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4e31a2f..736e2f1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -14,8 +14,6 @@ cache: build: stage: build script: | - npm link gulp - cd frontend && npm install make build tags: - moot diff --git a/Dockerfile b/Dockerfile index 9106bd7..ac54388 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,17 +21,3 @@ RUN curl -sL https://deb.nodesource.com/setup_9.x -o nodesource_setup.sh && \ COPY frontend/package.json package.json RUN npm install -g gulp - -RUN addgroup --gid 1000 docker && \ - adduser --uid 1000 --ingroup docker --home /home/docker --shell /bin/sh --disabled-password --gecos "" docker - -# install fixuid -RUN USER=docker && \ - GROUP=docker && \ - curl -SsL https://github.com/boxboat/fixuid/releases/download/v0.1/fixuid-0.1-linux-amd64.tar.gz | tar -C /usr/local/bin -xzf - && \ - chown root:root /usr/local/bin/fixuid && \ - chmod 4755 /usr/local/bin/fixuid && \ - mkdir -p /etc/fixuid && \ - printf "user: $USER\ngroup: $GROUP\n" > /etc/fixuid/config.yml -USER docker:docker -ENTRYPOINT ["fixuid"] diff --git a/Dockerfile.dev b/Dockerfile.dev new file mode 100644 index 0000000..9106bd7 --- /dev/null +++ b/Dockerfile.dev @@ -0,0 +1,37 @@ +FROM ubuntu:18.04 + +ENV LANG=C.UTF-8 \ + LC_ALL=C.UTF-8 \ + PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + +RUN apt-get update && \ + apt-get install -y wget curl gnupg2 postgresql-server-dev-all postgresql-client && \ + curl -sSL https://get.haskellstack.org/ | sh && \ + rm -rf /var/lib/apt/lists/* + +RUN stack setup --resolver lts-12.2 + +RUN mkdir -p /builds/lorepub/moot +WORKDIR /builds/lorepub/moot + +RUN curl -sL https://deb.nodesource.com/setup_9.x -o nodesource_setup.sh && \ + bash nodesource_setup.sh && \ + apt-get install -y nodejs + +COPY frontend/package.json package.json + +RUN npm install -g gulp + +RUN addgroup --gid 1000 docker && \ + adduser --uid 1000 --ingroup docker --home /home/docker --shell /bin/sh --disabled-password --gecos "" docker + +# install fixuid +RUN USER=docker && \ + GROUP=docker && \ + curl -SsL https://github.com/boxboat/fixuid/releases/download/v0.1/fixuid-0.1-linux-amd64.tar.gz | tar -C /usr/local/bin -xzf - && \ + chown root:root /usr/local/bin/fixuid && \ + chmod 4755 /usr/local/bin/fixuid && \ + mkdir -p /etc/fixuid && \ + printf "user: $USER\ngroup: $GROUP\n" > /etc/fixuid/config.yml +USER docker:docker +ENTRYPOINT ["fixuid"] From 525af1ba9b042999f65445abe8f8db63d3475fab Mon Sep 17 00:00:00 2001 From: Chris Allen Date: Tue, 2 Oct 2018 23:19:46 -0500 Subject: [PATCH 3/4] Install frontend deps --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 736e2f1..2e2a6d4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -14,6 +14,6 @@ cache: build: stage: build script: | - make build + make frontend-deps build tags: - moot From 74a72f03403163aec801a84a398586c3feaa6e36 Mon Sep 17 00:00:00 2001 From: Chris Allen Date: Tue, 2 Oct 2018 23:50:46 -0500 Subject: [PATCH 4/4] Dockerfiles --- Dockerfile | 5 +++++ Dockerfile.dev | 2 ++ 2 files changed, 7 insertions(+) diff --git a/Dockerfile b/Dockerfile index ac54388..11134e1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,6 +11,11 @@ RUN apt-get update && \ RUN stack setup --resolver lts-12.2 +RUN stack install --resolver lts-12.2 alex happy + +RUN stack build --resolver lts-12.2 yesod lens lens-aeson pandoc bcrypt email-validate errors basic-prelude xml-types foreign-store QuickCheck base-compat unix-compat HTTP-4000 temporary cpphs iproute wai \ + && stack clean + RUN mkdir -p /builds/lorepub/moot WORKDIR /builds/lorepub/moot diff --git a/Dockerfile.dev b/Dockerfile.dev index 9106bd7..e8103b6 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -11,6 +11,8 @@ RUN apt-get update && \ RUN stack setup --resolver lts-12.2 +RUN stack install --resolver lts-12.2 alex happy + RUN mkdir -p /builds/lorepub/moot WORKDIR /builds/lorepub/moot