ci: run postgresql as a service in a separate container

This commit is contained in:
Steffen Vogel 2019-11-09 11:02:10 +01:00
parent a81dcf4889
commit a97e20b781
3 changed files with 13 additions and 84 deletions

View file

@ -1,7 +1,13 @@
services:
- postgres:latest
variables:
TEST_FOLDER: database
DOCKER_IMAGE: ${CI_REGISTRY}/acs/public/villas/web-backend-go
DOCKER_IMAGE_DEV: ${CI_REGISTRY}/acs/public/villas/web-backend-go/dev
POSTGRES_DB: testvillasdb
POSTGRES_USER: villasuser
POSTGRES_PASSWORD: villasuser
stages:
- prepare
@ -21,14 +27,6 @@ prepare:redoc:
- shell
- linux
prepare:docker-dev:
stage: prepare
script:
- docker build -f Dockerfile.dev -t $DOCKER_IMAGE_DEV .
tags:
- shell
- linux
# Stage: build
##############################################################################
@ -36,14 +34,12 @@ build:backend:
stage: build
tags:
- docker
image: ${DOCKER_IMAGE_DEV}
image: golang:1.12.9-buster
script:
- go mod tidy
- go get -u github.com/swaggo/swag/cmd/swag
- ~/go/bin/swag init -p pascalcase -g "start.go" -o "./doc/api/"
- go install github.com/swaggo/swag/cmd/swag
- swag init -p pascalcase -g "start.go" -o "./doc/api/"
- go build
dependencies:
- prepare:docker-dev
artifacts:
paths:
- doc/api/swagger.json
@ -80,9 +76,8 @@ test:all:
stage: test
tags:
- docker
image: ${DOCKER_IMAGE_DEV}
image: golang:1.12.9-buster
script:
- /etc/init.d/postgresql start
- go mod tidy
- go test $(go list ./... ) -p 1 -covermode=count -coverprofile ./testcover.txt
- go tool cover -func=testcover.txt
@ -93,12 +88,11 @@ test:database:
stage: test
tags:
- docker
image: ${DOCKER_IMAGE_DEV}
image: golang:1.12.9-buster
script:
- /etc/init.d/postgresql start
- go mod tidy
- cd ${TEST_FOLDER}
- go test -v
- go test -v -args -dbhost postgresql
dependencies:
- build:backend
@ -151,9 +145,7 @@ deploy:docker:
- docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
script:
- docker push ${DOCKER_IMAGE}
- docker push ${DOCKER_IMAGE_DEV}
dependencies:
- prepare:docker-dev
- build:docker
only:
- master

View file

@ -1,4 +1,4 @@
FROM golang:1.13.4-buster AS builder
FROM golang:1.12.9-buster AS builder
WORKDIR /go/src/app
COPY . .

View file

@ -1,63 +0,0 @@
FROM ubuntu:16.04
ARG GIT_REV=unknown
ARG GIT_BRANCH=unknown
ARG VERSION=unknown
ARG VARIANT=unknown
# Update and Upgrade
RUN apt-get update && apt-get upgrade -y
# Install dependencies
RUN apt-get install -y git ca-certificates g++ gcc libc6 libc6-dev pkg-config wget tar lsb-release
# Install Go 1.12.9
RUN cd /tmp && mkdir golang && cd golang && \
wget https://dl.google.com/go/go1.12.9.linux-amd64.tar.gz && \
tar -xvf go1.12.9.linux-amd64.tar.gz && \
mv go /usr/local && \
rm -rf /tmp/*
ENV GOROOT=/usr/local/go
ENV PATH=/usr/local/go/bin:${PATH}
RUN go version
# Add PostgreSQL Repository to Ubuntu
RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - && \
sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -sc)-pgdg main" > /etc/apt/sources.list.d/PostgreSQL.list'
RUN apt-get update && apt-get install -y postgresql-11
# Run the following commands as the ``postgres`` user
USER postgres
RUN /etc/init.d/postgresql start &&\
psql --command "CREATE USER villasuser WITH SUPERUSER PASSWORD 'villasuser';" && \
createdb -O villasuser testvillasdb && \
createdb -O villasuser villasdb
# Add ``listen_addresses`` to ``/etc/postgresql/11/main/postgresql.conf``
RUN echo "listen_addresses='*'" >> /etc/postgresql/11/main/postgresql.conf
# Expose the PostgreSQL port
EXPOSE 5432
WORKDIR /villasweb
ENTRYPOINT bash
LABEL \
org.label-schema.schema-version="1.0" \
org.label-schema.name="VILLASweb" \
org.label-schema.license="GPL-3.0" \
org.label-schema.vcs-ref="$GIT_REV" \
org.label-schema.vcs-branch="$GIT_BRANCH" \
org.label-schema.version="$VERSION" \
org.label-schema.variant="$VARIANT" \
org.label-schema.vendor="Institute for Automation of Complex Power Systems, RWTH Aachen University" \
org.label-schema.author.name="Sonja Happ" \
org.label-schema.author.email="sonja.happ@eonerc.rwth-aachen.de" \
org.label-schema.description="A image containing all build-time dependencies for VILLASweb-backend-go based on Fedora" \
org.label-schema.url="http://fein-aachen.org/projects/villas-web/" \
org.label-schema.vcs-url="https://git.rwth-aachen.de/public/villas/web-backend-go"