Move to starlark builds and fix multi-arch
This commit is contained in:
parent
7e1b593757
commit
d1be7a6024
100
.drone.star
Normal file
100
.drone.star
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
# Build pipelines
|
||||||
|
def main(ctx):
|
||||||
|
pipelines = []
|
||||||
|
|
||||||
|
# Add docker push pipelines
|
||||||
|
pipelines += push_to_docker(ctx, "client")
|
||||||
|
pipelines += push_to_docker(ctx, "server")
|
||||||
|
|
||||||
|
return pipelines
|
||||||
|
|
||||||
|
|
||||||
|
# Builds a pipeline to push to docker
|
||||||
|
def push_to_docker(ctx, context):
|
||||||
|
return [{
|
||||||
|
"kind": "pipeline",
|
||||||
|
"name": "push to docker ({})".format(context),
|
||||||
|
# Add tests dependency
|
||||||
|
"depends_on": [],
|
||||||
|
"trigger": {
|
||||||
|
"event": ["tag"],
|
||||||
|
"ref": [
|
||||||
|
"refs/heads/master",
|
||||||
|
"refs/tags/v*",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
"steps": [
|
||||||
|
push_docker_step(context, "linux-amd64", "x86_64", "library"),
|
||||||
|
push_docker_step(context, "linux-arm", "arm", "arm32v6"),
|
||||||
|
push_docker_step(context, "linux-arm64", "aarch64", "arm64v8"),
|
||||||
|
{
|
||||||
|
"name": "publish manifest",
|
||||||
|
"image": "plugins/manifest",
|
||||||
|
"settings": {
|
||||||
|
"spec": "manifest-{}.tmpl".format(context),
|
||||||
|
"auto_tag": True,
|
||||||
|
"ignore_missing": True,
|
||||||
|
"username": {
|
||||||
|
"from_secret": "docker_username",
|
||||||
|
},
|
||||||
|
"password": {
|
||||||
|
"from_secret": "docker_password",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
notify_step(),
|
||||||
|
],
|
||||||
|
}]
|
||||||
|
|
||||||
|
|
||||||
|
# Build and push docker image
|
||||||
|
def push_docker_step(context, tag_suffix, arch="amd64", repo="library"):
|
||||||
|
return {
|
||||||
|
"name": "build",
|
||||||
|
"image": "plugins/docker",
|
||||||
|
"settings": {
|
||||||
|
"repo": "iamthefij/dockamole-{}".format(context),
|
||||||
|
"context": context,
|
||||||
|
"auto_tag": True,
|
||||||
|
"auto_tag_suffix": tag_suffix,
|
||||||
|
"username": {
|
||||||
|
"from_secret": "docker_username",
|
||||||
|
},
|
||||||
|
"password": {
|
||||||
|
"from_secret": "docker_password",
|
||||||
|
},
|
||||||
|
"build_args": [
|
||||||
|
"ARCH={}".format(arch),
|
||||||
|
"REPO={}".format(repo),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Builds a notify step that will notify when the previous step changes
|
||||||
|
def notify_step():
|
||||||
|
return {
|
||||||
|
"name": "notify",
|
||||||
|
"image": "drillster/drone-email",
|
||||||
|
"settings": {
|
||||||
|
"host": {
|
||||||
|
"from_secret": "SMTP_HOST",
|
||||||
|
},
|
||||||
|
"username": {
|
||||||
|
"from_secret": "SMTP_USER",
|
||||||
|
},
|
||||||
|
"password": {
|
||||||
|
"from_secret": "SMTP_PASS",
|
||||||
|
},
|
||||||
|
"from": "drone@iamthefij.com",
|
||||||
|
},
|
||||||
|
"when": {
|
||||||
|
"status": [
|
||||||
|
"changed",
|
||||||
|
"failure",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# vim: ft=python
|
139
.drone.yml
139
.drone.yml
@ -1,139 +0,0 @@
|
|||||||
kind: pipeline
|
|
||||||
name: publish client to docker hub
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
event:
|
|
||||||
- push
|
|
||||||
- tag
|
|
||||||
ref:
|
|
||||||
- refs/heads/master
|
|
||||||
- refs/tags/v*
|
|
||||||
|
|
||||||
steps:
|
|
||||||
|
|
||||||
- name: push image - amd64
|
|
||||||
image: plugins/docker
|
|
||||||
settings:
|
|
||||||
repo: iamthefij/dockamole-client
|
|
||||||
context: client
|
|
||||||
dockerfile: client/Dockerfile
|
|
||||||
auto_tag: true
|
|
||||||
auto_tag_suffix: linux-amd64
|
|
||||||
username:
|
|
||||||
from_secret: docker_username
|
|
||||||
password:
|
|
||||||
from_secret: docker_password
|
|
||||||
|
|
||||||
- name: push image - arm32v7
|
|
||||||
image: plugins/docker
|
|
||||||
settings:
|
|
||||||
repo: iamthefij/dockamole-client
|
|
||||||
context: client
|
|
||||||
dockerfile: client/Dockerfile
|
|
||||||
auto_tag: true
|
|
||||||
auto_tag_suffix: linux-arm32v7
|
|
||||||
username:
|
|
||||||
from_secret: docker_username
|
|
||||||
password:
|
|
||||||
from_secret: docker_password
|
|
||||||
build_args:
|
|
||||||
- REPO=arm32v7
|
|
||||||
- GOARCH=arm
|
|
||||||
|
|
||||||
- name: push image - arm64
|
|
||||||
image: plugins/docker
|
|
||||||
settings:
|
|
||||||
repo: iamthefij/dockamole-client
|
|
||||||
context: client
|
|
||||||
dockerfile: client/Dockerfile
|
|
||||||
auto_tag: true
|
|
||||||
auto_tag_suffix: linux-arm64v8
|
|
||||||
username:
|
|
||||||
from_secret: docker_username
|
|
||||||
password:
|
|
||||||
from_secret: docker_password
|
|
||||||
build_args:
|
|
||||||
- REPO=arm64v8
|
|
||||||
- GOARCH=arm
|
|
||||||
|
|
||||||
- name: publish manifest
|
|
||||||
image: plugins/manifest
|
|
||||||
settings:
|
|
||||||
spec: client/manifest.tmpl
|
|
||||||
auto_tag: true
|
|
||||||
ignore_missing: true
|
|
||||||
username:
|
|
||||||
from_secret: docker_username
|
|
||||||
password:
|
|
||||||
from_secret: docker_password
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
kind: pipeline
|
|
||||||
name: publish server to docker hub
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
event:
|
|
||||||
- push
|
|
||||||
- tag
|
|
||||||
ref:
|
|
||||||
- refs/heads/master
|
|
||||||
- refs/tags/v*
|
|
||||||
|
|
||||||
steps:
|
|
||||||
|
|
||||||
- name: push image - amd64
|
|
||||||
image: plugins/docker
|
|
||||||
settings:
|
|
||||||
repo: iamthefij/dockamole-server
|
|
||||||
context: server
|
|
||||||
dockerfile: server/Dockerfile
|
|
||||||
auto_tag: true
|
|
||||||
auto_tag_suffix: linux-amd64
|
|
||||||
username:
|
|
||||||
from_secret: docker_username
|
|
||||||
password:
|
|
||||||
from_secret: docker_password
|
|
||||||
|
|
||||||
- name: push image - arm32v7
|
|
||||||
image: plugins/docker
|
|
||||||
settings:
|
|
||||||
repo: iamthefij/dockamole-server
|
|
||||||
context: server
|
|
||||||
dockerfile: server/Dockerfile
|
|
||||||
auto_tag: true
|
|
||||||
auto_tag_suffix: linux-arm32v7
|
|
||||||
username:
|
|
||||||
from_secret: docker_username
|
|
||||||
password:
|
|
||||||
from_secret: docker_password
|
|
||||||
build_args:
|
|
||||||
- REPO=arm32v7
|
|
||||||
- GOARCH=arm
|
|
||||||
|
|
||||||
- name: push image - arm64
|
|
||||||
image: plugins/docker
|
|
||||||
settings:
|
|
||||||
repo: iamthefij/dockamole-server
|
|
||||||
context: server
|
|
||||||
dockerfile: server/Dockerfile
|
|
||||||
auto_tag: true
|
|
||||||
auto_tag_suffix: linux-arm64v8
|
|
||||||
username:
|
|
||||||
from_secret: docker_username
|
|
||||||
password:
|
|
||||||
from_secret: docker_password
|
|
||||||
build_args:
|
|
||||||
- REPO=arm64v8
|
|
||||||
- GOARCH=arm
|
|
||||||
|
|
||||||
- name: publish manifest
|
|
||||||
image: plugins/manifest
|
|
||||||
settings:
|
|
||||||
spec: server/manifest.tmpl
|
|
||||||
auto_tag: true
|
|
||||||
ignore_missing: true
|
|
||||||
username:
|
|
||||||
from_secret: docker_username
|
|
||||||
password:
|
|
||||||
from_secret: docker_password
|
|
25
manifest-client.tml
Normal file
25
manifest-client.tml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
image: iamthefij/dockamole-client:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}
|
||||||
|
{{#if build.tags}}
|
||||||
|
tags:
|
||||||
|
{{#each build.tags}}
|
||||||
|
- {{this}}
|
||||||
|
{{/each}}
|
||||||
|
{{/if}}
|
||||||
|
manifests:
|
||||||
|
-
|
||||||
|
image: iamthefij/dockamole-client:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64
|
||||||
|
platform:
|
||||||
|
architecture: amd64
|
||||||
|
os: linux
|
||||||
|
-
|
||||||
|
image: iamthefij/dockamole-client:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64
|
||||||
|
platform:
|
||||||
|
architecture: arm64
|
||||||
|
os: linux
|
||||||
|
variant: v8
|
||||||
|
-
|
||||||
|
image: iamthefij/dockamole-client:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm
|
||||||
|
platform:
|
||||||
|
architecture: arm
|
||||||
|
os: linux
|
||||||
|
variant: v7
|
25
manifest-server.tmpl
Normal file
25
manifest-server.tmpl
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
image: iamthefij/dockamole-server:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}
|
||||||
|
{{#if build.tags}}
|
||||||
|
tags:
|
||||||
|
{{#each build.tags}}
|
||||||
|
- {{this}}
|
||||||
|
{{/each}}
|
||||||
|
{{/if}}
|
||||||
|
manifests:
|
||||||
|
-
|
||||||
|
image: iamthefij/dockamole-server:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64
|
||||||
|
platform:
|
||||||
|
architecture: amd64
|
||||||
|
os: linux
|
||||||
|
-
|
||||||
|
image: iamthefij/dockamole-server:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64
|
||||||
|
platform:
|
||||||
|
architecture: arm64
|
||||||
|
os: linux
|
||||||
|
variant: v8
|
||||||
|
-
|
||||||
|
image: iamthefij/dockamole-server:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm
|
||||||
|
platform:
|
||||||
|
architecture: arm
|
||||||
|
os: linux
|
||||||
|
variant: v7
|
Loading…
Reference in New Issue
Block a user