Dockerfile.release 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. FROM golang:1.10-alpine3.8
  2. RUN apk add --no-cache \
  3. file \
  4. gnupg
  5. WORKDIR /usr/src/bashbrew
  6. ENV GOPATH /usr/src/bashbrew:/usr/src/bashbrew/vendor
  7. ENV CGO_ENABLED 0
  8. ENV BASHBREW_ARCHES \
  9. amd64 \
  10. arm32v5 \
  11. arm32v6 \
  12. arm32v7 \
  13. arm64v8 \
  14. darwin-amd64 \
  15. i386 \
  16. ppc64le \
  17. s390x \
  18. windows-amd64
  19. COPY .bashbrew-arch-to-goenv.sh /usr/local/bin/
  20. # https://github.com/estesp/manifest-tool/releases
  21. ENV MANIFEST_TOOL_VERSION 0.9.0
  22. # gpg: key 0F386284C03A1162: public key "Philip Estes <[email protected]>" imported
  23. ENV MANIFEST_TOOL_GPG_KEY 27F3EA268A97867EAF0BD05C0F386284C03A1162
  24. RUN set -euxo pipefail; \
  25. \
  26. export GNUPGHOME="$(mktemp -d)"; \
  27. gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$MANIFEST_TOOL_GPG_KEY"; \
  28. \
  29. mkdir -p bin; \
  30. \
  31. for bashbrewArch in $BASHBREW_ARCHES; do \
  32. ( \
  33. goEnv="$(.bashbrew-arch-to-goenv.sh "$bashbrewArch")"; eval "$goEnv"; \
  34. srcBin="manifest-tool-$GOOS-$GOARCH"; \
  35. if [ "$GOARCH" = 'arm' ]; then [ -n "$GOARM" ]; srcBin="${srcBin}v$GOARM"; fi; \
  36. [ "$GOOS" = 'windows' ] && ext='.exe' || ext=; \
  37. srcBin="$srcBin$ext"; \
  38. targetBin="bin/manifest-tool-$bashbrewArch$ext"; \
  39. wget -O "$targetBin.asc" "https://github.com/estesp/manifest-tool/releases/download/v${MANIFEST_TOOL_VERSION}/$srcBin.asc"; \
  40. wget -O "$targetBin" "https://github.com/estesp/manifest-tool/releases/download/v${MANIFEST_TOOL_VERSION}/$srcBin"; \
  41. gpg --batch --verify "$targetBin.asc" "$targetBin"; \
  42. ls -lAFh "$targetBin"*; \
  43. file "$targetBin"*; \
  44. ) \
  45. done; \
  46. \
  47. gpgconf --kill all; \
  48. rm -r "$GNUPGHOME"; \
  49. \
  50. ls -lAFh bin/manifest-tool-*; \
  51. file bin/manifest-tool-*
  52. COPY go .
  53. RUN set -euxo pipefail; \
  54. \
  55. mkdir -p bin; \
  56. \
  57. for bashbrewArch in $BASHBREW_ARCHES; do \
  58. ( \
  59. goEnv="$(.bashbrew-arch-to-goenv.sh "$bashbrewArch")"; eval "$goEnv"; \
  60. [ "$GOOS" = 'windows' ] && ext='.exe' || ext=; \
  61. \
  62. targetBin="bin/bashbrew-$bashbrewArch$ext"; \
  63. go build \
  64. -a -v \
  65. -ldflags '-s -w' \
  66. -tags netgo -installsuffix netgo \
  67. -o "$targetBin" \
  68. ./src/bashbrew \
  69. ; \
  70. ls -lAFh "$targetBin"; \
  71. file "$targetBin"; \
  72. ) \
  73. done; \
  74. \
  75. ls -lAFh bin/bashbrew-*; \
  76. file bin/bashbrew-*