Merge 82a780d04c
into ba358ecbf5
This commit is contained in:
commit
62eb51af68
106
.drone.yml
106
.drone.yml
|
@ -222,22 +222,122 @@ pipeline:
|
||||||
event: [ push ]
|
event: [ push ]
|
||||||
branch: [ master ]
|
branch: [ master ]
|
||||||
|
|
||||||
|
docker:
|
||||||
|
image: golang:1.10
|
||||||
|
pull: true
|
||||||
|
commands:
|
||||||
|
- GOARCH=amd64 QEMU_ARCH=amd64 make docker-generate-arch-dockerfile docker-download-qemu-binary
|
||||||
|
- GOARCH=arm QEMU_ARCH=arm make docker-generate-arch-dockerfile docker-download-qemu-binary
|
||||||
|
- GOARCH=arm64 QEMU_ARCH=aarch64 make docker-generate-arch-dockerfile docker-download-qemu-binary
|
||||||
|
when:
|
||||||
|
event: [ push, tag ]
|
||||||
|
|
||||||
|
docker:
|
||||||
|
image: multiarch/qemu-user-static:register
|
||||||
|
pull: true
|
||||||
|
privileged: true
|
||||||
|
when:
|
||||||
|
event: [ push, tag ]
|
||||||
|
|
||||||
docker:
|
docker:
|
||||||
image: plugins/docker:17.12
|
image: plugins/docker:17.12
|
||||||
pull: true
|
pull: true
|
||||||
secrets: [ docker_username, docker_password ]
|
secrets: [ docker_username, docker_password ]
|
||||||
|
group: docker
|
||||||
repo: gitea/gitea
|
repo: gitea/gitea
|
||||||
tags: [ '${DRONE_BRANCH##release/v}' ]
|
tag: '${DRONE_BRANCH##release/v}-linux-amd64'
|
||||||
|
build_args:
|
||||||
|
- TARGET=amd64
|
||||||
|
dockerfile: docker/Dockerfile.amd64
|
||||||
when:
|
when:
|
||||||
event: [ push ]
|
event: [ push ]
|
||||||
branch: [ release/* ]
|
branch: [ release/* ]
|
||||||
|
|
||||||
docker:
|
docker:
|
||||||
image: plugins/docker:17.12
|
image: plugins/docker:17.12
|
||||||
secrets: [ docker_username, docker_password ]
|
|
||||||
pull: true
|
pull: true
|
||||||
|
secrets: [ docker_username, docker_password ]
|
||||||
|
group: docker
|
||||||
repo: gitea/gitea
|
repo: gitea/gitea
|
||||||
default_tags: true
|
tag: '${DRONE_BRANCH##release/v}-linux-arm'
|
||||||
|
build_args:
|
||||||
|
- TARGET=arm32v6
|
||||||
|
dockerfile: docker/Dockerfile.arm
|
||||||
|
when:
|
||||||
|
event: [ push ]
|
||||||
|
branch: [ release/* ]
|
||||||
|
|
||||||
|
docker:
|
||||||
|
image: plugins/docker:17.12
|
||||||
|
pull: true
|
||||||
|
secrets: [ docker_username, docker_password ]
|
||||||
|
group: docker
|
||||||
|
repo: gitea/gitea
|
||||||
|
tag: '${DRONE_BRANCH##release/v}-linux-arm64'
|
||||||
|
build_args:
|
||||||
|
- TARGET=arm64v8
|
||||||
|
dockerfile: docker/Dockerfile.aarch64
|
||||||
|
when:
|
||||||
|
event: [ push ]
|
||||||
|
branch: [ release/* ]
|
||||||
|
|
||||||
|
docker:
|
||||||
|
image: plugins/docker:17.12
|
||||||
|
pull: true
|
||||||
|
secrets: [ docker_username, docker_password ]
|
||||||
|
group: docker
|
||||||
|
repo: gitea/gitea
|
||||||
|
tag: 'latest-linux-amd64'
|
||||||
|
build_args:
|
||||||
|
- TARGET=amd64
|
||||||
|
dockerfile: docker/Dockerfile.amd64
|
||||||
|
when:
|
||||||
|
event: [ push, tag ]
|
||||||
|
|
||||||
|
docker:
|
||||||
|
image: plugins/docker:17.12
|
||||||
|
pull: true
|
||||||
|
secrets: [ docker_username, docker_password ]
|
||||||
|
group: docker
|
||||||
|
repo: gitea/gitea
|
||||||
|
tag: 'latest-linux-arm'
|
||||||
|
build_args:
|
||||||
|
- TARGET=arm32v6
|
||||||
|
dockerfile: docker/Dockerfile.arm
|
||||||
|
when:
|
||||||
|
event: [ push, tag ]
|
||||||
|
|
||||||
|
docker:
|
||||||
|
image: plugins/docker:17.12
|
||||||
|
pull: true
|
||||||
|
secrets: [ docker_username, docker_password ]
|
||||||
|
group: docker
|
||||||
|
repo: gitea/gitea
|
||||||
|
tag: 'latest-linux-arm64'
|
||||||
|
build_args:
|
||||||
|
- TARGET=arm64v8
|
||||||
|
dockerfile: docker/Dockerfile.aarch64
|
||||||
|
when:
|
||||||
|
event: [ push, tag ]
|
||||||
|
|
||||||
|
docker:
|
||||||
|
image: plugins/manifest
|
||||||
|
pull: true
|
||||||
|
secrets: [ docker_username, docker_password ]
|
||||||
|
platforms: [ linux/amd64, linux/arm, linux/arm64 ]
|
||||||
|
template: 'gitea/gitea:${DRONE_BRANCH##release/v}-OS-ARCH'
|
||||||
|
target: 'gitea/gitea:${DRONE_BRANCH##release/v}'
|
||||||
|
when:
|
||||||
|
event: [ push ]
|
||||||
|
branch: [ release/* ]
|
||||||
|
|
||||||
|
docker:
|
||||||
|
image: plugins/manifest
|
||||||
|
pull: true
|
||||||
|
secrets: [ docker_username, docker_password ]
|
||||||
|
platforms: [ linux/amd64, linux/arm, linux/arm64 ]
|
||||||
|
template: gitea/gitea:latest-OS-ARCH
|
||||||
|
target: gitea/gitea:latest
|
||||||
when:
|
when:
|
||||||
event: [ push, tag ]
|
event: [ push, tag ]
|
||||||
|
|
||||||
|
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -60,6 +60,9 @@ coverage.all
|
||||||
/integrations/pgsql.ini
|
/integrations/pgsql.ini
|
||||||
/node_modules
|
/node_modules
|
||||||
|
|
||||||
|
# Docker (cross build)
|
||||||
|
/docker/Dockerfile.*
|
||||||
|
/docker/qemu-*-static
|
||||||
|
|
||||||
# Snapcraft
|
# Snapcraft
|
||||||
snap/.snapcraft/
|
snap/.snapcraft/
|
||||||
|
|
14
Dockerfile
14
Dockerfile
|
@ -1,8 +1,9 @@
|
||||||
|
ARG target=library
|
||||||
###################################
|
###################################
|
||||||
#Build stage
|
#Build stage
|
||||||
FROM golang:1.10-alpine3.7 AS build-env
|
FROM $target/golang:1.10-alpine3.7 AS build-env
|
||||||
|
|
||||||
|
ARG GOARCH
|
||||||
ARG GITEA_VERSION
|
ARG GITEA_VERSION
|
||||||
ARG TAGS="sqlite"
|
ARG TAGS="sqlite"
|
||||||
ENV TAGS "bindata $TAGS"
|
ENV TAGS "bindata $TAGS"
|
||||||
|
@ -18,9 +19,13 @@ WORKDIR ${GOPATH}/src/code.gitea.io/gitea
|
||||||
RUN if [ -n "${GITEA_VERSION}" ]; then git checkout "${GITEA_VERSION}"; fi \
|
RUN if [ -n "${GITEA_VERSION}" ]; then git checkout "${GITEA_VERSION}"; fi \
|
||||||
&& make clean generate build
|
&& make clean generate build
|
||||||
|
|
||||||
FROM alpine:3.7
|
###################################
|
||||||
|
#Final build
|
||||||
|
FROM $target/alpine:3.7
|
||||||
LABEL maintainer="maintainers@gitea.io"
|
LABEL maintainer="maintainers@gitea.io"
|
||||||
|
|
||||||
|
#QEMU phase
|
||||||
|
|
||||||
EXPOSE 22 3000
|
EXPOSE 22 3000
|
||||||
|
|
||||||
RUN apk --no-cache add \
|
RUN apk --no-cache add \
|
||||||
|
@ -56,6 +61,7 @@ VOLUME ["/data"]
|
||||||
ENTRYPOINT ["/usr/bin/entrypoint"]
|
ENTRYPOINT ["/usr/bin/entrypoint"]
|
||||||
CMD ["/bin/s6-svscan", "/etc/s6"]
|
CMD ["/bin/s6-svscan", "/etc/s6"]
|
||||||
|
|
||||||
COPY docker /
|
COPY docker/etc /etc/
|
||||||
|
COPY docker/usr /usr/
|
||||||
COPY --from=build-env /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea
|
COPY --from=build-env /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea
|
||||||
RUN ln -s /app/gitea/gitea /usr/local/bin/gitea
|
RUN ln -s /app/gitea/gitea /usr/local/bin/gitea
|
||||||
|
|
6
Makefile
6
Makefile
|
@ -66,7 +66,7 @@ all: build
|
||||||
include docker/Makefile
|
include docker/Makefile
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean: docker-setup-clean
|
||||||
$(GO) clean -i ./...
|
$(GO) clean -i ./...
|
||||||
rm -rf $(EXECUTABLE) $(DIST) $(BINDATA) \
|
rm -rf $(EXECUTABLE) $(DIST) $(BINDATA) \
|
||||||
integrations*.test \
|
integrations*.test \
|
||||||
|
@ -267,7 +267,11 @@ release-linux:
|
||||||
@hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
|
@hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
|
||||||
$(GO) get -u github.com/karalabe/xgo; \
|
$(GO) get -u github.com/karalabe/xgo; \
|
||||||
fi
|
fi
|
||||||
|
ifneq ($(XGOARCH),)
|
||||||
|
xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets "linux/${XGOARCH}" -out gitea-$(VERSION) .
|
||||||
|
else
|
||||||
xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'linux/*' -out gitea-$(VERSION) .
|
xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'linux/*' -out gitea-$(VERSION) .
|
||||||
|
endif
|
||||||
ifeq ($(CI),drone)
|
ifeq ($(CI),drone)
|
||||||
mv /build/* $(DIST)/binaries
|
mv /build/* $(DIST)/binaries
|
||||||
endif
|
endif
|
||||||
|
|
52
docker/Makefile
vendored
52
docker/Makefile
vendored
|
@ -1,9 +1,19 @@
|
||||||
#Makefile related to docker
|
#Makefile related to docker
|
||||||
|
|
||||||
|
GOHOSTARCH := $(shell go env GOHOSTARCH)
|
||||||
|
QEMU_VERSION ?= v2.12.0
|
||||||
|
QEMU_ARCH ?= amd64
|
||||||
|
GOARCH ?= $(shell go env GOARCH)
|
||||||
|
TARGET ?= library
|
||||||
|
|
||||||
DOCKER_IMAGE ?= gitea/gitea
|
DOCKER_IMAGE ?= gitea/gitea
|
||||||
DOCKER_TAG ?= latest
|
DOCKER_TAG ?= latest
|
||||||
DOCKER_REF := $(DOCKER_IMAGE):$(DOCKER_TAG)
|
ifneq ($(TARGET), library)
|
||||||
|
DOCKER_PLATFORM ?= linux-$(GOARCH)
|
||||||
|
else
|
||||||
|
DOCKER_PLATFORM ?= $(shell docker version -f {{.Server.Os}}-{{.Server.Arch}} 2>/dev/null || echo 'undefined')
|
||||||
|
endif
|
||||||
|
DOCKER_REF ?= $(DOCKER_IMAGE):$(DOCKER_TAG)-$(DOCKER_PLATFORM)
|
||||||
|
|
||||||
.PHONY: docker
|
.PHONY: docker
|
||||||
docker:
|
docker:
|
||||||
|
@ -13,3 +23,41 @@ docker:
|
||||||
.PHONY: docker-build
|
.PHONY: docker-build
|
||||||
docker-build:
|
docker-build:
|
||||||
docker run -ti --rm -v $(CURDIR):/srv/app/src/code.gitea.io/gitea -w /srv/app/src/code.gitea.io/gitea -e TAGS="bindata $(TAGS)" webhippie/golang:edge make clean generate build
|
docker run -ti --rm -v $(CURDIR):/srv/app/src/code.gitea.io/gitea -w /srv/app/src/code.gitea.io/gitea -e TAGS="bindata $(TAGS)" webhippie/golang:edge make clean generate build
|
||||||
|
|
||||||
|
.PHONY: docker-cross
|
||||||
|
docker-cross : docker-setup-qemu
|
||||||
|
docker build --build-arg target=$(TARGET) --build-arg GOARCH=$(GOARCH) -f docker/Dockerfile.$(QEMU_ARCH) -t $(DOCKER_REF) .
|
||||||
|
#exemple TARGET=arm64v8 GOARCH=arm64 QEMU_ARCH=aarch64 make docker-cross
|
||||||
|
#exemple TARGET=amd64 GOARCH=amd64 QEMU_ARCH=amd64 make docker-cross
|
||||||
|
#exemple TARGET=arm32v6 GOARCH=arm QEMU_ARCH=arm make docker-cross
|
||||||
|
|
||||||
|
.PHONY: docker-generate-arch-dockerfile
|
||||||
|
docker-generate-arch-dockerfile:
|
||||||
|
@if [ "$(QEMU_ARCH)" != ${GOHOSTARCH} ]; then \
|
||||||
|
echo "Generate dockerfile for specific arch."; \
|
||||||
|
sed "s/^#QEMU phase/COPY docker\/qemu-${QEMU_ARCH}-static* \/usr\/bin\//g" Dockerfile > docker/Dockerfile.${QEMU_ARCH}; \
|
||||||
|
sed -i 's/^FROM $$target\/golang:1.10-alpine3.7 AS build-env/FROM karalabe\/xgo-latest AS build-env/g' docker/Dockerfile.${QEMU_ARCH}; \
|
||||||
|
sed -i 's/^RUN apk --no-cache add build-base git/RUN GOARCH=$$GOHOSTARCH go get -u github.com\/jteeuwen\/go-bindata\/.../g' docker/Dockerfile.${QEMU_ARCH}; \
|
||||||
|
sed -i 's/make clean generate build/PATH=$$PATH:\$$GOPATH\/bin\/ XGOARCH="${GOARCH}" make clean generate release-linux \&\& mv \/build\/gitea-* .\/gitea/g' docker/Dockerfile.${QEMU_ARCH}; \
|
||||||
|
else cp Dockerfile docker/Dockerfile.${QEMU_ARCH}; \
|
||||||
|
fi;
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: docker-download-qemu-binary
|
||||||
|
docker-download-qemu-binary:
|
||||||
|
@if [ "$(QEMU_ARCH)" != ${GOHOSTARCH} ]; then \
|
||||||
|
echo "Downloading qemu binary for multi-arch support."; \
|
||||||
|
(cd docker && curl -sL https://github.com/multiarch/qemu-user-static/releases/download/${QEMU_VERSION}/qemu-${QEMU_ARCH}-static.tar.gz | tar xz); \
|
||||||
|
fi;
|
||||||
|
|
||||||
|
.PHONY: docker-setup-qemu
|
||||||
|
docker-setup-qemu: docker-generate-arch-dockerfile docker-download-qemu-binary
|
||||||
|
@if [ "$(QEMU_ARCH)" != ${GOHOSTARCH} ]; then \
|
||||||
|
echo "Loading qemu libs for multi-arch support."; \
|
||||||
|
docker run --rm --privileged multiarch/qemu-user-static:register --reset; \
|
||||||
|
fi;
|
||||||
|
|
||||||
|
.PHONY: docker-setup-clean
|
||||||
|
docker-setup-clean:
|
||||||
|
rm -f docker/qemu-*-static
|
||||||
|
rm -f docker/Dockerfile.*
|
||||||
|
|
Loading…
Reference in New Issue
Block a user