diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..2b6c2e88 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,81 @@ +version: 2 +jobs: + shellcheck: + docker: + - image: nlknguyen/alpine-shellcheck:v0.4.6 + steps: + - checkout + - run: + name: Check Docker Hub Hooks + command: | + find hooks -type f | wc -l + find hooks -type f | xargs shellcheck -e SC2086 --external-sources + - run: + name: Check Scripts + command: | + find . -type f -name '*.sh' | wc -l + find . -type f -name '*.sh' | xargs shellcheck -e SC2086 -e SC1090 --external-sources + build: + docker: + - image: circleci/golang:1.11.5 + steps: + - checkout + - setup_remote_docker: + docker_layer_caching: true + - run: + name: Create docker image + command: make build + + build-deploy: + docker: + - image: circleci/golang:1.11.5 + steps: + - checkout + - setup_remote_docker: + docker_layer_caching: true + - run: + name: Create docker image + command: make build + - run: + name: Logg into Docker registry + command: docker login -u $docker_release_user -p $docker_release_password + - run: + name: Publish docker image + command: make push + + release: + docker: + - image: circleci/golang:1.11.5 + steps: + - checkout + - setup_remote_docker: + docker_layer_caching: true + - run: + name: Login to public Docker HUB + command: | + docker login -u $docker_release_user -p $docker_release_password + make release + +workflows: + version: 2 + verify: + jobs: + - shellcheck + - build + deploy: + jobs: + - build-deploy: + requires: + - shellcheck + filters: + branches: + only: + - master + release: + jobs: + - release: + filters: + tags: + only: /^([0-9]\d*)\.([0-9]\d*)\.([0-9]\d*).*$/ + branches: + ignore: /.*/ diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..e3af0966 --- /dev/null +++ b/Makefile @@ -0,0 +1,30 @@ +DOCKER_RELEASE_REG=solidnerd +DOCKER_IMAGE=bookstack + + +DOCKER_INTERNAL_TAG := $(shell git rev-parse --short HEAD) +DOCKER_RELEASE_TAG := $(shell git describe) +BUILD_DATE := $(shell date -u +"%Y-%m-%dT%H:%M:%SZ") +VCS_URL := https://github.com/solidnerd/docker-bookstack + +.PHONY: build push pull release + +build: + docker image build . \ + -t $(DOCKER_RELEASE_REG)/$(DOCKER_IMAGE):$(DOCKER_INTERNAL_TAG) \ + --build-arg VCS_REF=$(DOCKER_INTERNAL_TAG) \ + --build-arg BUILD_DATE=$(BUILD_DATE) \ + --build-arg VCS_URL=$(VCS_URL) + +push: + docker push $(DOCKER_RELEASE_REG)/$(DOCKER_IMAGE):$(DOCKER_INTERNAL_TAG) + +pull: + docker pull $(DOCKER_RELEASE_REG)/$(DOCKER_IMAGE):$(DOCKER_INTERNAL_TAG) + +release: + docker tag $(DOCKER_RELEASE_REG)/$(DOCKER_IMAGE):$(DOCKER_INTERNAL_TAG) $(DOCKER_RELEASE_REG)/$(DOCKER_IMAGE):$(DOCKER_RELEASE_TAG) + docker tag $(DOCKER_RELEASE_REG)/$(DOCKER_IMAGE):$(DOCKER_INTERNAL_TAG) $(DOCKER_RELEASE_REG)/$(DOCKER_IMAGE):latest + + docker push $(DOCKER_RELEASE_REG)/$(DOCKER_IMAGE):$(DOCKER_RELEASE_TAG) + docker push $(DOCKER_RELEASE_REG)/$(DOCKER_IMAGE):latest