-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.drone.yml
93 lines (85 loc) · 2.55 KB
/
.drone.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
kind: pipeline
type: kubernetes
name: build-arm64
node_selector:
kubernetes.io/arch: arm64
steps:
- name: docker build
image: plugins/docker
settings:
repo: ${DRONE_REPO}
tag: ${DRONE_COMMIT_SHA:0:8}-arm64
# docker use a mtu of 1500 by default, which may cause packet drop in k8s
mtu: 1450
username:
from_secret: docker_username
password:
from_secret: docker_password
---
kind: pipeline
type: kubernetes
name: build-amd64
node_selector:
kubernetes.io/arch: amd64
steps:
- name: docker build
image: plugins/docker
settings:
repo: ${DRONE_REPO}
tag: ${DRONE_COMMIT_SHA:0:8}-amd64
# docker use a mtu of 1500 by default, which may cause packet drop in k8s
mtu: 1450
username:
from_secret: docker_username
password:
from_secret: docker_password
---
kind: pipeline
type: kubernetes
name: create-multiarch-manifest
steps:
- name: docker manifest
image: docker:20-dind-rootless
commands:
- docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD"
- docker manifest create ${DRONE_REPO}:${DRONE_TAG:-latest} --amend ${DRONE_REPO}:${DRONE_COMMIT_SHA:0:8}-amd64 --amend ${DRONE_REPO}:${DRONE_COMMIT_SHA:0:8}-arm64
- docker manifest push ${DRONE_REPO}:${DRONE_TAG:-latest}
environment:
DOCKER_USERNAME:
from_secret: docker_username
DOCKER_PASSWORD:
from_secret: docker_password
- name: cleanup
image: alpine
commands:
- apk add curl jq
- 'DOCKER_TOKEN="$(curl -sf -XPOST -H "Content-Type: application/json" -d "{\"username\":\"$DOCKER_USERNAME\",\"password\":\"$DOCKER_PASSWORD\"}" https://hub.docker.com/v2/users/login | jq --raw-output .token)"'
- 'curl -sf -XDELETE -H "Accept: application/json" -H "Authorization: Bearer $DOCKER_TOKEN" https://hub.docker.com/v2/repositories/${DRONE_REPO}/tags/${DRONE_COMMIT_SHA:0:8}-arm64/'
- 'curl -sf -XDELETE -H "Accept: application/json" -H "Authorization: Bearer $DOCKER_TOKEN" https://hub.docker.com/v2/repositories/${DRONE_REPO}/tags/${DRONE_COMMIT_SHA:0:8}-amd64/'
environment:
DOCKER_USERNAME:
from_secret: docker_username
DOCKER_PASSWORD:
from_secret: docker_password
depends_on:
- build-arm64
- build-amd64
---
kind: pipeline
type: kubernetes
name: publish-pypi
trigger:
event:
- tag
steps:
- name: fetch tags
image: alpine/git
commands:
- git fetch --tags
- name: publish pypi
image: plugins/pypi
settings:
username:
from_secret: pypi_username
password:
from_secret: pypi_password