From 2e8f01b7fcd5f9fccede758770ff1829d85136de Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sun, 2 Jul 2017 20:39:58 +0200 Subject: [PATCH] deploy packages and Docker images automatically --- .gitlab-ci.yml | 98 ++++++++++++++++++++++++++------------------------ Dockerfile | 16 ++++++--- Dockerfile.dev | 2 +- 3 files changed, 64 insertions(+), 52 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6f2633b59..09e6b0327 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,6 +10,7 @@ stages: - build - test - deploy + - docker # For some reason, GitLab CI prunes the contents of the submodules so we need to restore them. before_script: @@ -32,11 +33,12 @@ docker-dev: # Stage: build ############################################################################## -build: +build:source: stage: build script: - make artifacts: + expire_in: 1 week name: "${CI_PROJECT_NAME}-${CI_BUILD_REF}" paths: - build/release/ @@ -44,7 +46,7 @@ build: tags: - docker -docs: +build:docs: stage: build artifacts: name: "${CI_PROJECT_NAME}-doc-${CI_BUILD_REF}" @@ -56,17 +58,15 @@ docs: tags: - docker -packages: +build:packages: stage: build before_script: - dnf -y config-manager --add-repo https://$DEPLOY_USER:$DEPLOY_PASS@$DEPLOY_HOST/packages/villas.repo - - dnf -y --refresh install libwebsockets-devel libxil-devel + - dnf -y --refresh install openssl-devel libconfig-devel libnl3-devel libcurl-devel jansson-devel libxil-devel libwebsockets-devel zeromq-devel nanomsg-devel script: - make rpm-villas-node - only: - - tags - - triggers artifacts: + expire_in: 1 week name: "${CI_PROJECT_NAME}-packages-${CI_BUILD_REF}" paths: - build/release/packaging/*.tar.gz @@ -79,7 +79,7 @@ packages: # Stage: test ############################################################################## -coverage: +test:coverage: stage: test script: - make coverage COVERAGE=1 @@ -94,20 +94,20 @@ coverage: tags: - docker -unit: +test:unit: stage: test dependencies: - - build + - build:source script: - make run-unit-tests image: $DOCKER_IMAGE_DEV tags: - docker -integration: +test:integration: stage: test dependencies: - - build + - build:source script: - make run-integration-tests artifacts: @@ -119,51 +119,37 @@ integration: tags: - docker +test:valgrind: + stage: test + script: + - make run-valgrind + dependencies: + - build:source + allow_failure: true + image: $DOCKER_IMAGE_DEV + tags: + - docker # Stage: deliver ############################################################################## -docker: - stage: deploy - before_script: -# - docker login -u $DOCKER_USER -p $DOCKER_PASS -e $DOCKER_EMAIL $DOCKER_REGISTRY - script: - - make docker - - make deploy-docker - dependencies: - - packages - only: - - tags - tags: - - shell - - linux - -website: - stage: deploy - script: - - rsync -r web/ $DEPLOY_USER@$DEPLOY_HOST:$DEPLOY_PATH/ - only: - - develop - tags: - - villas-deploy - -deliver-web: +deploy:web: stage: deploy script: - ssh $DEPLOY_USER@$DEPLOY_HOST mkdir -p $DEPLOY_PATH/{coverage,doc}/$CI_BUILD_REF_NAME/ - rsync $RSYNC_OPTS build/release-coverage/coverage/ $DEPLOY_USER@$DEPLOY_HOST:$DEPLOY_PATH/coverage/$CI_BUILD_REF_NAME/ - rsync $RSYNC_OPTS build/release/doc/html/ $DEPLOY_USER@$DEPLOY_HOST:$DEPLOY_PATH/doc/$CI_BUILD_REF_NAME/ + - rsync $RSYNC_OPTS web/ $DEPLOY_USER@$DEPLOY_HOST:$DEPLOY_PATH/ dependencies: - - docs - - coverage - - packages + - build:docs + - build:packages + - test:coverage only: - develop - - master tags: - villas-deploy -deliver-packages: +deploy:packages: stage: deploy script: - ssh $DEPLOY_USER@$DEPLOY_HOST mkdir -p $DEPLOY_PATH/{dist,../packages} @@ -171,9 +157,29 @@ deliver-packages: - rsync $RSYNC_OPTS build/release/packaging/*.tar.gz $DEPLOY_USER@$DEPLOY_HOST:$DEPLOY_PATH/dist/ - ssh $DEPLOY_USER@$DEPLOY_HOST createrepo $DEPLOY_PATH/../packages dependencies: - - packages - only: - - tags + - build:packages tags: - villas-deploy - + + +# Stage: docker +############################################################################## + +deploy:docker-dev: + stage: docker + script: + - make deploy-docker-dev + tags: + - shell + - linux + +deploy:docker: + stage: docker + script: + - make docker + - make deploy-docker + dependencies: + - build:packages + tags: + - shell + - linux diff --git a/Dockerfile b/Dockerfile index e5936168d..7409fe147 100644 --- a/Dockerfile +++ b/Dockerfile @@ -39,12 +39,18 @@ RUN dnf -y update && \ RUN dnf -y update && \ dnf -y install \ iproute \ - openssl \ - kernel-modules-extra + openssl + +# Some of the dependencies are only available in our own repo +ADD https://villas.fein-aachen.org/packages/villas.repo /etc/yum.repos.d/ -# Install our own RPMs -COPY build/release/packaging/rpm/RPMS/ /rpms/ -RUN rpm -i /rpms/x86_64/{libxil,libwebsockets,villas-node,villas-node-doc}-[0-9]*; rm -rf /rpms/ +RUN dnf -y update && \ + dnf -y install \ + libwebsockets \ + libxil \ + nanomsg \ + villas-node \ + villas-node-doc # For WebSocket / API access EXPOSE 80 diff --git a/Dockerfile.dev b/Dockerfile.dev index c881c236e..a50f23a22 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -61,7 +61,7 @@ RUN pip install \ gcovr # Some of the dependencies are only available in our own repo -ADD https://villas.fein-aachen.org/packages/villas.repo /etc/yum.repos.d/ +ADD https://villas.fein-aachen.org/packages/villas.repo /etc/yum.repos.d/ # Dependencies RUN dnf -y install \