Add Docker Hub image builds
This commit is contained in:
parent
0161509b5f
commit
98bfb82787
63
.travis.yml
63
.travis.yml
|
@ -1,15 +1,9 @@
|
||||||
language: go
|
language: go
|
||||||
sudo: false
|
sudo: false
|
||||||
|
|
||||||
go:
|
go:
|
||||||
- 1.11.x
|
- 1.11.x
|
||||||
- 1.x
|
- 1.x
|
||||||
|
|
||||||
cache:
|
|
||||||
directories:
|
|
||||||
- $HOME/.cache/go-build
|
|
||||||
- $HOME/gopath/pkg/mod
|
|
||||||
- $HOME/Library/Caches/go-build
|
|
||||||
|
|
||||||
os:
|
os:
|
||||||
- linux
|
- linux
|
||||||
- osx
|
- osx
|
||||||
|
@ -21,6 +15,12 @@ before_install:
|
||||||
install:
|
install:
|
||||||
- npm --prefix client install
|
- npm --prefix client install
|
||||||
|
|
||||||
|
cache:
|
||||||
|
directories:
|
||||||
|
- $HOME/.cache/go-build
|
||||||
|
- $HOME/gopath/pkg/mod
|
||||||
|
- $HOME/Library/Caches/go-build
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- node -v
|
- node -v
|
||||||
- npm -v
|
- npm -v
|
||||||
|
@ -32,3 +32,52 @@ script:
|
||||||
|
|
||||||
after_success:
|
after_success:
|
||||||
- bash <(curl -s https://codecov.io/bash)
|
- bash <(curl -s https://codecov.io/bash)
|
||||||
|
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
# Release build configuration
|
||||||
|
- name: release
|
||||||
|
go:
|
||||||
|
- 1.11.x
|
||||||
|
os:
|
||||||
|
- linux
|
||||||
|
|
||||||
|
script:
|
||||||
|
- node -v
|
||||||
|
- npm -v
|
||||||
|
# Run tests just in case
|
||||||
|
- go test -race -v -bench=. ./...
|
||||||
|
# Prepare releases
|
||||||
|
- ./release.sh
|
||||||
|
- ls -l dist
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
provider: releases
|
||||||
|
api_key: $GITHUB_TOKEN
|
||||||
|
file:
|
||||||
|
- dist/AdGuardHome_*
|
||||||
|
on:
|
||||||
|
repo: AdguardTeam/AdGuardHome
|
||||||
|
tags: true
|
||||||
|
draft: true
|
||||||
|
file_glob: true
|
||||||
|
skip_cleanup: true
|
||||||
|
|
||||||
|
- name: docker
|
||||||
|
if: type != pull_request AND (branch = master OR tag = true)
|
||||||
|
go:
|
||||||
|
- 1.11.x
|
||||||
|
os:
|
||||||
|
- linux
|
||||||
|
services:
|
||||||
|
- docker
|
||||||
|
before_script:
|
||||||
|
- nvm install node
|
||||||
|
- npm install -g npm
|
||||||
|
script:
|
||||||
|
- docker login -u="$DOCKER_USER" -p="$DOCKER_PASSWORD"
|
||||||
|
- ./build_docker.sh
|
||||||
|
after_script:
|
||||||
|
- docker images
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
FROM golang:alpine AS build
|
||||||
|
|
||||||
|
RUN apk add --update git make build-base npm && \
|
||||||
|
rm -rf /var/cache/apk/*
|
||||||
|
|
||||||
|
WORKDIR /src/AdGuardHome
|
||||||
|
COPY . /src/AdGuardHome
|
||||||
|
RUN make
|
||||||
|
|
||||||
|
FROM alpine:latest
|
||||||
|
LABEL maintainer="AdGuard Team <devteam@adguard.com>"
|
||||||
|
|
||||||
|
# Update CA certs
|
||||||
|
RUN apk --no-cache --update add ca-certificates && \
|
||||||
|
rm -rf /var/cache/apk/*
|
||||||
|
|
||||||
|
COPY --from=build /src/AdGuardHome/AdGuardHome /AdGuardHome
|
||||||
|
|
||||||
|
EXPOSE 53 3000
|
||||||
|
|
||||||
|
VOLUME /data
|
||||||
|
|
||||||
|
ENTRYPOINT ["/AdGuardHome"]
|
||||||
|
CMD ["-h", "0.0.0.0"]
|
|
@ -1,48 +0,0 @@
|
||||||
FROM easypi/alpine-arm:latest
|
|
||||||
LABEL maintainer="Erik Rogers <erik.rogers@live.com>"
|
|
||||||
|
|
||||||
# AdGuard version
|
|
||||||
ARG ADGUARD_VERSION="0.92-hotfix2"
|
|
||||||
ENV ADGUARD_VERSION $ADGUARD_VERSION
|
|
||||||
|
|
||||||
# AdGuard architecture and package info
|
|
||||||
ARG ADGUARD_ARCH="linux_arm"
|
|
||||||
ENV ADGUARD_ARCH ${ADGUARD_ARCH}
|
|
||||||
ENV ADGUARD_PACKAGE "AdGuardHome_v${ADGUARD_VERSION}_${ADGUARD_ARCH}"
|
|
||||||
|
|
||||||
# AdGuard release info
|
|
||||||
ARG ADGUARD_ARCHIVE="${ADGUARD_PACKAGE}.tar.gz"
|
|
||||||
ENV ADGUARD_ARCHIVE ${ADGUARD_ARCHIVE}
|
|
||||||
ARG ADGUARD_RELEASE="https://github.com/AdguardTeam/AdGuardHome/releases/download/v${ADGUARD_VERSION}/${ADGUARD_ARCHIVE}"
|
|
||||||
ENV ADGUARD_RELEASE ${ADGUARD_RELEASE}
|
|
||||||
|
|
||||||
# AdGuard directory
|
|
||||||
ARG ADGUARD_DIR="/data/adguard"
|
|
||||||
ENV ADGUARD_DIR ${ADGUARD_DIR}
|
|
||||||
|
|
||||||
# Update CA certs and download AdGuard binaries
|
|
||||||
RUN apk --no-cache --update add ca-certificates \
|
|
||||||
&& cd /tmp \
|
|
||||||
&& wget ${ADGUARD_RELEASE} \
|
|
||||||
&& tar xvf ${ADGUARD_ARCHIVE} \
|
|
||||||
&& mkdir -p "${ADGUARD_DIR}" \
|
|
||||||
&& cp "AdGuardHome/AdGuardHome" "${ADGUARD_DIR}" \
|
|
||||||
&& chmod +x "${ADGUARD_DIR}/AdGuardHome" \
|
|
||||||
&& rm -rf "AdGuardHome" \
|
|
||||||
&& rm ${ADGUARD_ARCHIVE}
|
|
||||||
|
|
||||||
# Expose DNS port 53
|
|
||||||
EXPOSE 53
|
|
||||||
|
|
||||||
# Expose UI port 3000
|
|
||||||
ARG ADGUARD_UI_HOST="0.0.0.0"
|
|
||||||
ENV ADGUARD_UI_HOST ${ADGUARD_UI_HOST}
|
|
||||||
ARG ADGUARD_UI_PORT="3000"
|
|
||||||
ENV ADGUARD_UI_PORT ${ADGUARD_UI_PORT}
|
|
||||||
|
|
||||||
EXPOSE ${ADGUARD_UI_PORT}
|
|
||||||
|
|
||||||
# Run AdGuardHome
|
|
||||||
WORKDIR ${ADGUARD_DIR}
|
|
||||||
VOLUME ${ADGUARD_DIR}
|
|
||||||
ENTRYPOINT ./AdGuardHome --host ${ADGUARD_UI_HOST} --port ${ADGUARD_UI_PORT}
|
|
|
@ -1,48 +0,0 @@
|
||||||
FROM alpine:latest
|
|
||||||
LABEL maintainer="Erik Rogers <erik.rogers@live.com>"
|
|
||||||
|
|
||||||
# AdGuard version
|
|
||||||
ARG ADGUARD_VERSION="0.92-hotfix2"
|
|
||||||
ENV ADGUARD_VERSION $ADGUARD_VERSION
|
|
||||||
|
|
||||||
# AdGuard architecture and package info
|
|
||||||
ARG ADGUARD_ARCH="linux_386"
|
|
||||||
ENV ADGUARD_ARCH ${ADGUARD_ARCH}
|
|
||||||
ENV ADGUARD_PACKAGE "AdGuardHome_v${ADGUARD_VERSION}_${ADGUARD_ARCH}"
|
|
||||||
|
|
||||||
# AdGuard release info
|
|
||||||
ARG ADGUARD_ARCHIVE="${ADGUARD_PACKAGE}.tar.gz"
|
|
||||||
ENV ADGUARD_ARCHIVE ${ADGUARD_ARCHIVE}
|
|
||||||
ARG ADGUARD_RELEASE="https://github.com/AdguardTeam/AdGuardHome/releases/download/v${ADGUARD_VERSION}/${ADGUARD_ARCHIVE}"
|
|
||||||
ENV ADGUARD_RELEASE ${ADGUARD_RELEASE}
|
|
||||||
|
|
||||||
# AdGuard directory
|
|
||||||
ARG ADGUARD_DIR="/data/adguard"
|
|
||||||
ENV ADGUARD_DIR ${ADGUARD_DIR}
|
|
||||||
|
|
||||||
# Update CA certs and download AdGuard binaries
|
|
||||||
RUN apk --no-cache --update add ca-certificates \
|
|
||||||
&& cd /tmp \
|
|
||||||
&& wget ${ADGUARD_RELEASE} \
|
|
||||||
&& tar xvf ${ADGUARD_ARCHIVE} \
|
|
||||||
&& mkdir -p "${ADGUARD_DIR}" \
|
|
||||||
&& cp "AdGuardHome/AdGuardHome" "${ADGUARD_DIR}" \
|
|
||||||
&& chmod +x "${ADGUARD_DIR}/AdGuardHome" \
|
|
||||||
&& rm -rf "AdGuardHome" \
|
|
||||||
&& rm ${ADGUARD_ARCHIVE}
|
|
||||||
|
|
||||||
# Expose DNS port 53
|
|
||||||
EXPOSE 53
|
|
||||||
|
|
||||||
# Expose UI port 3000
|
|
||||||
ARG ADGUARD_UI_HOST="0.0.0.0"
|
|
||||||
ENV ADGUARD_UI_HOST ${ADGUARD_UI_HOST}
|
|
||||||
ARG ADGUARD_UI_PORT="3000"
|
|
||||||
ENV ADGUARD_UI_PORT ${ADGUARD_UI_PORT}
|
|
||||||
|
|
||||||
EXPOSE ${ADGUARD_UI_PORT}
|
|
||||||
|
|
||||||
# Run AdGuardHome
|
|
||||||
WORKDIR ${ADGUARD_DIR}
|
|
||||||
VOLUME ${ADGUARD_DIR}
|
|
||||||
ENTRYPOINT ./AdGuardHome --host ${ADGUARD_UI_HOST} --port ${ADGUARD_UI_PORT}
|
|
|
@ -1,48 +0,0 @@
|
||||||
FROM alpine:latest
|
|
||||||
LABEL maintainer="Erik Rogers <erik.rogers@live.com>"
|
|
||||||
|
|
||||||
# AdGuard version
|
|
||||||
ARG ADGUARD_VERSION="0.92-hotfix2"
|
|
||||||
ENV ADGUARD_VERSION $ADGUARD_VERSION
|
|
||||||
|
|
||||||
# AdGuard architecture and package info
|
|
||||||
ARG ADGUARD_ARCH="linux_amd64"
|
|
||||||
ENV ADGUARD_ARCH ${ADGUARD_ARCH}
|
|
||||||
ENV ADGUARD_PACKAGE "AdGuardHome_v${ADGUARD_VERSION}_${ADGUARD_ARCH}"
|
|
||||||
|
|
||||||
# AdGuard release info
|
|
||||||
ARG ADGUARD_ARCHIVE="${ADGUARD_PACKAGE}.tar.gz"
|
|
||||||
ENV ADGUARD_ARCHIVE ${ADGUARD_ARCHIVE}
|
|
||||||
ARG ADGUARD_RELEASE="https://github.com/AdguardTeam/AdGuardHome/releases/download/v${ADGUARD_VERSION}/${ADGUARD_ARCHIVE}"
|
|
||||||
ENV ADGUARD_RELEASE ${ADGUARD_RELEASE}
|
|
||||||
|
|
||||||
# AdGuard directory
|
|
||||||
ARG ADGUARD_DIR="/data/adguard"
|
|
||||||
ENV ADGUARD_DIR ${ADGUARD_DIR}
|
|
||||||
|
|
||||||
# Update CA certs and download AdGuard binaries
|
|
||||||
RUN apk --no-cache --update add ca-certificates \
|
|
||||||
&& cd /tmp \
|
|
||||||
&& wget ${ADGUARD_RELEASE} \
|
|
||||||
&& tar xvf ${ADGUARD_ARCHIVE} \
|
|
||||||
&& mkdir -p "${ADGUARD_DIR}" \
|
|
||||||
&& cp "AdGuardHome/AdGuardHome" "${ADGUARD_DIR}" \
|
|
||||||
&& chmod +x "${ADGUARD_DIR}/AdGuardHome" \
|
|
||||||
&& rm -rf "AdGuardHome" \
|
|
||||||
&& rm ${ADGUARD_ARCHIVE}
|
|
||||||
|
|
||||||
# Expose DNS port 53
|
|
||||||
EXPOSE 53
|
|
||||||
|
|
||||||
# Expose UI port 3000
|
|
||||||
ARG ADGUARD_UI_HOST="0.0.0.0"
|
|
||||||
ENV ADGUARD_UI_HOST ${ADGUARD_UI_HOST}
|
|
||||||
ARG ADGUARD_UI_PORT="3000"
|
|
||||||
ENV ADGUARD_UI_PORT ${ADGUARD_UI_PORT}
|
|
||||||
|
|
||||||
EXPOSE ${ADGUARD_UI_PORT}
|
|
||||||
|
|
||||||
# Run AdGuardHome
|
|
||||||
WORKDIR ${ADGUARD_DIR}
|
|
||||||
VOLUME ${ADGUARD_DIR}
|
|
||||||
ENTRYPOINT ./AdGuardHome --host ${ADGUARD_UI_HOST} --port ${ADGUARD_UI_PORT}
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
FROM alpine:latest
|
||||||
|
LABEL maintainer="AdGuard Team <devteam@adguard.com>"
|
||||||
|
|
||||||
|
# Update CA certs
|
||||||
|
RUN apk --no-cache --update add ca-certificates && \
|
||||||
|
rm -rf /var/cache/apk/*
|
||||||
|
|
||||||
|
COPY ./AdGuardHome /AdGuardHome
|
||||||
|
|
||||||
|
EXPOSE 53 3000
|
||||||
|
|
||||||
|
VOLUME /data
|
||||||
|
|
||||||
|
ENTRYPOINT ["/AdGuardHome"]
|
||||||
|
CMD ["-h", "0.0.0.0"]
|
|
@ -0,0 +1,65 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -eE
|
||||||
|
set -o pipefail
|
||||||
|
set -x
|
||||||
|
|
||||||
|
DOCKERFILE="Dockerfile.travis"
|
||||||
|
if [ "${TRAVIS_BRANCH}" == "master" ]
|
||||||
|
then
|
||||||
|
VERSION="latest"
|
||||||
|
else
|
||||||
|
VERSION=`git describe --abbrev=4 --dirty --always --tags`
|
||||||
|
fi
|
||||||
|
|
||||||
|
build_image() {
|
||||||
|
from="$(awk '$1 == toupper("FROM") { print $2 }' ${DOCKERFILE})"
|
||||||
|
|
||||||
|
# See https://hub.docker.com/r/multiarch/alpine/tags
|
||||||
|
case "${GOARCH}" in
|
||||||
|
arm64)
|
||||||
|
alpineArch='arm64-edge'
|
||||||
|
imageArch='arm64'
|
||||||
|
;;
|
||||||
|
arm)
|
||||||
|
alpineArch='armhf-edge'
|
||||||
|
imageArch='armhf'
|
||||||
|
;;
|
||||||
|
386)
|
||||||
|
alpineArch='i386-edge'
|
||||||
|
imageArch='i386'
|
||||||
|
;;
|
||||||
|
amd64)
|
||||||
|
alpineArch='amd64-edge'
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
alpineArch='amd64-edge'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ "${GOOS}" == "linux" ] && [ "${GOARCH}" == "amd64" ]
|
||||||
|
then
|
||||||
|
image="adguard/adguardhome:${VERSION}"
|
||||||
|
else
|
||||||
|
image="adguard/adguardhome:${imageArch}-${VERSION}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
make cleanfast; CGO_DISABLED=1 make
|
||||||
|
|
||||||
|
docker pull "multiarch/alpine:${alpineArch}"
|
||||||
|
docker tag "multiarch/alpine:${alpineArch}" "$from"
|
||||||
|
docker build -t "${image}" -f ${DOCKERFILE} .
|
||||||
|
docker push ${image}
|
||||||
|
docker rmi "$from"
|
||||||
|
}
|
||||||
|
|
||||||
|
# prepare qemu
|
||||||
|
docker run --rm --privileged multiarch/qemu-user-static:register --reset
|
||||||
|
|
||||||
|
make clean
|
||||||
|
|
||||||
|
# Prepare releases
|
||||||
|
GOOS=linux GOARCH=amd64 build_image
|
||||||
|
GOOS=linux GOARCH=386 build_image
|
||||||
|
GOOS=linux GOARCH=arm GOARM=6 build_image
|
||||||
|
GOOS=linux GOARCH=arm64 GOARM=6 build_image
|
Loading…
Reference in New Issue