DOCKER := docker
SOCKET := /var/run/docker.sock
VOLUME := jenkins_home
.PHONY: build run bash init-pw unprotected protected start stop rm purge
# building the Jenkins image
build:
	$(DOCKER) build -t jenkins-docker .
# initially running the Jenkins container
run:
	$(DOCKER) run --detach \
		--dns 8.8.8.8 \
		--network bridge \
		--publish 8080:8080 --publish 50000:50000 \
		--volume $(SOCKET):/var/run/docker.sock \
		--volume $(VOLUME):/var/jenkins_home \
		--restart unless-stopped \
		--name jenkins jenkins-docker
# (re-) starts the Jenkins container
start:
	$(DOCKER) start jenkins
# opens a bash within the Jenkins container
bash:
	$(DOCKER) exec -it jenkins bash
# prints the inital password of a newly setup Jenkins
init-pw:
	$(DOCKER) exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
# disables security for the Jenkins, allows login without credentials
unprotected:
	docker exec -it jenkins sed -i 's|true|false|' /var/jenkins_home/config.xml
	docker exec -it jenkins grep useSecurity /var/jenkins_home/config.xml
# enables security for the Jenkins, requires login with credentials
protected:
	docker exec -it jenkins sed -i 's|true|true|' /var/jenkins_home/config.xml
	docker exec -it jenkins grep useSecurity /var/jenkins_home/config.xml
# stops the Jenkins container
stop:
	$(DOCKER) stop jenkins
# removes the Jenkins container
rm: stop
	$(DOCKER) rm jenkins
# purges the Jenkins volume (finally deletes the configuration)
purge: rm
	$(DOCKER) volume rm $(VOLUME)