1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00

deploy packages and Docker images automatically

This commit is contained in:
Steffen Vogel 2017-07-02 20:39:58 +02:00
parent 762d1a7f7a
commit 2e8f01b7fc
3 changed files with 64 additions and 52 deletions

View file

@ -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

View file

@ -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

View file

@ -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 \