Use syncthing/build:latest for building

This commit is contained in:
Jakob Borg 2015-02-11 10:17:15 +01:00
parent 57e8cd6eab
commit 35d3af5039
3 changed files with 2 additions and 111 deletions

View File

@ -2,7 +2,6 @@
set -euo pipefail set -euo pipefail
IFS=$'\n\t' IFS=$'\n\t'
DOCKERIMGV=1.4.1-1
STTRACE=${STTRACE:-} STTRACE=${STTRACE:-}
case "${1:-default}" in case "${1:-default}" in
@ -103,16 +102,12 @@ case "${1:-default}" in
fi fi
;; ;;
docker-init)
docker build -q -t syncthing/build:$DOCKERIMGV docker
;;
docker-all) docker-all)
docker run --rm -h syncthing-builder -u $(id -u) -t \ docker run --rm -h syncthing-builder -u $(id -u) -t \
-v $(pwd):/go/src/github.com/syncthing/syncthing \ -v $(pwd):/go/src/github.com/syncthing/syncthing \
-w /go/src/github.com/syncthing/syncthing \ -w /go/src/github.com/syncthing/syncthing \
-e "STTRACE=$STTRACE" \ -e "STTRACE=$STTRACE" \
syncthing/build:$DOCKERIMGV \ syncthing/build:latest \
sh -c './build.sh clean \ sh -c './build.sh clean \
&& go vet ./cmd/... ./internal/... \ && go vet ./cmd/... ./internal/... \
&& ( golint ./cmd/... ; golint ./internal/... ) | egrep -v "comment on exported|should have comment" \ && ( golint ./cmd/... ; golint ./internal/... ) | egrep -v "comment on exported|should have comment" \
@ -125,7 +120,7 @@ case "${1:-default}" in
-v $(pwd):/go/src/github.com/syncthing/syncthing \ -v $(pwd):/go/src/github.com/syncthing/syncthing \
-w /go/src/github.com/syncthing/syncthing \ -w /go/src/github.com/syncthing/syncthing \
-e "STTRACE=$STTRACE" \ -e "STTRACE=$STTRACE" \
syncthing/build:$DOCKERIMGV \ syncthing/build:latest \
sh -euxc './build.sh clean \ sh -euxc './build.sh clean \
&& go run build.go -race \ && go run build.go -race \
&& export GOPATH=$(pwd)/Godeps/_workspace:$GOPATH \ && export GOPATH=$(pwd)/Godeps/_workspace:$GOPATH \

View File

@ -1,75 +0,0 @@
FROM debian:squeeze
MAINTAINER Jakob Borg <jakob@nym.se>
ENV GOLANG_VERSION 1.4.1
# SCMs for "go get", gcc for cgo
RUN apt-get update && apt-get install -y \
ca-certificates curl gcc libc6-dev make \
bzr git mercurial unzip patch \
--no-install-recommends \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Get the binary dist of Go to be able to bootstrap gonative.
RUN curl -sSL https://golang.org/dl/go${GOLANG_VERSION}.linux-amd64.tar.gz \
| tar -v -C /usr/local -xz
ENV PATH /usr/local/go/bin:$PATH
ENV GOPATH /go
ENV GO386 387
ENV GOARM 5
ENV PATH /go/bin:$PATH
RUN mkdir /go
WORKDIR /go
# Use gonative to install native Go for most arch/OS combos
RUN go get github.com/calmh/gonative \
&& cd /usr/local \
&& rm -rf go \
&& gonative -version $GOLANG_VERSION
# Rebuild the special and missing versions, using patches as appropriate
# RUN mkdir /tmp/patches
# ADD *.patch /tmp/patches/
# RUN bash -xec '\
# cd /usr/local/go ; \
# for patch in /tmp/patches/*.patch ; do \
# patch -p0 < "$patch" ; \
# done \
# '
RUN bash -xec '\
cd /usr/local/go/src; \
for platform in linux/386 freebsd/386 windows/386 linux/arm openbsd/amd64 openbsd/386; do \
GOOS=${platform%/*} \
GOARCH=${platform##*/} \
CGO_ENABLED=0 \
./make.bash --no-clean 2>&1; \
done \
&& ./make.bash --no-clean \
'
# Install packages needed for test coverage
RUN go get github.com/tools/godep \
&& go get golang.org/x/tools/cmd/cover \
&& go get github.com/axw/gocov/gocov \
&& go get github.com/AlekSi/gocov-xml
# Install tools "go vet" and "golint"
RUN go get golang.org/x/tools/cmd/vet \
&& go get github.com/golang/lint/golint
# Build standard library for race
RUN go install -race std
# Random build users needs to be able to create stuff in /go
RUN chmod -R 777 /go/bin /go/pkg /go/src

View File

@ -1,29 +0,0 @@
Docker Build
============
Official builds are produced using a Docker image specified by the
Dockerfile in this directory. The following commands exactly reproduce
the official build process.
Create an image called `syncthing/build` with the build environment.
```
./build.sh docker-init
```
> This is a Debian based image containing the latest stable version of
> Go set up for cross compilation. The cross compilation uses the
> dynamically linked standard libraries and SSE instructions for amd64
> builds, but static linking and minimal instruction set for the 386 and
> arm builds. The command should be run in the main repo directory, as a
> user with permission to perform Docker operations.
Build the full set of supported binaries.
```
./build.sh docker-all
```
> This uses a temporary container with the image from above and a volume
> mapped to the directory containing the source. Tests are run and
> binary packages created.