jenkins_sample_lib 0.0.3

Dummy library for testing automation for pushing to crates.io
Documentation
SHELL := /bin/bash
USER_ID := $(shell id -u)
GROUP_ID := $(shell id -g)
UNAME_S := $(shell uname -s)
UUID := $(shell uuidgen | sed 's/-//g')
S3_BUCKET := safe-jenkins-build-artifacts

build-container:
	rm -rf target/
	docker rmi -f maidsafe/jenkins_sample_lib:build
	docker build -f Dockerfile.build -t maidsafe/jenkins_sample_lib:build .

push-container:
	docker push maidsafe/jenkins_sample_lib:build

test:
	rm -rf artifacts
	mkdir artifacts
ifeq ($(UNAME_S),Linux)
	docker run --name "jenkins_sample_lib-${UUID}" \
		-v "${PWD}":/usr/src/jenkins_sample_lib:Z \
		-u ${USER_ID}:${GROUP_ID} \
		maidsafe/jenkins_sample_lib:build \
		/bin/bash -c "cargo test --release"
	docker cp "jenkins_sample_lib-${UUID}":/target .
	docker rm "jenkins_sample_lib-${UUID}"
else
	cargo test --release
endif
	find target/release -maxdepth 1 -type f -exec cp '{}' artifacts \;

package-build-artifacts:
ifndef JENKINS_SAMPLE_BRANCH
	@echo "A branch or PR reference must be provided."
	@echo "Please set JENKINS_SAMPLE_BRANCH to a valid branch or PR reference."
	@exit 1
endif
ifndef JENKINS_SAMPLE_BUILD_NUMBER
	@echo "A build number must be supplied for build artifact packaging."
	@echo "Please set JENKINS_SAMPLE_BUILD_NUMBER to a valid build number."
	@exit 1
endif
ifndef JENKINS_SAMPLE_BUILD_OS
	@echo "A value must be supplied for JENKINS_SAMPLE_BUILD_OS."
	@echo "Valid values are 'linux' or 'windows' or 'macos'."
	@exit 1
endif
	$(eval ARCHIVE_NAME := ${JENKINS_SAMPLE_BRANCH}-${JENKINS_SAMPLE_BUILD_NUMBER}-jenkins_sample-${JENKINS_SAMPLE_BUILD_OS}-x86_64.tar.gz)
	tar -C artifacts -zcvf ${ARCHIVE_NAME} .
	rm artifacts/**
	mv ${ARCHIVE_NAME} artifacts

retrieve-all-build-artifacts:
ifndef JENKINS_SAMPLE_BRANCH
	@echo "A branch or PR reference must be provided."
	@echo "Please set JENKINS_SAMPLE_BRANCH to a valid branch or PR reference."
	@exit 1
endif
ifndef JENKINS_SAMPLE_BUILD_NUMBER
	@echo "A build number must be supplied for build artifact packaging."
	@echo "Please set JENKINS_SAMPLE_BUILD_NUMBER to a valid build number."
	@exit 1
endif
	rm -rf artifacts
	mkdir -p artifacts/linux/release
	mkdir -p artifacts/win/release
	mkdir -p artifacts/macos/release
	aws s3 cp --no-sign-request --region eu-west-2 s3://${S3_BUCKET}/${JENKINS_SAMPLE_BRANCH}-${JENKINS_SAMPLE_BUILD_NUMBER}-jenkins_sample-linux-x86_64.tar.gz .
	aws s3 cp --no-sign-request --region eu-west-2 s3://${S3_BUCKET}/${JENKINS_SAMPLE_BRANCH}-${JENKINS_SAMPLE_BUILD_NUMBER}-jenkins_sample-windows-x86_64.tar.gz .
	aws s3 cp --no-sign-request --region eu-west-2 s3://${S3_BUCKET}/${JENKINS_SAMPLE_BRANCH}-${JENKINS_SAMPLE_BUILD_NUMBER}-jenkins_sample-macos-x86_64.tar.gz .
	tar -C artifacts/linux/release -xvf ${JENKINS_SAMPLE_BRANCH}-${JENKINS_SAMPLE_BUILD_NUMBER}-jenkins_sample-linux-x86_64.tar.gz
	tar -C artifacts/win/release -xvf ${JENKINS_SAMPLE_BRANCH}-${JENKINS_SAMPLE_BUILD_NUMBER}-jenkins_sample-windows-x86_64.tar.gz
	tar -C artifacts/macos/release -xvf ${JENKINS_SAMPLE_BRANCH}-${JENKINS_SAMPLE_BUILD_NUMBER}-jenkins_sample-macos-x86_64.tar.gz
	rm ${JENKINS_SAMPLE_BRANCH}-${JENKINS_SAMPLE_BUILD_NUMBER}-jenkins_sample-linux-x86_64.tar.gz
	rm ${JENKINS_SAMPLE_BRANCH}-${JENKINS_SAMPLE_BUILD_NUMBER}-jenkins_sample-windows-x86_64.tar.gz
	rm ${JENKINS_SAMPLE_BRANCH}-${JENKINS_SAMPLE_BUILD_NUMBER}-jenkins_sample-macos-x86_64.tar.gz

publish:
ifndef CRATES_IO_TOKEN
	@echo "A login token for crates.io must be provided."
	@exit 1
endif
	rm -rf artifacts
	docker run --rm -v "${PWD}":/usr/src/jenkins_sample_lib:Z \
		-u ${USER_ID}:${GROUP_ID} \
		maidsafe/jenkins_sample_lib:build \
		/bin/bash -c "cargo login ${CRATES_IO_TOKEN} && cargo package && cargo publish"