Add step to generate multi-arch Docker container in CI
This commit is contained in:
parent
ea7a571d88
commit
d104ae8711
3 changed files with 65 additions and 1 deletions
13
.drone.yml
13
.drone.yml
|
@ -245,6 +245,17 @@ node:
|
||||||
nix-daemon: 1
|
nix-daemon: 1
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
- name: multiarch-docker
|
||||||
|
image: nixpkgs/nix:nixos-22.05
|
||||||
|
environment:
|
||||||
|
DOCKER_AUTH:
|
||||||
|
from_secret: docker_auth
|
||||||
|
HOME: "/root"
|
||||||
|
commands:
|
||||||
|
- mkdir -p /root/.docker
|
||||||
|
- echo $DOCKER_AUTH > /root/.docker/config.json
|
||||||
|
- export CONTAINER_TAG=${DRONE_TAG:-$DRONE_COMMIT}
|
||||||
|
- nix-shell --attr release --run "multiarch_docker"
|
||||||
- name: refresh-index
|
- name: refresh-index
|
||||||
image: nixpkgs/nix:nixos-22.05
|
image: nixpkgs/nix:nixos-22.05
|
||||||
environment:
|
environment:
|
||||||
|
@ -269,6 +280,6 @@ trigger:
|
||||||
|
|
||||||
---
|
---
|
||||||
kind: signature
|
kind: signature
|
||||||
hmac: 362639b4c9541ad9bd06ff7f72b5235b2b0216bcb16eececd25285b6fe94ba6f
|
hmac: 103a04785c98f5376a63ce22865c2576963019bbc4d828f200d2a470a3c821ea
|
||||||
|
|
||||||
...
|
...
|
||||||
|
|
23
nix/manifest-tool.nix
Normal file
23
nix/manifest-tool.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
pkgs:
|
||||||
|
pkgs.buildGoModule rec {
|
||||||
|
pname = "manifest-tool";
|
||||||
|
version = "2.0.5";
|
||||||
|
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "estesp";
|
||||||
|
repo = "manifest-tool";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "hjCGKnE0yrlnF/VIzOwcDzmQX3Wft+21KCny/opqdLg=";
|
||||||
|
} + "/v2";
|
||||||
|
|
||||||
|
vendorSha256 = null;
|
||||||
|
|
||||||
|
checkPhase = "true";
|
||||||
|
|
||||||
|
meta = with pkgs.lib; {
|
||||||
|
description = "Command line tool to create and query container image manifest list/indexes";
|
||||||
|
homepage = "https://github.com/estesp/manifest-tool";
|
||||||
|
license = licenses.asl20;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
30
shell.nix
30
shell.nix
|
@ -10,6 +10,7 @@ let
|
||||||
overlays = [ cargo2nixOverlay ];
|
overlays = [ cargo2nixOverlay ];
|
||||||
};
|
};
|
||||||
kaniko = (import ./nix/kaniko.nix) pkgs;
|
kaniko = (import ./nix/kaniko.nix) pkgs;
|
||||||
|
manifest-tool = (import ./nix/manifest-tool.nix) pkgs;
|
||||||
winscp = (import ./nix/winscp.nix) pkgs;
|
winscp = (import ./nix/winscp.nix) pkgs;
|
||||||
|
|
||||||
in
|
in
|
||||||
|
@ -84,6 +85,34 @@ function to_docker {
|
||||||
--verbosity=debug
|
--verbosity=debug
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function multiarch_docker {
|
||||||
|
manifest-tool push from-spec <(cat <<EOF
|
||||||
|
image: dxflrs/garage:''${CONTAINER_TAG}
|
||||||
|
manifests:
|
||||||
|
-
|
||||||
|
image: dxflrs/arm64_garage:''${CONTAINER_TAG}
|
||||||
|
platform:
|
||||||
|
architecture: arm64
|
||||||
|
os: linux
|
||||||
|
-
|
||||||
|
image: dxflrs/amd64_garage:''${CONTAINER_TAG}
|
||||||
|
platform:
|
||||||
|
architecture: amd64
|
||||||
|
os: linux
|
||||||
|
-
|
||||||
|
image: dxflrs/386_garage:''${CONTAINER_TAG}
|
||||||
|
platform:
|
||||||
|
architecture: 386
|
||||||
|
os: linux
|
||||||
|
-
|
||||||
|
image: dxflrs/arm_garage:''${CONTAINER_TAG}
|
||||||
|
platform:
|
||||||
|
architecture: arm
|
||||||
|
os: linux
|
||||||
|
EOF
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
function refresh_index {
|
function refresh_index {
|
||||||
aws \
|
aws \
|
||||||
--endpoint-url https://garage.deuxfleurs.fr \
|
--endpoint-url https://garage.deuxfleurs.fr \
|
||||||
|
@ -113,6 +142,7 @@ function refresh_index {
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
pkgs.awscli2
|
pkgs.awscli2
|
||||||
kaniko
|
kaniko
|
||||||
|
manifest-tool
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue