Add Travis build

pull/2/head
Stefan Scherer 7 years ago
parent d9093470bb
commit 2a2c6b7ff8
No known key found for this signature in database
GPG Key ID: 5966AEAC37E957FA

@ -0,0 +1,20 @@
sudo: required
services:
- docker
env:
matrix:
- ARCH=arm
- ARCH=arm64
- ARCH=amd64
script:
- ./travis-build.sh
- ./travis-test.sh
- >
if [ -n "$TRAVIS_TAG" ]; then
# push image
travis_retry timeout 5m docker login -u="$DOCKER_USER" -p="$DOCKER_PASS"
./travis-deploy.sh
fi

@ -0,0 +1,14 @@
FROM golang
COPY . /code
WORKDIR /code
RUN CGO_ENABLED=0 go build -a -installsuffix cgo http.go
FROM scratch
COPY --from=0 /code/http /http
EXPOSE 8080
CMD ["/http"]

@ -0,0 +1,14 @@
FROM golang
COPY . /code
WORKDIR /code
RUN CGO_ENABLED=0 GOOS=linux GOARCH=arm go build -a -installsuffix cgo http.go
FROM scratch
COPY --from=0 /code/http /http
EXPOSE 8080
CMD ["/http"]

@ -0,0 +1,14 @@
FROM golang
COPY . /code
WORKDIR /code
RUN CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -a -installsuffix cgo http.go
FROM scratch
COPY --from=0 /code/http /http
EXPOSE 8080
CMD ["/http"]

@ -0,0 +1,39 @@
#!/bin/bash
set -e
which docker
systemctl stop docker
echo "Updating Docker engine to master"
curl -L -o /usr/local/bin/docker-containerd https://master.dockerproject.org/linux/amd64/docker-containerd
curl -L -o /usr/local/bin/docker-containerd-ctr https://master.dockerproject.org/linux/amd64/docker-containerd-ctr
curl -L -o /usr/local/bin/docker-containerd-shim https://master.dockerproject.org/linux/amd64/docker-containerd-shim
curl -L -o /usr/local/bin/dockerd https://master.dockerproject.org/linux/amd64/dockerd
curl -L -o /usr/local/bin/docker-init https://master.dockerproject.org/linux/amd64/docker-init
curl -L -o /usr/local/bin/docker-proxy https://master.dockerproject.org/linux/amd64/docker-proxy
curl -L -o /usr/local/bin/docker-runc https://master.dockerproject.org/linux/amd64/docker-runc
curl -L -o /usr/local/bin/docker https://master.dockerproject.org/linux/amd64/docker
systemctl start docker
docker version
if [ "$ARCH" != "amd64" ]; then
# prepare qemu
docker run --rm --privileged multiarch/qemu-user-static:register --reset
if [ "$ARCH" == "arm64" ]; then
# prepare qemu binary
docker create --name register hypriot/qemu-register
docker cp register:qemu-aarch64 qemu-aarch64-static
fi
fi
if [ -d tmp ]; then
docker rm build
rm -rf tmp
fi
docker build -t whoami -f "Dockerfile.$ARCH" .

@ -0,0 +1,45 @@
#!/bin/bash
set -e
image="stefanscherer/whoami"
docker tag whoami "$image:linux-$ARCH-$TRAVIS_TAG"
docker push "$image:linux-$ARCH-$TRAVIS_TAG"
if [ "$ARCH" == "amd64" ]; then
set +e
echo "Waiting for other images $image:linux-arm-$TRAVIS_TAG"
until docker run --rm stefanscherer/winspector "$image:linux-arm-$TRAVIS_TAG"
do
sleep 15
echo "Try again"
done
until docker run --rm stefanscherer/winspector "$image:linux-arm64-$TRAVIS_TAG"
do
sleep 15
echo "Try again"
done
until docker run --rm stefanscherer/winspector "$image:windows-amd64-$TRAVIS_TAG"
do
sleep 15
echo "Try again"
done
set -e
echo "Downloading manifest-tool"
wget https://github.com/estesp/manifest-tool/releases/download/v0.4.0/manifest-tool-linux-amd64
mv manifest-tool-linux-amd64 manifest-tool
chmod +x manifest-tool
./manifest-tool
echo "Pushing manifest $image:$TRAVIS_TAG"
./manifest-tool push from-args \
--platforms linux/amd64,linux/arm,linux/arm64,windows/amd64 \
--template "$image:OS-ARCH-$TRAVIS_TAG" \
--target "$image:$TRAVIS_TAG"
echo "Pushing manifest $image:latest"
./manifest-tool push from-args \
--platforms linux/amd64,linux/arm,linux/arm64,windows/amd64 \
--template "$image:OS-ARCH-$TRAVIS_TAG" \
--target "$image:latest"
fi

@ -0,0 +1,11 @@
#!/bin/bash
set -e
if [ "$ARCH" == "amd64" ]; then
# test image
docker run -d -p 8080:8080 --name=whoamitest whoami
sleep 5
docker logs whoamitest
fi
Loading…
Cancel
Save