80 lines
1.9 KiB
Jsonnet
80 lines
1.9 KiB
Jsonnet
local bun_image = "oven/bun:1.0";
|
|
|
|
|
|
local fetch_step = {
|
|
name: "fetch",
|
|
image: "alpine/git",
|
|
commands: ["git fetch --tags"],
|
|
};
|
|
|
|
local generate_docker_tags_step = {
|
|
name: "generate-docker-tags",
|
|
image: bun_image,
|
|
commands: [
|
|
"apt-get update && apt-get install -y --reinstall --no-install-recommends ca-certificates && apt-get install -y --no-install-recommends git",
|
|
"bun install --frozen-lockfile --no-cache --production",
|
|
"bun start .",
|
|
],
|
|
};
|
|
|
|
local build_docker_step(publish) = {
|
|
name: "build-" + (if publish then "publish-" else "") + "docker",
|
|
image: "plugins/docker",
|
|
|
|
settings: {
|
|
dry_run: !publish,
|
|
registry: "git.jvalver.de",
|
|
username: { from_secret: "docker_username" },
|
|
password: { from_secret: "docker_password" },
|
|
repo: "git.jvalver.de/thilawyn/drone-better-docker-autotag",
|
|
dockerfile: "Dockerfile",
|
|
context: ".",
|
|
compress: true,
|
|
platform: "linux/amd64",
|
|
},
|
|
};
|
|
|
|
|
|
[
|
|
// Build docker images without publishing them for pull requests
|
|
{
|
|
kind: "pipeline",
|
|
type: "docker",
|
|
name: "build-docker",
|
|
|
|
trigger: {
|
|
ref: {
|
|
include: ["refs/pull/**"]
|
|
}
|
|
},
|
|
|
|
steps: [
|
|
fetch_step,
|
|
generate_docker_tags_step,
|
|
build_docker_step(false),
|
|
],
|
|
},
|
|
|
|
// Build docker images and publish them for master and tags
|
|
{
|
|
kind: "pipeline",
|
|
type: "docker",
|
|
name: "build-publish-docker",
|
|
|
|
trigger: {
|
|
ref: {
|
|
include: [
|
|
"refs/heads/master",
|
|
"refs/tags/**",
|
|
]
|
|
}
|
|
},
|
|
|
|
steps: [
|
|
fetch_step,
|
|
generate_docker_tags_step,
|
|
build_docker_step(true),
|
|
],
|
|
},
|
|
]
|