mirror of
https://github.com/kubevela/kubevela.git
synced 2026-05-19 07:46:51 +00:00
Signed-off-by: yunjiazhong <yunjiazhong@tencent.com> Co-authored-by: yunjiazhong <yunjiazhong@tencent.com>
79 lines
2.5 KiB
YAML
79 lines
2.5 KiB
YAML
apiVersion: core.oam.dev/v1beta1
|
|
kind: WorkflowStepDefinition
|
|
metadata:
|
|
name: build
|
|
namespace: vela-system
|
|
spec:
|
|
schematic:
|
|
cue:
|
|
template: |-
|
|
import ("vela/op")
|
|
|
|
parameter: {
|
|
// +usage=Specify the SSH URL of git repository for your source codes, e.g. git@git.woa.com:my-git-repo/demo.git
|
|
repoUrl: string
|
|
|
|
// +usage=Specify the branch which you want to be checked out and built
|
|
branch: string
|
|
|
|
// +usage=Specify the filename of Dockerfile under the root folder in your git repository
|
|
dockerfile: string
|
|
|
|
// +usage=Specify the secret name for the docker repository in your namespace in your K8S cluster
|
|
dockerSecret: string
|
|
|
|
// +usage=Specify the address where the image built is pushed into
|
|
image: string
|
|
}
|
|
|
|
build: op.#Task & {
|
|
name: "\(context.name)-build-\(context.stepSessionID)"
|
|
namespace: context.namespace
|
|
|
|
toolImage: "gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/entrypoint:v0.27.2"
|
|
baseImage: "busybox:1.34"
|
|
|
|
// Declare workspaces that used to share data.
|
|
workspaces: {
|
|
"code-dir": {}
|
|
}
|
|
|
|
secrets: {
|
|
"\(parameter.dockerSecret)": {
|
|
items: [{
|
|
key: ".dockerconfigjson"
|
|
path: "config.json"
|
|
}]
|
|
}
|
|
}
|
|
|
|
steps: [
|
|
// git clone code repo.
|
|
{
|
|
name: "git-clone"
|
|
image: "bitnami/git:2.34.1"
|
|
workspaceMounts: [{workspace: workspaces["code-dir"], mountPath: "/data/code"}]
|
|
script: """
|
|
#!/bin/bash
|
|
git clone -b \(parameter.branch) \(parameter.repoUrl) /data/code
|
|
"""
|
|
},
|
|
// build and push image.
|
|
{
|
|
name: "build-image"
|
|
image: "gcr.io/kaniko-project/executor:debug"
|
|
workspaceMounts: [{workspace: workspaces["code-dir"], mountPath: "/data/build"}]
|
|
secretMounts: [{secret: secrets["\(parameter.dockerSecret)"], mountPath: "/kaniko/.docker/"}]
|
|
script: """
|
|
#!/busybox/sh
|
|
/kaniko/executor --dockerfile=/data/build/\(parameter.dockerfile) --context=/data/build --destination=\(parameter.image)
|
|
"""
|
|
}]
|
|
}
|
|
|
|
// wait until deployment ready
|
|
wait: op.#ConditionalWait & {
|
|
continue: build.apply.value.status.phase == "Succeeded"
|
|
}
|
|
|