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

fix deployment of packages

This commit is contained in:
Steffen Vogel 2017-09-16 18:06:38 +02:00
parent d57785547c
commit 11b5295f4e
5 changed files with 62 additions and 44 deletions

View file

@ -2,8 +2,8 @@ variables:
GIT_STRATEGY: fetch
GIT_SUBMODULE_STRATEGY: recursive
PREFIX: /usr/
RSYNC_OPTS: --recursive --ignore-missing-args --chown $DEPLOY_USER:$DEPLOY_USER
DOCKER_TAG: ${CI_COMMIT_REF_SLUG}
RSYNC_OPTS: --recursive --ignore-missing-args --chown ${DEPLOY_USER}:${DEPLOY_USER}
DOCKER_TAG_DEV: ${CI_COMMIT_REF_SLUG}
DOCKER_IMAGE_DEV: villas/node-dev
stages:
@ -38,41 +38,47 @@ build:source:
- make
artifacts:
expire_in: 1 week
name: "${CI_PROJECT_NAME}-${CI_BUILD_REF}"
name: ${CI_PROJECT_NAME}-${CI_BUILD_REF}
paths:
- build/release/
image: $DOCKER_IMAGE_DEV:$DOCKER_TAG
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG_DEV}
tags:
- docker
build:docs:
stage: build
artifacts:
name: "${CI_PROJECT_NAME}-doc-${CI_BUILD_REF}"
name: ${CI_PROJECT_NAME}-doc-${CI_BUILD_REF}
paths:
- build/release/doc/
script:
- make doc
image: $DOCKER_IMAGE_DEV:$DOCKER_TAG
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG_DEV}
tags:
- docker
only:
- tags
- master
build:packages:
stage: build
before_script:
- dnf -y config-manager --add-repo https://$DEPLOY_USER:$DEPLOY_PASS@$DEPLOY_HOST/packages/villas.repo
- dnf -y config-manager --add-repo https://${DEPLOY_USER}:${DEPLOY_PASS}@${DEPLOY_HOST}/packages/villas.repo
- 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
artifacts:
expire_in: 1 week
name: "${CI_PROJECT_NAME}-packages-${CI_BUILD_REF}"
name: ${CI_PROJECT_NAME}-packages-${CI_BUILD_REF}
paths:
- build/release/packaging/*.tar.gz
- build/release/packaging/rpm/RPMS/
image: $DOCKER_IMAGE_DEV:$DOCKER_TAG
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG_DEV}
tags:
- docker
only:
- tags
- master
# Stage: test
@ -85,12 +91,12 @@ test:coverage:
script:
- make coverage
artifacts:
name: "${CI_PROJECT_NAME}-coverage-${CI_BUILD_REF}"
name: ${CI_PROJECT_NAME}-coverage-${CI_BUILD_REF}
paths:
- build/release-coverage/coverage/
- build/release-coverage/coverage.txt
- build/release-coverage/coverage.xml
image: $DOCKER_IMAGE_DEV:$DOCKER_TAG
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG_DEV}
coverage: '/lines: (\d+\.\d+\%)/'
tags:
- docker
@ -101,7 +107,7 @@ test:unit:
- build:source
script:
- make run-unit-tests
image: $DOCKER_IMAGE_DEV:$DOCKER_TAG
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG_DEV}
tags:
- docker
@ -112,11 +118,11 @@ test:integration:
script:
- make run-integration-tests
artifacts:
name: "${CI_PROJECT_NAME}-integration-tests-${CI_BUILD_REF}"
name: ${CI_PROJECT_NAME}-integration-tests-${CI_BUILD_REF}
when: always
paths:
- build/release/tests/integration/
image: $DOCKER_IMAGE_DEV:$DOCKER_TAG
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG_DEV}
tags:
- docker
@ -129,7 +135,7 @@ test:valgrind:
dependencies:
- build:source
allow_failure: true
image: $DOCKER_IMAGE_DEV:$DOCKER_TAG
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG_DEV}
tags:
- docker
@ -139,32 +145,32 @@ test:valgrind:
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/
- 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:
- build:docs
- build:packages
- test:coverage
only:
- master
- tags
tags:
- villas-deploy
deploy:packages:
stage: deploy
script:
- ssh $DEPLOY_USER@$DEPLOY_HOST mkdir -p $DEPLOY_PATH/{dist,../packages}
- rsync $RSYNC_OPTS build/release/packaging/rpm/RPMS/ $DEPLOY_USER@$DEPLOY_HOST:$DEPLOY_PATH/../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
- ssh ${DEPLOY_USER}@${DEPLOY_HOST} mkdir -p ${DEPLOY_PATH}/{dist,../packages}
- rsync ${RSYNC_OPTS} build/release/packaging/rpm/RPMS/ ${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_PATH}/../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:
- build:packages
tags:
- villas-deploy
only:
- master
- tags
# Stage: docker
@ -172,16 +178,21 @@ deploy:packages:
deploy:docker:
stage: docker
variables:
DOCKER_IMAGE: villas/node
DOCKER_TAG: $CI_COMMIT_TAG
script:
- make docker
- make deploy-docker
- docker tag ${DOCKER_IMAGE}:${DOCKER_TAG} ${DOCKER_IMAGE}:latest
- docker push ${DOCKER_IMAGE}:latest
dependencies:
- build:packages
tags:
- shell
- linux
only:
- master
- tags
deploy:docker-dev:
stage: docker

View file

@ -48,6 +48,9 @@ RUN dnf -y install \
kernel-modules-extra \
module-init-tools
# Ugly: we need to invalidate the cache
ADD https://villas.fein-aachen.org/packages/repodata/repomd.xml /tmp
# Install the application
RUN dnf -y --refresh install \
villas-node \
@ -57,4 +60,4 @@ RUN dnf -y --refresh install \
EXPOSE 80
EXPOSE 443
ENTRYPOINT ["villas"]
ENTRYPOINT ["villas"]

View file

@ -112,10 +112,19 @@ ifdef CI
VARIANT := $(VARIANT)-ci
GIT_REV := $(shell echo $${CI_COMMIT_SHA:0:7})
GIT_BRANCH := $(CI_COMMIT_REF_NAME)
ifdef CI_COMMIT_TAG
RELEASE = 1
else
RELEASE = 1.$(subst -,_,$(CI_COMMIT_REF_NAME))_$(subst -,_,$(VARIANT)).$(shell date +%Y%m%d)git$(GIT_REV)
endif
else
GIT_REV := $(shell git rev-parse --short=7 HEAD)
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
RELEASE = 1.$(subst -,_,$(GIT_BRANCH))_$(subst -,_,$(VARIANT)).$(shell date +%Y%m%d)git$(GIT_REV)
endif
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
# pkg-config dependencies
PKGS = openssl jansson

View file

@ -22,19 +22,20 @@
TAROPTS = --exclude-ignore-recursive=.distignore --transform='s|^\.|villas-node-$(VERSION_NUM)|' --show-transformed-names
TAR_VILLAS = $(BUILDDIR)/packaging/villas-node-$(VERSION_NUM)-1.$(subst -,_,$(GIT_BRANCH))_$(subst -,_,$(VARIANT)).$(shell date +%Y%m%d)git$(GIT_REV).tar.gz
TAR_VILLAS = $(BUILDDIR)/packaging/villas-node-$(VERSION_NUM)-$(RELEASE).tar.gz
DEPLOY_USER ?= acs
DEPLOY_HOST ?= villas.fein-aachen.org
DEPLOY_PATH ?= /var/www/villas/node
DOCKER_IMAGE ?= villas/node
DOCKER_IMAGE_DEV ?= villas/node-dev
DOCKER_FILE ?= Dockerfile
DOCKER_IMAGE ?= villas/node
DOCKER_TAG ?= $(GIT_BRANCH)
deploy-docker-dev: DOCKER_IMAGE := $(DOCKER_IMAGE)-dev
docker-dev: DOCKER_IMAGE := $(DOCKER_IMAGE)-dev
docker-dev: DOCKER_FILE := $(DOCKER_FILE).dev
packaging: rpm dist
@ -53,23 +54,16 @@ deploy-rpm:
rsync -a --progress $(RPMDIR)/RPMS/ $(DEPLOY_USER)@$(DEPLOY_HOST):$(DEPLOY_PATH)/../packages/
ssh $(DEPLOY_USER)@$(DEPLOY_HOST) createrepo $(DEPLOY_PATH)/../packages
deploy-docker:
deploy-docker deploy-docker-dev:
docker push $(DOCKER_IMAGE):$(DOCKER_TAG)
deploy-docker-dev:
docker push $(DOCKER_IMAGE_DEV):$(DOCKER_TAG)
# Docker targets
run-docker-dev: docker-dev
run-docker-dev:
docker run -it -p 80:80 -p 443:443 -p 1234:1234 -p 12000:12000/udp -p 12001:12001/udp --privileged --security-opt seccomp:unconfined -v "$(SRCDIR):/villas" $(DOCKER_IMAGE)-dev:$(GIT_BRANCH)
docker-dev:
docker docker-dev:
docker pull fedora:25
docker build -f Dockerfile.dev -t $(DOCKER_IMAGE):$(DOCKER_TAG) $(SRCDIR)
docker:
docker pull fedora:25
docker build -f Dockerfile -t $(DOCKER_IMAGE):$(DOCKER_TAG) $(SRCDIR)
docker build -f $(DOCKER_FILE) -t $(DOCKER_IMAGE):$(DOCKER_TAG) $(SRCDIR)
clean-packaging:
rm -f $(BUILDDIR)/packaging/villas-node-$(VERSION_NUM).tar.gz

View file

@ -46,6 +46,7 @@ rpm-nanomsg: $(BUILDDIR)/thirdparty/nanomsg/ | $(RPMDIR)/SOURCES/
cp $(BUILDDIR)/thirdparty/nanomsg/nanomsg-*.tar.gz $(RPMDIR)/SOURCES/
rpmbuild -ba --define="_topdir $$(pwd)/$(RPMDIR)" $(SRCDIR)/packaging/rpm/nanomsg.spec
rpm-libwebsockets: CMAKE_OPTS += -DLWS_IPV6=1 -DLWS_WITH_STATIC=0 -DLWS_WITHOUT_TESTAPPS=1 -DLWS_WITH_HTTP2=1 -DLWS_WITH_SERVER_STATUS=1
rpm-libwebsockets: | $(RPMDIR)/RPMS/x86_64/ $(BUILDDIR)/thirdparty/libwebsockets/
cmake -DCMAKE_INSTALL_PREFIX:PATH=$(PREFIX) \
-H$(SRCDIR)/thirdparty/libwebsockets \
@ -56,7 +57,7 @@ rpm-libwebsockets: | $(RPMDIR)/RPMS/x86_64/ $(BUILDDIR)/thirdparty/libwebsockets
# We patch version number and release fields of the spec file based on the current Git commit
$(SPEC_VILLAS): packaging/rpm/villas-node.spec | $$(dir $$@)
sed -e "s/§VERSION§/$(VERSION_NUM)/g" \
-e "s/§RELEASE§/1.$(subst -,_,$(GIT_BRANCH))_$(subst -,_,$(VARIANT)).$(shell date +%Y%m%d)git$(GIT_REV)/g" < $^ > $@
-e "s/§RELEASE§/$(RELEASE)/g" < $^ > $@
sign-rpm:
rpmsign $(RPMDIR)/RPMS/*/.rpm