diff options
author | Carlo Landmeter <clandmeter@alpinelinux.org> | 2019-05-17 06:49:12 +0000 |
---|---|---|
committer | Carlo Landmeter <clandmeter@alpinelinux.org> | 2019-05-21 20:11:52 +0000 |
commit | 2de11a34169283cae63dfaecda812f45292eddd3 (patch) | |
tree | d089563cf56847eafa627c0dcca4993058d17112 | |
parent | b45a86041bfc2e407ba13c1db80470da7667c8e8 (diff) | |
download | docker-abuild-2de11a34169283cae63dfaecda812f45292eddd3.tar.bz2 docker-abuild-2de11a34169283cae63dfaecda812f45292eddd3.tar.xz |
add drone image building support
-rw-r--r-- | .drone.jsonnet | 37 | ||||
-rw-r--r-- | .drone.yml | 288 | ||||
-rw-r--r-- | Dockerfile.in | 3 | ||||
-rw-r--r-- | Makefile | 3 | ||||
-rwxr-xr-x | dockerfiles.sh | 34 |
5 files changed, 362 insertions, 3 deletions
diff --git a/.drone.jsonnet b/.drone.jsonnet new file mode 100644 index 0000000..6fd35d5 --- /dev/null +++ b/.drone.jsonnet @@ -0,0 +1,37 @@ +local tags = [ 'v3.6', 'v3.7', 'v3.8', 'v3.9', 'edge' ]; +local tags_armv7 = [ 'v3.9', 'edge' ]; + +local pipeline(arch, darch, tags) = { + kind: 'pipeline', + name: arch, + platform: { + os: 'linux', + arch: darch, + }, + steps: [ + { + name: tag, + image: 'plugins/docker', + settings: { + username: { + from_secret: 'docker_user', + }, + password: { + from_secret: 'docker_pass', + }, + repo: 'clandmeter/docker-abuild', + tags: '%s-%s' % [ std.strReplace(tag,'v',''), arch], + dockerfile: 'Dockerfiles/%s/%s/Dockerfile' % [tag, arch], + }, + } + for tag in tags + ], +}; + +[ + pipeline('x86', 'amd64', tags), + pipeline('x86_64', 'amd64', tags), + pipeline('aarch64', 'arm64', tags), + pipeline('armhf', 'arm', tags), + pipeline('armv7', 'arm', tags_armv7), +] diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..18e0731 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,288 @@ +--- +kind: pipeline +name: x86 + +platform: + os: linux + arch: amd64 + +steps: +- name: v3.6 + image: plugins/docker + settings: + dockerfile: Dockerfiles/v3.6/x86/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: 3.6-x86 + username: + from_secret: docker_user + +- name: v3.7 + image: plugins/docker + settings: + dockerfile: Dockerfiles/v3.7/x86/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: 3.7-x86 + username: + from_secret: docker_user + +- name: v3.8 + image: plugins/docker + settings: + dockerfile: Dockerfiles/v3.8/x86/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: 3.8-x86 + username: + from_secret: docker_user + +- name: v3.9 + image: plugins/docker + settings: + dockerfile: Dockerfiles/v3.9/x86/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: 3.9-x86 + username: + from_secret: docker_user + +- name: edge + image: plugins/docker + settings: + dockerfile: Dockerfiles/edge/x86/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: edge-x86 + username: + from_secret: docker_user + +--- +kind: pipeline +name: x86_64 + +platform: + os: linux + arch: amd64 + +steps: +- name: v3.6 + image: plugins/docker + settings: + dockerfile: Dockerfiles/v3.6/x86_64/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: 3.6-x86_64 + username: + from_secret: docker_user + +- name: v3.7 + image: plugins/docker + settings: + dockerfile: Dockerfiles/v3.7/x86_64/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: 3.7-x86_64 + username: + from_secret: docker_user + +- name: v3.8 + image: plugins/docker + settings: + dockerfile: Dockerfiles/v3.8/x86_64/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: 3.8-x86_64 + username: + from_secret: docker_user + +- name: v3.9 + image: plugins/docker + settings: + dockerfile: Dockerfiles/v3.9/x86_64/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: 3.9-x86_64 + username: + from_secret: docker_user + +- name: edge + image: plugins/docker + settings: + dockerfile: Dockerfiles/edge/x86_64/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: edge-x86_64 + username: + from_secret: docker_user + +--- +kind: pipeline +name: aarch64 + +platform: + os: linux + arch: arm64 + +steps: +- name: v3.6 + image: plugins/docker + settings: + dockerfile: Dockerfiles/v3.6/aarch64/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: 3.6-aarch64 + username: + from_secret: docker_user + +- name: v3.7 + image: plugins/docker + settings: + dockerfile: Dockerfiles/v3.7/aarch64/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: 3.7-aarch64 + username: + from_secret: docker_user + +- name: v3.8 + image: plugins/docker + settings: + dockerfile: Dockerfiles/v3.8/aarch64/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: 3.8-aarch64 + username: + from_secret: docker_user + +- name: v3.9 + image: plugins/docker + settings: + dockerfile: Dockerfiles/v3.9/aarch64/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: 3.9-aarch64 + username: + from_secret: docker_user + +- name: edge + image: plugins/docker + settings: + dockerfile: Dockerfiles/edge/aarch64/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: edge-aarch64 + username: + from_secret: docker_user + +--- +kind: pipeline +name: armhf + +platform: + os: linux + arch: arm + +steps: +- name: v3.6 + image: plugins/docker + settings: + dockerfile: Dockerfiles/v3.6/armhf/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: 3.6-armhf + username: + from_secret: docker_user + +- name: v3.7 + image: plugins/docker + settings: + dockerfile: Dockerfiles/v3.7/armhf/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: 3.7-armhf + username: + from_secret: docker_user + +- name: v3.8 + image: plugins/docker + settings: + dockerfile: Dockerfiles/v3.8/armhf/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: 3.8-armhf + username: + from_secret: docker_user + +- name: v3.9 + image: plugins/docker + settings: + dockerfile: Dockerfiles/v3.9/armhf/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: 3.9-armhf + username: + from_secret: docker_user + +- name: edge + image: plugins/docker + settings: + dockerfile: Dockerfiles/edge/armhf/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: edge-armhf + username: + from_secret: docker_user + +--- +kind: pipeline +name: armv7 + +platform: + os: linux + arch: arm + +steps: +- name: v3.9 + image: plugins/docker + settings: + dockerfile: Dockerfiles/v3.9/armv7/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: 3.9-armv7 + username: + from_secret: docker_user + +- name: edge + image: plugins/docker + settings: + dockerfile: Dockerfiles/edge/armv7/Dockerfile + password: + from_secret: docker_pass + repo: clandmeter/docker-abuild + tags: edge-armv7 + username: + from_secret: docker_user + +... diff --git a/Dockerfile.in b/Dockerfile.in index 39c67cb..d02d113 100644 --- a/Dockerfile.in +++ b/Dockerfile.in @@ -3,9 +3,8 @@ MAINTAINER Richard Mortier <mort@cantab.net> RUN rm /etc/apk/repositories && \ printf -- >> /etc/apk/repositories \ - 'http://dl-cdn.alpinelinux.org/alpine/v%%ALPINE_TAG%%/%s\n' \ + 'http://dl-cdn.alpinelinux.org/alpine/%%ALPINE_REL%%/%s\n' \ main community $(test edge = "%%ALPINE_TAG%%" && echo testing) && \ - sed -i -e 's!/vedge/!/edge/!' /etc/apk/repositories && \ printf -- >> /etc/apk/repositories \ '/home/builder/packages/%s\n' \ main community testing @@ -30,7 +30,8 @@ images: $(patsubst %, build-%, $(TAGS)) .PHONY: build-% build-%: - sed 's/%%ALPINE_TAG%%/$*/' Dockerfile.in >| Dockerfile + sed 's!%%ALPINE_TAG%%!$*!;s!%%ALPINE_REL%%!$(subst v,,$*)!' \ + Dockerfile.in >| Dockerfile # XXX probably because I'm on an edge release of Docker for Mac with a beta # engine, DOCKER_BUILDKIT appears to have some strange behaviour so turning # it off for now diff --git a/dockerfiles.sh b/dockerfiles.sh new file mode 100755 index 0000000..b0b2fb7 --- /dev/null +++ b/dockerfiles.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +TEMPLATE="Dockerfile.in" +RELEASES="v3.6 v3.7 v3.8 v3.9 edge" +ARCHS="x86 x86_64 armhf armv7 aarch64" + +die() { + echo "$1" >&2 + exit 1 +} + +arch_to_image() { + case $1 in + armv7) echo arm32v7 ;; + aarch64) echo arm64v8 ;; + x86_64) echo amd64 ;; + armhf) echo arm32v6 ;; + x86) echo i386 ;; + *) die "Unknown arch detected: \"$1\"" + esac +} + +[ -d "Dockerfiles" ] && rm -rf Dockerfiles/* + +for REL in $RELEASES; do + for ARCH in $ARCHS; do + mkdir -p Dockerfiles/$REL/$ARCH + cat "$TEMPLATE" | + sed -e "s/%%ALPINE_IMG%%/$(arch_to_image $ARCH)/" \ + -e "s/%%ALPINE_TAG%%/${REL/v/}/" \ + -e "s/%%ALPINE_REL%%/$REL/" > \ + Dockerfiles/$REL/$ARCH/Dockerfile + done +done |