test-backend 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #!/bin/bash
  2. set -e
  3. IMAGE=jc21/gotools:latest
  4. DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  5. . "$DIR/../.common.sh"
  6. BUILD_DATE=$(date '+%Y-%m-%d %T %Z')
  7. NOW=$(date --rfc-3339=s)
  8. cd $DIR/../..
  9. if [ "$BUILD_COMMIT" = "" ]; then
  10. BUILD_COMMIT=$(git log -n 1 --format=%h)
  11. fi
  12. if [ "$BUILD_VERSION" = "" ]; then
  13. BUILD_VERSION=$(cat .version)
  14. fi
  15. echo -e "${BLUE}❯ ${GREEN}test-backend: ${YELLOW}${1:-}${RESET}"
  16. echo " BUILD_COMMIT: ${BUILD_COMMIT:-notset}"
  17. echo " BUILD_DATE: $BUILD_DATE"
  18. echo " BUILD_VERSION: $BUILD_VERSION"
  19. echo " CGO_ENABLED: ${CGO_ENABLED:-not set}"
  20. echo " GO111MODULE: ${GO111MODULE:-}"
  21. echo " GOPRIVATE: ${GOPRIVATE:-}"
  22. echo " GOPROXY: ${GOPROXY:-}"
  23. echo " NOW: $NOW"
  24. if [ "${1:-}" = "--inside-docker" ]; then
  25. trap cleanup EXIT
  26. cleanup() {
  27. rm -f "/tmp/coverage.out"
  28. chown -R 1000:1000 "$DIR/../../test/results"
  29. }
  30. mkdir -p /workspace
  31. echo -e "${BLUE}❯ ${CYAN}govulncheck setup${RESET}"
  32. cd /workspace
  33. cp /app/backend/go.mod /app/backend/go.sum .
  34. go mod download
  35. echo -e "${BLUE}❯ ${CYAN}govulncheck testing${RESET}"
  36. govulncheck ./...
  37. rm -rf /workspace
  38. echo -e "${BLUE}❯ ${CYAN}Testing backend code${RESET}"
  39. cd /app/backend
  40. [ -z "$(go tool fix -diff ./internal)" ]
  41. go test -json -cover -coverprofile="/tmp/coverage.out" ./... | tparse
  42. mkdir -p "$DIR/../../test/results/html-reports" "$DIR/../../test/results/junit"
  43. go tool cover -html="/tmp/coverage.out" -o "$DIR/../../test/results/html-reports/backend-coverage.html"
  44. go test -v -tags="unit integration" -covermode=atomic ./internal/... 2>&1 | go-junit-report -set-exit-code > "$DIR/../../test/results/junit/backend.xml"
  45. go-test-coverage -c .testcoverage.yml --p "/tmp/coverage.out"
  46. # disabled as it can't handle -buildvcs=false flag and complains about it:
  47. # golangci-lint -v run ./...
  48. else
  49. # run this script from within docker
  50. docker pull "${IMAGE}"
  51. docker run --rm \
  52. -e BUILD_COMMIT="${BUILD_COMMIT:-notset}" \
  53. -e BUILD_DATE="$BUILD_DATE" \
  54. -e BUILD_VERSION="$BUILD_VERSION" \
  55. -e GOARCH="${2}" \
  56. -e GOOS="${1}" \
  57. -e GOPRIVATE="${GOPRIVATE:-}" \
  58. -e GOPROXY="${GOPROXY:-}" \
  59. -e NOW="$NOW" \
  60. -e TZ="${TZ:-Australia/Brisbane}" \
  61. -v "$(pwd):/app" \
  62. -w '/app/backend' \
  63. "${IMAGE}" \
  64. /app/scripts/ci/test-backend --inside-docker
  65. fi
  66. echo -e "${BLUE}❯ ${GREEN}test-backend ${YELLOW}${1:-} ${GREEN}completed${RESET}"
  67. exit 0