Compare commits

..

4 Commits

Author SHA1 Message Date
cce376cc4b
dont release dev tags tho
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-23 19:12:13 +02:00
f719b7ade3
fuck starlark and jsonet. jinja it is
Some checks reported errors
continuous-integration/drone/push Build was killed
2022-04-23 19:06:25 +02:00
66b678830e
refactored pipeline to use anchores
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-23 18:25:53 +02:00
641bd93f93 Update 'README.md'
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-20 19:03:16 +00:00
7 changed files with 472 additions and 278 deletions

View File

@ -1,44 +0,0 @@
local Pipeline(tag) = {
kind: "pipeline",
type: "kubernetes",
name: tag + "build",
platform: {
os: "linux",
arch: "amd64",
},
steps: [
{
name: tag,
image: "plugins/kaniko",
settings: {
repo: "lerentis/ansible",
username: { "from_secret": "docker_username" },
password: { "from_secret": "docker_password" },
dockerfile: tag + "/Dockerfile",
tags: [ tag ],
},
resources: {
limits: {
cpu: 200,
memory: "1024MiB",
},
},
when: [ "push", "pull_request", "cron" ]
}
]
};
[
Pipeline("ubuntu-20.04"),
Pipeline("ubuntu-18.04"),
Pipeline("ubuntu-14.04"),
Pipeline("debian-8"),
Pipeline("debian-9"),
Pipeline("debian-10"),
Pipeline("centos-7"),
Pipeline("almalinux-8"),
Pipeline("fedora-24"),
Pipeline("alpine-3"),
Pipeline("arch"),
]

55
.drone.star Normal file
View File

@ -0,0 +1,55 @@
def main(ctx):
return [
pipeline("debian", ["ubuntu-22.04", "ubuntu-20.04"]),
pipeline("rhel", ["fedora-34", "fedora-35"]),
]
def generateStep(tag):
return {
"name": "build-" + tag,
"image": "plugins/kaniko",
"settings": {
"dockerfile": tag + "/Dockerfile",
"password": {
"from_secret": "docker_password"
},
"username": {
"from_secret": "docker_username"
},
"repo": "lerentis/ansible",
"tags": [
tag
]
},
"when": {
"event": [
"push",
"pull_request",
"cron"
]
},
"ressources": {
"limits": {
"cpu": "200",
"memory": "1024MiB"
}
}
}
def pipeline(group, tags):
steps = []
for tag in tags:
steps += generateStep(tag)
print(generateStep(tag))
print(steps)
return {
"kind": "pipeline",
"type": "kubernetes",
"name": "build-%s" % group,
"platform": {
"os": "linux",
"arch": "amd64"
},
"steps": steps
}

View File

