You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

146 lines
4.4 KiB

def main(ctx):
return [
lint(),
test("1_php7.4", "1-php7.4"),
test("1_php8.0", "1-php8.0"),
test("2_php7.4", "2-php7.4"),
test("2_php8.0", "2-php8.0"),
test("2_php8.1", "2-php8.1"),
release("1_php7.4", "1-php7.4", app_env = "php7.4"),
release("1_php8.0", "1-php8.0", app_env = "php8.0"),
release("2_php7.4", "2-php7.4", app_env = "php7.4"),
release("2_php8.0", "2-php8.0", app_env = "php8.0"),
release("2_php8.1", "2-php8.1", app_env = "php8.1", custom_tags = "latest"),
]
def lint():
return {
"kind": "pipeline",
"type": "docker",
"name": "lint",
"steps": [
{
"name": "Lint Dockerfiles",
"image": "hadolint/hadolint:latest-debian",
"pull": "if-not-exists",
"commands": [
"hadolint --version",
"hadolint */Dockerfile",
],
},
],
"trigger": {
"event": [
"pull_request",
"push",
],
"ref": {
"exclude": [
"refs/heads/renovate/*",
],
},
},
}
def test(name, composer_variant, dockerfile = "Dockerfile"):
return {
"kind": "pipeline",
"type": "docker",
"name": "test_%s" % name,
"steps": [
{
"name": "build test",
"image": "plugins/docker",
"pull": "if-not-exists",
"settings": {
"dockerfile": "%s/%s" % (composer_variant, dockerfile),
"username": {
"from_secret": "dockerhub_username",
},
"password": {
"from_secret": "dockerhub_password_ro",
},
"dry_run": "true",
"repo": "mwalbeck/composer",
},
},
],
"trigger": {
"event": [
"pull_request",
],
},
"depends_on": [
"lint",
],
}
def release(name, composer_variant, dockerfile = "Dockerfile", app_env = "", custom_tags = ""):
return {
"kind": "pipeline",
"type": "docker",
"name": "release_%s" % name,
"steps": [
{
"name": "determine tags",
"image": "mwalbeck/determine-docker-tags",
"pull": "if-not-exists",
"environment": {
"VERSION_TYPE": "docker_env",
"APP_NAME": "COMPOSER",
"DOCKERFILE_PATH": "%s/%s" % (composer_variant, dockerfile),
"APP_ENV": app_env,
"CUSTOM_TAGS": custom_tags,
},
},
{
"name": "build and publish",
"image": "plugins/docker",
"pull": "if-not-exists",
"settings": {
"dockerfile": "%s/%s" % (composer_variant, dockerfile),
"username": {
"from_secret": "dockerhub_username",
},
"password": {
"from_secret": "dockerhub_password",
},
"repo": "mwalbeck/composer",
},
},
{
"name": "notify",
"image": "plugins/matrix",
"pull": "if-not-exists",
"settings": {
"homeserver": "https://matrix.mwalbeck.org",
"roomid": {
"from_secret": "matrix_roomid",
},
"username": {
"from_secret": "matrix_username",
},
"password": {
"from_secret": "matrix_password",
},
},
"when": {
"status": [
"failure",
"success",
],
},
},
],
"trigger": {
"branch": [
"master",
],
"event": [
"push",
],
},
"depends_on": [
"lint",
],
}