diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..e52d22e --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,37 @@ +pipeline { + environment { + DOCKER_USERNAME = 'tom' + DOCKER_PASSWORD = credentials('dgitea_tom') + } + + agent any + + stages { + stage ("Building image arbeitszeit-backend"){ + when { + anyOf{ + changeset 'Jenkinsfile' + changeset 'Makefile' + changeset 'Backend/**' + } + } + steps { + sh 'make build_backend' + } + + } + stage('Deploying image arbeitszeit-backend') { + when { + anyOf{ + changeset 'Jenkinsfile' + changeset 'Makefile' + changeset 'Backend/**' + } + } + steps { + sh 'make push_backend' + } + } + + } +} diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..662ba9d --- /dev/null +++ b/Makefile @@ -0,0 +1,38 @@ +DOCKER_USERNAME ?= tom +DOCKER_PASSWORD ?= $(shell echo "YOUR_DEFAULT_PASSWORD") +IMAGE_REGISTRY ?= git.letsstein.de +APPLICATION_NAME ?= arbeitszeit +_BUILD_ARGS_APP_PART ?= . +_BUILD_ARGS_TAG ?= latest +TAG ?= latest +GIT_COMMIT ?= $(shell git rev-parse --short HEAD) + +capitalize = $(shell echo $(1) | sed 's/.*/\u&/') + +login_registry: +ifdef JENKINS_HOME + echo "Logging in to Docker registry..." + echo ${DOCKER_PASSWORD} | docker login -u $(DOCKER_USERNAME) --password-stdin $(IMAGE_REGISTRY) +endif + +_builder: + docker build --tag ${IMAGE_REGISTRY}/${DOCKER_USERNAME}/${APPLICATION_NAME}-${_BUILD_ARGS_APP_PART}:${GIT_COMMIT} -f $(call capitalize, ${_BUILD_ARGS_APP_PART})/Dockerfile $(call capitalize, ${_BUILD_ARGS_APP_PART}) + +_pusher: login_registry + docker push ${IMAGE_REGISTRY}/${DOCKER_USERNAME}/${APPLICATION_NAME}-${_BUILD_ARGS_APP_PART}:${GIT_COMMIT} + docker tag ${IMAGE_REGISTRY}/${DOCKER_USERNAME}/${APPLICATION_NAME}-${_BUILD_ARGS_APP_PART}:${GIT_COMMIT} ${IMAGE_REGISTRY}/${DOCKER_USERNAME}/${APPLICATION_NAME}-${_BUILD_ARGS_APP_PART}:${_BUILD_ARGS_TAG} + docker push ${IMAGE_REGISTRY}/${DOCKER_USERNAME}/${APPLICATION_NAME}-${_BUILD_ARGS_APP_PART}:${_BUILD_ARGS_TAG} + + +build_%: + $(MAKE) _builder \ + -e _BUILD_ARGS_APP_PART="$*" \ + +push_%: + $(MAKE) _pusher \ + -e _BUILD_ARGS_APP_PART="$*" \ + -e _BUILD_ARGS_TAG="${TAG}" + +full_%: + make build_$* + make push_$*