@ -9,7 +9,7 @@ platform:
steps:
- name: build-ubuntu-22
- name: build-ubuntu-22.04
image: plugins/kaniko
settings:
dockerfile: ubuntu-22.04/Dockerfile
@ -30,8 +30,8 @@ steps:
cpu: 200
memory: 1024MiB
- name: build-ubuntu-20
image: plugins/kaniko:1.4.1
- name: build-ubuntu-20.04
image: plugins/kaniko
settings:
dockerfile: ubuntu-20.04/Dockerfile
password:
@ -51,8 +51,8 @@ steps:
cpu: 200
memory: 1024MiB
- name: build-ubuntu-18
image: plugins/kaniko:1.4.1
- name: build-ubuntu-18.04
image: plugins/kaniko
settings:
dockerfile: ubuntu-18.04/Dockerfile
password:
@ -72,8 +72,8 @@ steps:
cpu: 200
memory: 1024MiB
- name: build-ubuntu-16
image: plugins/kaniko:1.4.1
- name: build-ubuntu-16.04
image: plugins/kaniko
settings:
dockerfile: ubuntu-16.04/Dockerfile
password:
@ -93,8 +93,8 @@ steps:
cpu: 200
memory: 1024MiB
- name: build-ubuntu-14
image: plugins/kaniko:1.4.1
- name: build-ubuntu-14.04
image: plugins/kaniko
settings:
dockerfile: ubuntu-14.04/Dockerfile
password:
@ -115,7 +115,7 @@ steps:
memory: 1024MiB
- name: build-debian-8
image: plugins/kaniko:1.4.1
image: plugins/kaniko
settings:
dockerfile: debian-8/Dockerfile
password:
@ -136,7 +136,7 @@ steps:
memory: 1024MiB
- name: build-debian-9
image: plugins/kaniko:1.4.1
image: plugins/kaniko
settings:
dockerfile: debian-9/Dockerfile
password:
@ -157,7 +157,7 @@ steps:
memory: 1024MiB
- name: build-debian-10
image: plugins/kaniko:1.4.1
image: plugins/kaniko
settings:
dockerfile: debian-10/Dockerfile
password:
@ -188,92 +188,8 @@ platform:
steps:
- name: build-fedora-34
image: plugins/kaniko:1.4.1
settings:
dockerfile: fedora-34/Dockerfile
password:
from_secret: docker_password
username:
from_secret: docker_username
repo: lerentis/ansible
tags:
- fedora-34-dev
when:
event:
- push
- pull_request
- cron
resources:
limits:
cpu: 200
memory: 1024MiB
- name: build-fedora-35
image: plugins/kaniko:1.4.1
settings:
dockerfile: fedora-35/Dockerfile
password:
from_secret: docker_password
username:
from_secret: docker_username
repo: lerentis/ansible
tags:
- fedora-35-dev
when:
event:
- push
- pull_request
- cron
resources:
limits:
cpu: 200
memory: 1024MiB
- name: build-fedora-36
image: plugins/kaniko:1.4.1
settings:
dockerfile: fedora-36/Dockerfile
password:
from_secret: docker_password
username:
from_secret: docker_username
repo: lerentis/ansible
tags:
- fedora-36-dev
when:
event:
- push
- pull_request
- cron
resources:
limits:
cpu: 200
memory: 1024MiB
- name: build-fedora-37
image: plugins/kaniko:1.4.1
settings:
dockerfile: fedora-37/Dockerfile
password:
from_secret: docker_password
username:
from_secret: docker_username
repo: lerentis/ansible
tags:
- fedora-37-dev
when:
event:
- push
- pull_request
- cron
resources:
limits:
cpu: 200
memory: 1024MiB
- name: build-almalinux-8
image: plugins/kaniko:1.4.1
image: plugins/kaniko
settings:
dockerfile: almalinux-8/Dockerfile
password:
@ -294,7 +210,7 @@ steps:
memory: 1024MiB
- name: build-centos-7
image: plugins/kaniko:1.4.1
image: plugins/kaniko
settings:
dockerfile: centos-7/Dockerfile
password:
@ -314,6 +230,90 @@ steps:
cpu: 200
memory: 1024MiB
- name: build-fedora-34
image: plugins/kaniko
settings:
dockerfile: fedora-34/Dockerfile
password:
from_secret: docker_password
username:
from_secret: docker_username
repo: lerentis/ansible
tags:
- fedora-34-dev
when:
event:
- push
- pull_request
- cron
resources:
limits:
cpu: 200
memory: 1024MiB
- name: build-fedora-35
image: plugins/kaniko
settings:
dockerfile: fedora-35/Dockerfile
password:
from_secret: docker_password
username:
from_secret: docker_username
repo: lerentis/ansible
tags:
- fedora-35-dev
when:
event:
- push
- pull_request
- cron
resources:
limits:
cpu: 200
memory: 1024MiB
- name: build-fedora-36
image: plugins/kaniko
settings:
dockerfile: fedora-36/Dockerfile
password:
from_secret: docker_password
username:
from_secret: docker_username
repo: lerentis/ansible
tags:
- fedora-36-dev
when:
event:
- push
- pull_request
- cron
resources:
limits:
cpu: 200
memory: 1024MiB
- name: build-fedora-37
image: plugins/kaniko
settings:
dockerfile: fedora-37/Dockerfile
password:
from_secret: docker_password
username:
from_secret: docker_username
repo: lerentis/ansible
tags:
- fedora-37-dev
when:
event:
- push
- pull_request
- cron
resources:
limits:
cpu: 200
memory: 1024MiB
---
kind: pipeline
type: kubernetes
@ -325,8 +325,8 @@ platform:
steps:
- name: build-alpine-3-14
image: plugins/kaniko:1.4.1
- name: build-alpine-3.14
image: plugins/kaniko
settings:
dockerfile: alpine-3.14/Dockerfile
password:
@ -346,8 +346,8 @@ steps:
cpu: 200
memory: 1024MiB
- name: build-alpine-3-15
image: plugins/kaniko:1.4.1
- name: build-alpine-3.15
image: plugins/kaniko
settings:
dockerfile: alpine-3.15/Dockerfile
password:
@ -379,7 +379,7 @@ platform:
steps:
- name: build-arch
image: plugins/kaniko:1.4.1
image: plugins/kaniko
settings:
dockerfile: arch/Dockerfile
password:
@ -399,6 +399,8 @@ steps:
cpu: 200
memory: 1024MiB
---
kind: pipeline
type: kubernetes
@ -410,7 +412,7 @@ platform:
steps:
- name: build-ubuntu-22-release
- name: release-ubuntu-22.04
image: plugins/kaniko
settings:
dockerfile: ubuntu-22.04/Dockerfile
@ -429,8 +431,8 @@ steps:
cpu: 200
memory: 1024MiB
- name: build-ubuntu-20-release
image: plugins/kaniko:1.4.1
- name: release-ubuntu-20.04
image: plugins/kaniko
settings:
dockerfile: ubuntu-20.04/Dockerfile
password:
@ -448,8 +450,8 @@ steps:
cpu: 200
memory: 1024MiB
- name: build-ubuntu-18-release
image: plugins/kaniko:1.4.1
- name: release-ubuntu-18.04
image: plugins/kaniko
settings:
dockerfile: ubuntu-18.04/Dockerfile
password:
@ -467,8 +469,8 @@ steps:
cpu: 200
memory: 1024MiB
- name: build-ubuntu-16-release
image: plugins/kaniko:1.4.1
- name: release-ubuntu-16.04
image: plugins/kaniko
settings:
dockerfile: ubuntu-16.04/Dockerfile
password:
@ -486,8 +488,8 @@ steps:
cpu: 200
memory: 1024MiB
- name: build-ubuntu-14-release
image: plugins/kaniko:1.4.1
- name: release-ubuntu-14.04
image: plugins/kaniko
settings:
dockerfile: ubuntu-14.04/Dockerfile
password:
@ -505,8 +507,8 @@ steps:
cpu: 200
memory: 1024MiB
- name: build-debian-8-release
image: plugins/kaniko:1.4.1
- name: release-debian-8
image: plugins/kaniko
settings:
dockerfile: debian-8/Dockerfile
password:
@ -524,8 +526,8 @@ steps:
cpu: 200
memory: 1024MiB
- name: build-debian-9-release
image: plugins/kaniko:1.4.1
- name: release-debian-9
image: plugins/kaniko
settings:
dockerfile: debian-9/Dockerfile
password:
@ -543,8 +545,8 @@ steps:
cpu: 200
memory: 1024MiB
- name: build-debian-10-release
image: plugins/kaniko:1.4.1
- name: release-debian-10
image: plugins/kaniko
settings:
dockerfile: debian-10/Dockerfile
password:
@ -562,6 +564,7 @@ steps:
cpu: 200
memory: 1024MiB
---
kind: pipeline
type: kubernetes
@ -573,85 +576,8 @@ platform:
steps:
- name: build-fedora-34-release
image: plugins/kaniko:1.4.1
settings:
dockerfile: fedora-34/Dockerfile
password:
from_secret: docker_password
username:
from_secret: docker_username
repo: lerentis/ansible
tags:
- fedora-34
when:
event:
- tag
resources:
limits:
cpu: 200
memory: 1024MiB
- name: build-fedora-35-release
image: plugins/kaniko:1.4.1
settings:
dockerfile: fedora-35/Dockerfile
password:
from_secret: docker_password
username:
from_secret: docker_username
repo: lerentis/ansible
tags:
- fedora-35
when:
event:
- tag
resources:
limits:
cpu: 200
memory: 1024MiB
- name: build-fedora-36-release
image: plugins/kaniko:1.4.1
settings:
dockerfile: fedora-36/Dockerfile
password:
from_secret: docker_password
username:
from_secret: docker_username
repo: lerentis/ansible
tags:
- fedora-36
when:
event:
- tag
resources:
limits:
cpu: 200
memory: 1024MiB
- name: build-fedora-37-release
image: plugins/kaniko:1.4.1
settings:
dockerfile: fedora-37/Dockerfile
password:
from_secret: docker_password
username:
from_secret: docker_username
repo: lerentis/ansible
tags:
- fedora-37
when:
event:
- tag
resources:
limits:
cpu: 200
memory: 1024MiB
- name: build-almalinux-8-release
image: plugins/kaniko:1.4.1
- name: release-almalinux-8
image: plugins/kaniko
settings:
dockerfile: almalinux-8/Dockerfile
password:
@ -669,8 +595,8 @@ steps:
cpu: 200
memory: 1024MiB
- name: build-centos-7-release
image: plugins/kaniko:1.4.1
- name: release-centos-7
image: plugins/kaniko
settings:
dockerfile: centos-7/Dockerfile
password:
@ -688,6 +614,83 @@ steps:
cpu: 200
memory: 1024MiB
- name: release-fedora-34
image: plugins/kaniko
settings:
dockerfile: fedora-34/Dockerfile
password:
from_secret: docker_password
username:
from_secret: docker_username
repo: lerentis/ansible
tags:
- fedora-34
when:
event:
- tag
resources:
limits:
cpu: 200
memory: 1024MiB
- name: release-fedora-35
image: plugins/kaniko
settings:
dockerfile: fedora-35/Dockerfile
password:
from_secret: docker_password
username:
from_secret: docker_username
repo: lerentis/ansible
tags:
- fedora-35
when:
event:
- tag
resources:
limits:
cpu: 200
memory: 1024MiB
- name: release-fedora-36
image: plugins/kaniko
settings:
dockerfile: fedora-36/Dockerfile
password:
from_secret: docker_password
username:
from_secret: docker_username
repo: lerentis/ansible
tags:
- fedora-36
when:
event:
- tag
resources:
limits:
cpu: 200
memory: 1024MiB
- name: release-fedora-37
image: plugins/kaniko
settings:
dockerfile: fedora-37/Dockerfile
password:
from_secret: docker_password
username:
from_secret: docker_username
repo: lerentis/ansible
tags:
- fedora-37
when:
event:
- tag
resources:
limits:
cpu: 200
memory: 1024MiB
---
kind: pipeline
type: kubernetes
@ -699,8 +702,8 @@ platform:
steps:
- name: build-alpine-3.14-release
image: plugins/kaniko:1.4.1
- name: release-alpine-3.14
image: plugins/kaniko
settings:
dockerfile: alpine-3.14/Dockerfile
password:
@ -718,8 +721,8 @@ steps:
cpu: 200
memory: 1024MiB
- name: build-alpine-3.15-release
image: plugins/kaniko:1.4.1
- name: release-alpine-3.15
image: plugins/kaniko
settings:
dockerfile: alpine-3.15/Dockerfile
password:
@ -737,6 +740,7 @@ steps:
cpu: 200
memory: 1024MiB
---
kind: pipeline
type: kubernetes
@ -748,8 +752,8 @@ platform:
steps:
- name: build-arch-release
image: plugins/kaniko:1.4.1
- name: release-arch
image: plugins/kaniko
settings:
dockerfile: arch/Dockerfile
password:
@ -767,6 +771,7 @@ steps:
cpu: 200
memory: 1024MiB
---
kind: pipeline
type: kubernetes
@ -795,10 +800,10 @@ steps:
- pull_request
- cron
depends_on:
- build-arch
- build-alpine
- build-debian
- build-rhel
- build-alpine
- build-arch
---
kind: pipeline
@ -825,9 +830,8 @@ steps:
- success
event:
- tag
depends_on:
- release-arch
- release-alpine
- release-debian
- release-rhel
- release-alpine
- release-arch

