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:
parent
d57785547c
commit
11b5295f4e
5 changed files with 62 additions and 44 deletions
|
@ -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
|
||||
|
|
|
@ -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"]
|
||||
|
|
11
Makefile
11
Makefile
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue