add docker testing.
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
This commit is contained in:
parent
410a454676
commit
30d2fd69b1
32
Makefile
32
Makefile
|
@ -7,6 +7,7 @@ PRODUCTION_IMAGE := "gorush"
|
||||||
DEPLOY_ACCOUNT := "appleboy"
|
DEPLOY_ACCOUNT := "appleboy"
|
||||||
VERSION := $(shell git describe --tags)
|
VERSION := $(shell git describe --tags)
|
||||||
TARGETS_NOVENDOR := $(shell glide novendor)
|
TARGETS_NOVENDOR := $(shell glide novendor)
|
||||||
|
export PROJECT_PATH = /go/src/github.com/appleboy/gorush
|
||||||
|
|
||||||
all: build
|
all: build
|
||||||
|
|
||||||
|
@ -51,8 +52,8 @@ docker_build: clean
|
||||||
docker build --rm -t $(BUILD_IMAGE) -f docker/Dockerfile.tmp .
|
docker build --rm -t $(BUILD_IMAGE) -f docker/Dockerfile.tmp .
|
||||||
docker run --rm $(BUILD_IMAGE) > gorush.tar.gz
|
docker run --rm $(BUILD_IMAGE) > gorush.tar.gz
|
||||||
|
|
||||||
docker_test: init
|
docker_test: init clean
|
||||||
docker-compose -p ${PRODUCTION_IMAGE} -f docker/docker-compose.testing.yml run --rm gorush
|
docker-compose -p ${PRODUCTION_IMAGE} -f docker/docker-compose.testing.yml run gorush
|
||||||
docker-compose -p ${PRODUCTION_IMAGE} -f docker/docker-compose.testing.yml down
|
docker-compose -p ${PRODUCTION_IMAGE} -f docker/docker-compose.testing.yml down
|
||||||
|
|
||||||
docker_production: docker_build
|
docker_production: docker_build
|
||||||
|
@ -66,36 +67,15 @@ endif
|
||||||
docker tag $(PRODUCTION_IMAGE):latest $(DEPLOY_ACCOUNT)/$(PRODUCTION_IMAGE):$(tag)
|
docker tag $(PRODUCTION_IMAGE):latest $(DEPLOY_ACCOUNT)/$(PRODUCTION_IMAGE):$(tag)
|
||||||
docker push $(DEPLOY_ACCOUNT)/$(PRODUCTION_IMAGE):$(tag)
|
docker push $(DEPLOY_ACCOUNT)/$(PRODUCTION_IMAGE):$(tag)
|
||||||
|
|
||||||
install: tool
|
install:
|
||||||
@which glide || (curl https://glide.sh/get | sh)
|
glide install
|
||||||
@glide install
|
|
||||||
|
|
||||||
update:
|
update:
|
||||||
@glide up
|
glide update
|
||||||
|
|
||||||
fmt:
|
fmt:
|
||||||
@echo $(TARGETS_NOVENDOR) | xargs go fmt
|
@echo $(TARGETS_NOVENDOR) | xargs go fmt
|
||||||
|
|
||||||
tool:
|
|
||||||
sh ./script/coverage.sh tool
|
|
||||||
|
|
||||||
junit_report:
|
|
||||||
sh ./script/coverage.sh junit
|
|
||||||
|
|
||||||
coverage_report:
|
|
||||||
sh ./script/coverage.sh coverage
|
|
||||||
|
|
||||||
lint_report:
|
|
||||||
sh ./script/coverage.sh lint
|
|
||||||
|
|
||||||
vet_report:
|
|
||||||
sh ./script/coverage.sh vet
|
|
||||||
|
|
||||||
cloc_report:
|
|
||||||
sh ./script/coverage.sh cloc
|
|
||||||
|
|
||||||
report: junit_report coverage_report lint_report vet_report cloc_report
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-rm -rf build.tar.gz \
|
-rm -rf build.tar.gz \
|
||||||
gorush.tar.gz bin/* \
|
gorush.tar.gz bin/* \
|
||||||
|
|
|
@ -2,7 +2,10 @@ version: "2"
|
||||||
|
|
||||||
services:
|
services:
|
||||||
gorush:
|
gorush:
|
||||||
build: ./golang
|
build:
|
||||||
|
context: ./golang
|
||||||
|
args:
|
||||||
|
PROJECT_PATH: $PROJECT_PATH
|
||||||
links:
|
links:
|
||||||
- redis
|
- redis
|
||||||
privileged: true
|
privileged: true
|
||||||
|
@ -10,7 +13,7 @@ services:
|
||||||
- ANDROID_API_KEY
|
- ANDROID_API_KEY
|
||||||
- ANDROID_TEST_TOKEN
|
- ANDROID_TEST_TOKEN
|
||||||
volumes:
|
volumes:
|
||||||
- ../:/app
|
- ../:$PROJECT_PATH
|
||||||
command: /bin/sh -c './docker/testing.sh'
|
command: /bin/sh -c './docker/testing.sh'
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
|
|
|
@ -1,14 +1,9 @@
|
||||||
FROM golang:1.6.3-alpine
|
FROM appleboy/golang-testing
|
||||||
|
|
||||||
MAINTAINER Bo-Yi Wu <appleboy.tw@gmail.com>
|
MAINTAINER Bo-Yi Wu <appleboy.tw@gmail.com>
|
||||||
|
|
||||||
RUN apk update \
|
ARG PROJECT_PATH
|
||||||
&& apk add git make curl perl && rm -rf /var/cache/apk/*
|
|
||||||
|
|
||||||
# install glide package management.
|
ENV PROJECT_PATH=$PROJECT_PATH
|
||||||
RUN curl https://glide.sh/get | sh
|
|
||||||
|
|
||||||
RUN mkdir /app && mkdir -p $GOPATH/src/github.com/appleboy
|
WORKDIR $PROJECT_PATH
|
||||||
RUN ln -sf /app $GOPATH/src/github.com/appleboy/gorush
|
|
||||||
|
|
||||||
WORKDIR $GOPATH/src/github.com/appleboy/gorush
|
|
||||||
|
|
|
@ -9,6 +9,4 @@ sed -i"" -e "s/localhost/redis/g" config/config.go
|
||||||
sed -i"" -e "s/localhost/redis/g" config/config_test.go
|
sed -i"" -e "s/localhost/redis/g" config/config_test.go
|
||||||
sed -i"" -e "s/localhost/redis/g" gorush/status_test.go
|
sed -i"" -e "s/localhost/redis/g" gorush/status_test.go
|
||||||
sed -i"" -e "s/localhost/redis/g" storage/redis/redis_test.go
|
sed -i"" -e "s/localhost/redis/g" storage/redis/redis_test.go
|
||||||
make install
|
make install && coverage all
|
||||||
make coverage
|
|
||||||
make report
|
|
||||||
|
|
|
@ -1,123 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# Generate test coverage statistics for Go packages.
|
|
||||||
#
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
output() {
|
|
||||||
printf "\033[32m"
|
|
||||||
echo $1
|
|
||||||
printf "\033[0m"
|
|
||||||
|
|
||||||
if [ "$2" = 1 ]; then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
workdir=".cover"
|
|
||||||
coverage_report="$workdir/coverage.txt"
|
|
||||||
coverage_xml_report="$workdir/coverage.xml"
|
|
||||||
junit_report="$workdir/junit.txt"
|
|
||||||
junit_xml_report="$workdir/report.xml"
|
|
||||||
lint_report="$workdir/lint.txt"
|
|
||||||
vet_report="$workdir/vet.txt"
|
|
||||||
cloc_report="$workdir/cloc.xml"
|
|
||||||
packages=$(go list ./... | grep -v vendor)
|
|
||||||
|
|
||||||
test -d $workdir || mkdir -p $workdir
|
|
||||||
|
|
||||||
show_help() {
|
|
||||||
cat << EOF
|
|
||||||
Generate test coverage statistics for Go packages.
|
|
||||||
|
|
||||||
tool Install go dependency tools like gocov or golint.
|
|
||||||
testing [set|count|atomic] Run go testing for all packages
|
|
||||||
coverage Generate coverage report for all packages
|
|
||||||
junit Generate coverage xml report for junit plugin
|
|
||||||
lint Generate Lint report for all packages
|
|
||||||
vet Generate Vet report for all packages
|
|
||||||
cloc Generate Count Lines of Code report for all files
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
install_dependency_tool() {
|
|
||||||
which go-junit-report || go get -u github.com/jstemmer/go-junit-report
|
|
||||||
which gocov || go get -u github.com/axw/gocov/gocov
|
|
||||||
which gocov-xml || go get -u github.com/AlekSi/gocov-xml
|
|
||||||
which golint || go get -u github.com/golang/lint/golint
|
|
||||||
}
|
|
||||||
|
|
||||||
testing() {
|
|
||||||
test -f ${junit_report} && rm -f ${junit_report}
|
|
||||||
coverage_mode=$@
|
|
||||||
output "Running ${coverage_mode} mode for coverage."
|
|
||||||
for pkg in $packages; do
|
|
||||||
f="$workdir/$(echo $pkg | tr / -).cover"
|
|
||||||
output "Testing coverage report for ${pkg}"
|
|
||||||
go test -v -cover -coverprofile=${f} -covermode=${coverage_mode} $pkg | tee -a ${junit_report}
|
|
||||||
done
|
|
||||||
|
|
||||||
output "Convert all packages coverage report to $coverage_report"
|
|
||||||
echo "mode: $coverage_mode" > "$coverage_report"
|
|
||||||
grep -h -v "^mode:" "$workdir"/*.cover >> "$coverage_report"
|
|
||||||
}
|
|
||||||
|
|
||||||
generate_cover_report() {
|
|
||||||
gocov convert ${coverage_report} | gocov-xml > ${coverage_xml_report}
|
|
||||||
}
|
|
||||||
|
|
||||||
generate_junit_report() {
|
|
||||||
cat $junit_report | go-junit-report > ${junit_xml_report}
|
|
||||||
}
|
|
||||||
|
|
||||||
generate_lint_report() {
|
|
||||||
for pkg in $packages; do
|
|
||||||
output "Go Lint report for ${pkg}"
|
|
||||||
golint ${pkg} | tee -a ${lint_report}
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
generate_vet_report() {
|
|
||||||
for pkg in $packages; do
|
|
||||||
output "Go Vet report for ${pkg}"
|
|
||||||
go vet -n -x ${pkg} | tee -a ${vet_report}
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
generate_cloc_report() {
|
|
||||||
case "$OSTYPE" in
|
|
||||||
darwin*)
|
|
||||||
which cloc || brew install cloc ;;
|
|
||||||
linux*)
|
|
||||||
which cloc || apt-get install cloc ;;
|
|
||||||
*)
|
|
||||||
curl https://raw.githubusercontent.com/AlDanial/cloc/master/cloc -o /usr/bin/cloc
|
|
||||||
chmod 755 /usr/bin/cloc
|
|
||||||
esac
|
|
||||||
|
|
||||||
cloc --by-file --xml --out=${cloc_report} --exclude-dir=vendor,Godeps,.cover .
|
|
||||||
}
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
"")
|
|
||||||
show_help ;;
|
|
||||||
tool)
|
|
||||||
install_dependency_tool ;;
|
|
||||||
testing)
|
|
||||||
mode="set"
|
|
||||||
test -z $2 || mode=$2
|
|
||||||
testing $mode ;;
|
|
||||||
coverage)
|
|
||||||
generate_cover_report ;;
|
|
||||||
junit)
|
|
||||||
generate_junit_report ;;
|
|
||||||
lint)
|
|
||||||
generate_lint_report ;;
|
|
||||||
vet)
|
|
||||||
generate_vet_report ;;
|
|
||||||
cloc)
|
|
||||||
generate_cloc_report ;;
|
|
||||||
*)
|
|
||||||
show_help ;;
|
|
||||||
esac
|
|
Loading…
Reference in New Issue