aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarlo Landmeter <clandmeter@alpinelinux.org>2019-05-17 06:49:12 +0000
committerCarlo Landmeter <clandmeter@alpinelinux.org>2019-05-21 20:11:52 +0000
commit2de11a34169283cae63dfaecda812f45292eddd3 (patch)
treed089563cf56847eafa627c0dcca4993058d17112
parentb45a86041bfc2e407ba13c1db80470da7667c8e8 (diff)
downloaddocker-abuild-2de11a34169283cae63dfaecda812f45292eddd3.tar.bz2
docker-abuild-2de11a34169283cae63dfaecda812f45292eddd3.tar.xz
add drone image building support
-rw-r--r--.drone.jsonnet37
-rw-r--r--.drone.yml288
-rw-r--r--Dockerfile.in3
-rw-r--r--Makefile3
-rwxr-xr-xdockerfiles.sh34
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
diff --git a/Makefile b/Makefile
index 106a9ab..326c30b 100644
--- a/Makefile
+++ b/Makefile
@@ -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