Compare commits

...

14 Commits

Author SHA1 Message Date
e27af3b995 Drone updates
All checks were successful
continuous-integration/drone/push Build is passing
2020-02-12 18:52:44 -08:00
5268a8d467 Remove get_qemu 2020-02-12 18:42:34 -08:00
aed73fe158 Consolidate
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-30 16:14:51 -08:00
efb29fc022 Try moving everything to a new dir
Some checks failed
continuous-integration/drone/push Build is failing
2020-01-30 16:04:59 -08:00
079057ace5 Fix drone yaml 2020-01-30 16:04:59 -08:00
cba660bf03 More debug in bin dir 2020-01-30 16:01:51 -08:00
a35ae1081b no touchy
Some checks failed
continuous-integration/drone/push Build is failing
2020-01-30 15:53:45 -08:00
7b99514459 Ok. Up a dir?
Some checks failed
continuous-integration/drone/push Build is failing
2020-01-30 15:53:13 -08:00
a4104a5201 Very weird... How about before we touch a file?
Some checks failed
continuous-integration/drone/push Build is failing
2020-01-30 15:51:26 -08:00
3594fd1de3 Let's see what's in that dir
Some checks failed
continuous-integration/drone/push Build is failing
2020-01-30 15:48:52 -08:00
33e42659fc Touch dummy file in qemu image
Some checks failed
continuous-integration/drone/push Build is failing
2020-01-30 15:46:05 -08:00
6ec3055815 Try to copy single qemu file
Some checks failed
continuous-integration/drone/push Build is failing
2020-01-30 15:44:05 -08:00
7bc4392f5f Move build to a single file
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-30 11:54:40 -08:00
978fb1991f Merge branch 'test-branch'
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-04 22:34:21 -07:00
5 changed files with 24 additions and 128 deletions

View File

@ -1,25 +1,6 @@
kind: pipeline
name: tests
trigger:
event:
- push
- tag
steps:
- name: run tests
image: ubuntu:bionic
commands:
- apt-get update
- apt-get install -y make
- make test
---
kind: pipeline
name: linux-amd64
depends_on:
- tests
name: docker builds
trigger:
event:
@ -30,84 +11,35 @@ trigger:
- refs/tags/v*
steps:
- name: get qemu
image: busybox
commands:
- sh ./get_qemu.sh x86_64
- name: build
- name: build amd64
image: plugins/docker
settings:
repo: iamthefij/multiarch-pipeline-test
auto_tag: true
auto_tag_suffix: linux-amd64
auto_tag_suffix: drone-amd64
username:
from_secret: docker_username
password:
from_secret: docker_password
---
kind: pipeline
name: linux-arm
depends_on:
- tests
trigger:
event:
- push
- tag
ref:
- refs/heads/master
- refs/tags/v*
steps:
- name: get qemu
image: busybox
commands:
- sh ./get_qemu.sh arm
- name: build
- name: build arm32v7
image: plugins/docker
settings:
repo: iamthefij/multiarch-pipeline-test
auto_tag: true
auto_tag_suffix: linux-arm
auto_tag_suffix: drone-arm
username:
from_secret: docker_username
password:
from_secret: docker_password
build_args:
- ARCH=arm
- REPO=arm32v6
---
kind: pipeline
name: linux-arm64
depends_on:
- tests
trigger:
event:
- push
- tag
ref:
- refs/heads/master
- refs/tags/v*
steps:
- name: get qemu
image: busybox
commands:
- sh ./get_qemu.sh aarch64
- name: build
- REPO=arm32v7
- name: build-arm64
image: plugins/docker
settings:
repo: iamthefij/multiarch-pipeline-test
auto_tag: true
auto_tag_suffix: linux-arm64
auto_tag_suffix: drone-arm64
username:
from_secret: docker_username
password:
@ -115,33 +47,13 @@ steps:
build_args:
- ARCH=aarch64
- REPO=arm64v8
---
kind: pipeline
name: manifest
depends_on:
- linux-amd64
- linux-arm
- linux-arm64
trigger:
event:
- push
- tag
ref:
- refs/heads/master
- refs/tags/v*
steps:
- name: publish manifest
image: plugins/manifest
settings:
spec: manifest.tmpl
spec: drone-manifest.tmpl
auto_tag: true
ignore_missing: true
username:
from_secret: docker_username
password:
from_secret: docker_password

View File

@ -2,11 +2,19 @@
# The following will work with any library image that supports multi-arch
# Other repositories may use tag suffix instead
ARG REPO=library
FROM multiarch/qemu-user-static:4.2.0-2 as qemu-user-static
# On some systems, touching a dummy file in the /usr/bin dir doesn't work
# and instead removes all files previously in the directory. Not sure why
# this is happening. Moving everything to a different directory seems to
# work fine though.
RUN mkdir /qemu && touch /qemu/qemu-x86_64-dummy && cp /usr/bin/qemu-* /qemu/
FROM ${REPO}/python:3-alpine
# This should be the target qemu arch
ARG ARCH=x86_64
COPY ./build/qemu-${ARCH}-static /usr/bin/
COPY --from=qemu-user-static /qemu/qemu-${ARCH}-* /usr/bin/
# Everything below here is just a simple example

View File

@ -7,28 +7,18 @@ default: test
test:
@echo ok
# Targets to download required qemu binaries for running on an amd64 machine
build/qemu-x86_64-static:
./get_qemu.sh x86_64
build/qemu-arm-static:
./get_qemu.sh arm
build/qemu-aarch64-static:
./get_qemu.sh aarch64
# Build Docker image for host architechture (amd64)
.PHONY: build
build: build/qemu-x86_64-static
build:
docker build . -t ${DOCKER_TAG}-linux-amd64
# Cross build for arm architechtures
.PHONY: cross-build-arm
cross-build-arm: build/qemu-arm-static
cross-build-arm:
docker build --build-arg REPO=arm32v6 --build-arg ARCH=arm . -t ${DOCKER_TAG}-linux-arm
.PHONY: cross-build-arm
cross-build-arm64: build/qemu-aarch64-static
cross-build-arm64:
docker build --build-arg REPO=arm64v8 --build-arg ARCH=aarch64 . -t ${DOCKER_TAG}-linux-arm64
# Run on host architechture

View File

@ -7,18 +7,18 @@ tags:
{{/if}}
manifests:
-
image: iamthefij/multiarch-pipeline-test:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64
image: iamthefij/multiarch-pipeline-test:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}drone-amd64
platform:
architecture: amd64
os: linux
-
image: iamthefij/multiarch-pipeline-test:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64
image: iamthefij/multiarch-pipeline-test:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}drone-arm64
platform:
architecture: arm64
os: linux
variant: v8
-
image: iamthefij/multiarch-pipeline-test:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm
image: iamthefij/multiarch-pipeline-test:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}drone-arm
platform:
architecture: arm
os: linux

View File

@ -1,14 +0,0 @@
#! /bin/bash
HOST_ARCH=x86_64
VERSION=v2.9.1-1
mkdir -p build
cd build
# Multiple args can be passed in, but in most cases (Makefile and .drone.yml) we only use one at a time
for target_arch in $*; do
wget https://github.com/multiarch/qemu-user-static/releases/download/$VERSION/${HOST_ARCH}_qemu-${target_arch}-static.tar.gz
tar -xvf ${HOST_ARCH}_qemu-${target_arch}-static.tar.gz
rm ${HOST_ARCH}_qemu-${target_arch}-static.tar.gz
done