View File

@ -8,11 +8,15 @@ I don't like obfuscated Dockerfiles with external scripts and hundreds of bells
Available operating systems:
* alpine-3
* alpine-3.14
* alpine-3.15
* centos-7
* almalinux-8
* debian-8
* fedora-24
* fedora-34
* fedora-35
* fedora-36
* fedora-37
* ubuntu-16.04
* ubuntu-18.04
* ubuntu-20.04

View File

@ -1,17 +1,17 @@
#!/bin/bash
cd ubuntu-18.04 && docker buildx build -t lerentis/ansible:ubuntu-18.04 --platform=linux/arm,linux/arm64,linux/amd64 . --push
cd ../ubuntu-16.04 && docker buildx build -t lerentis/ansible:ubuntu-16.04 --platform=linux/arm,linux/arm64,linux/amd64 . --push
cd ../alpine-3.14 && docker buildx build -t lerentis/ansible:alpine-3.14 --platform=linux/arm,linux/arm64,linux/amd64 . --push
cd ../alpine-3.15 && docker buildx build -t lerentis/ansible:alpine-3.15 --platform=linux/arm,linux/arm64,linux/amd64 . --push
cd ../ubuntu-20.04 && docker buildx build -t lerentis/ansible:ubuntu-20.04 --platform=linux/arm,linux/arm64,linux/amd64 . --push
cd ../ubuntu-22.04 && docker buildx build -t lerentis/ansible:ubuntu-22.04 --platform=linux/arm,linux/arm64,linux/amd64 . --push
cd ../fedora-34 && docker buildx build -t lerentis/ansible:fedora-34 --platform=linux/amd64 . --push
cd ../fedora-35 && docker buildx build -t lerentis/ansible:fedora-35 --platform=linux/amd64 . --push
cd ../fedora-36 && docker buildx build -t lerentis/ansible:fedora-36 --platform=linux/amd64 . --push
cd ../fedora-37 && docker buildx build -t lerentis/ansible:fedora-37 --platform=linux/amd64 . --push
cd ../debian-9 && docker buildx build -t lerentis/ansible:debian-9 --platform=linux/arm,linux/amd64 . --push
cd ../debian-8 && docker buildx build -t lerentis/ansible:debian-8 --platform=linux/arm,linux/amd64 . --push
cd ../debian-10 && docker buildx build -t lerentis/ansible:debian-10 --platform=linux/arm64,linux/amd64 . --push
cd ../centos-7 && docker buildx build -t lerentis/ansible:centos-7 --platform=linux/arm64,linux/amd64 . --push
cd ../almalinux-8 && docker buildx build -t lerentis/ansible:almalinux-8 --platform=linux/arm64,linux/amd64 . --push
cd ../arch && docker buildx build -t lerentis/ansible:arch --platform=linux/arm,linux/amd64 . --push
cd ubuntu-18.04 && docker buildx build -t lerentis/ansible:ubuntu-18.04-dev --platform=linux/arm,linux/arm64,linux/amd64 . --push
cd ../ubuntu-16.04 && docker buildx build -t lerentis/ansible:ubuntu-16.04-dev --platform=linux/arm,linux/arm64,linux/amd64 . --push
cd ../alpine-3.14 && docker buildx build -t lerentis/ansible:alpine-3.14-dev --platform=linux/arm,linux/arm64,linux/amd64 . --push
cd ../alpine-3.15 && docker buildx build -t lerentis/ansible:alpine-3.15-dev --platform=linux/arm,linux/arm64,linux/amd64 . --push
cd ../ubuntu-20.04 && docker buildx build -t lerentis/ansible:ubuntu-20.04-dev --platform=linux/arm,linux/arm64,linux/amd64 . --push
cd ../ubuntu-22.04 && docker buildx build -t lerentis/ansible:ubuntu-22.04-dev --platform=linux/arm,linux/arm64,linux/amd64 . --push
cd ../fedora-34 && docker buildx build -t lerentis/ansible:fedora-34-dev --platform=linux/amd64 . --push
cd ../fedora-35 && docker buildx build -t lerentis/ansible:fedora-35-dev --platform=linux/amd64 . --push
cd ../fedora-36 && docker buildx build -t lerentis/ansible:fedora-36-dev --platform=linux/amd64 . --push
cd ../fedora-37 && docker buildx build -t lerentis/ansible:fedora-37-dev --platform=linux/amd64 . --push
cd ../debian-9 && docker buildx build -t lerentis/ansible:debian-9-dev --platform=linux/arm,linux/amd64 . --push
cd ../debian-8 && docker buildx build -t lerentis/ansible:debian-8-dev --platform=linux/arm,linux/amd64 . --push
cd ../debian-10 && docker buildx build -t lerentis/ansible:debian-10-dev --platform=linux/arm64,linux/amd64 . --push
cd ../centos-7 && docker buildx build -t lerentis/ansible:centos-7-dev --platform=linux/arm64,linux/amd64 . --push
cd ../almalinux-8 && docker buildx build -t lerentis/ansible:almalinux-8-dev --platform=linux/arm64,linux/amd64 . --push
cd ../arch && docker buildx build -t lerentis/ansible:arch-dev --platform=linux/arm,linux/amd64 . --push

123
drone.yaml.j2 Normal file
View File

@ -0,0 +1,123 @@
{%- for pipeline in pipelines -%}
---
kind: pipeline
type: kubernetes
name: build-{{ pipeline.group }}
platform:
os: linux
arch: amd64
steps:
{% for tag in pipeline.tags %}
- name: build-{{ tag }}
image: plugins/kaniko
settings:
dockerfile: {{ tag }}/Dockerfile
password:
from_secret: docker_password
username:
from_secret: docker_username
repo: lerentis/ansible
tags:
- {{ tag }}-dev
when:
event:
- push
- pull_request
- cron
resources:
limits:
cpu: 200
memory: 1024MiB
{% endfor %}
{% endfor %}
{% for pipeline in pipelines %}
---
kind: pipeline
type: kubernetes
name: release-{{ pipeline.group }}
platform:
os: linux
arch: amd64
steps:
{% for tag in pipeline.tags %}
- name: release-{{ tag }}
image: plugins/kaniko
settings:
dockerfile: {{ tag }}/Dockerfile
password:
from_secret: docker_password
username:
from_secret: docker_username
repo: lerentis/ansible
tags:
- {{ tag }}
when:
event:
- tag
resources:
limits:
cpu: 200
memory: 1024MiB
{% endfor %}
{% endfor %}
---
kind: pipeline
type: kubernetes
name: notify-build
platform:
os: linux
arch: amd64
steps:
{% raw %}
- name: notify
image: appleboy/drone-telegram
settings:
message: "Commit {{ commit.message }} ran with build {{ build.number }} and finished with status {{ build.status }}."
to:
from_secret: telegram_userid
token:
from_secret: telegram_secret
when:
status:
- failure
- success
event:
- push
- pull_request
- cron{% endraw %}
depends_on: {% for pipeline in pipelines %}
- build-{{ pipeline.group }} {% endfor %}
---
kind: pipeline
type: kubernetes
name: notify-release
platform:
os: linux
arch: amd64
steps:
{% raw %}
- name: notify
image: appleboy/drone-telegram
settings:
message: "Release {{ build.tag }} ran with build {{ build.number }} and finished with status {{ build.status }}."
to:
from_secret: telegram_userid
token:
from_secret: telegram_secret
when:
status:
- failure
- success
event:
- tag {% endraw %}
depends_on:{% for pipeline in pipelines %}
- release-{{ pipeline.group }} {% endfor %}

52
generate-pipeline.py Normal file
View File

@ -0,0 +1,52 @@
#!/usr/bin/env python3
from jinja2 import Template, Environment, FileSystemLoader
pipelines = [
{
"group": "debian",
"tags": [
"ubuntu-22.04",
"ubuntu-20.04",
"ubuntu-18.04",
"ubuntu-16.04",
"ubuntu-14.04",
"debian-8",
"debian-9",
"debian-10"
]
},
{
"group": "rhel",
"tags": [
"almalinux-8",
"centos-7",
"fedora-34",
"fedora-35",
"fedora-36",
"fedora-37"
]
},
{
"group": "alpine",
"tags": [
"alpine-3.14",
"alpine-3.15"
]
},
{
"group": "arch",
"tags": [
"arch"
]
}
]
file_loader = FileSystemLoader('.')
env = Environment(loader=file_loader)
template = env.get_template('drone.yaml.j2')
output = template.render(pipelines=pipelines)
print(output)