ce7cb702218693d08ea6d83464d2457c9250027c
This commit is contained in:
commit
34c5f8963c
1 changed files with 145336 additions and 0 deletions
|
|
@ -0,0 +1,417 @@
|
|||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: WorkflowTemplate
|
||||
metadata:
|
||||
name: lazaret-delivery
|
||||
namespace: project-delivery
|
||||
labels:
|
||||
app.kubernetes.io/name: project-delivery
|
||||
app.kubernetes.io/instance: lazaret
|
||||
spec:
|
||||
entrypoint: workflow
|
||||
serviceAccountName: project-delivery-executor
|
||||
automountServiceAccountToken: false
|
||||
executor:
|
||||
serviceAccountName: project-delivery-executor
|
||||
parallelism: 4
|
||||
podGC:
|
||||
strategy: OnWorkflowCompletion
|
||||
podMetadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: project-delivery
|
||||
delivery.quorate.dev/project: lazaret
|
||||
podSpecPatch: |
|
||||
dnsConfig:
|
||||
options:
|
||||
- name: ndots
|
||||
value: "1"
|
||||
containers:
|
||||
- name: wait
|
||||
volumeMounts:
|
||||
- name: exec-sa-token
|
||||
mountPath: /var/run/secrets/kubernetes.io/serviceaccount
|
||||
readOnly: true
|
||||
volumes:
|
||||
- name: exec-sa-token
|
||||
secret: null
|
||||
projected:
|
||||
defaultMode: 0440
|
||||
sources:
|
||||
- serviceAccountToken:
|
||||
expirationSeconds: 3600
|
||||
path: token
|
||||
- configMap:
|
||||
name: kube-root-ca.crt
|
||||
items:
|
||||
- key: ca.crt
|
||||
path: ca.crt
|
||||
- downwardAPI:
|
||||
items:
|
||||
- path: namespace
|
||||
fieldRef:
|
||||
apiVersion: v1
|
||||
fieldPath: metadata.namespace
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
runAsUser: 65532
|
||||
runAsGroup: 65532
|
||||
fsGroup: 65532
|
||||
fsGroupChangePolicy: OnRootMismatch
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
arguments:
|
||||
parameters:
|
||||
- name: source-repository
|
||||
- name: source-ref
|
||||
- name: source-revision
|
||||
- name: targets
|
||||
- name: build-kind
|
||||
value: release
|
||||
templates:
|
||||
- name: workflow
|
||||
steps:
|
||||
- - name: initialize-workspace
|
||||
template: initialize-workspace
|
||||
- - name: delivery
|
||||
template: delivery
|
||||
arguments:
|
||||
parameters:
|
||||
- name: working-pvc
|
||||
value: "{{steps.initialize-workspace.outputs.parameters.working-pvc}}"
|
||||
outputs:
|
||||
parameters:
|
||||
- name: delivery-result
|
||||
valueFrom:
|
||||
parameter: "{{steps.delivery.outputs.parameters.delivery-result}}"
|
||||
|
||||
- name: initialize-workspace
|
||||
metadata:
|
||||
labels:
|
||||
delivery.quorate.dev/stage: lazaret-workspace-init
|
||||
container:
|
||||
image: &runner registry.quorate.internal/quorate/fsharp-runner@sha256:e4cbf2cfcbd903ff4600590b84a08c0e09d95fa1e2edda4daf8d32a6aeda35f7
|
||||
command: &fsi [/usr/share/dotnet/dotnet, /opt/fsi/fsi.dll, --exec]
|
||||
args: [/orchestration/initialize.fsx]
|
||||
env:
|
||||
- name: POD_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
apiVersion: v1
|
||||
fieldPath: metadata.name
|
||||
resources:
|
||||
requests: {cpu: 100m, memory: 64Mi}
|
||||
limits: {memory: 256Mi}
|
||||
securityContext: &restricted
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities: {drop: [ALL]}
|
||||
readOnlyRootFilesystem: true
|
||||
volumeMounts:
|
||||
- {name: orchestration, mountPath: /orchestration, readOnly: true}
|
||||
- {name: workspace, mountPath: /workspace}
|
||||
- {name: temporary, mountPath: /tmp}
|
||||
volumes:
|
||||
- &orchestration {name: orchestration, configMap: {name: lazaret-delivery-orch, defaultMode: 0444}}
|
||||
- {name: temporary, emptyDir: {}}
|
||||
- name: workspace
|
||||
ephemeral:
|
||||
volumeClaimTemplate:
|
||||
spec:
|
||||
accessModes: [ReadWriteOnce]
|
||||
storageClassName: openebs-hostpath-ssd
|
||||
resources:
|
||||
requests:
|
||||
storage: 30Gi
|
||||
outputs:
|
||||
parameters:
|
||||
- name: working-pvc
|
||||
valueFrom: {path: /workspace/.claim-name}
|
||||
|
||||
- name: delivery
|
||||
inputs:
|
||||
parameters:
|
||||
- name: working-pvc
|
||||
dag:
|
||||
tasks:
|
||||
- name: tools
|
||||
template: tools
|
||||
arguments: &working-pvc-argument
|
||||
parameters:
|
||||
- {name: working-pvc, value: "{{inputs.parameters.working-pvc}}"}
|
||||
- name: source
|
||||
dependencies: [tools]
|
||||
template: source
|
||||
arguments: *working-pvc-argument
|
||||
- name: upstream
|
||||
template: upstream
|
||||
arguments: *working-pvc-argument
|
||||
- name: cache-pull
|
||||
template: cache-pull
|
||||
arguments: *working-pvc-argument
|
||||
- name: lazaret-build
|
||||
dependencies: [source, upstream, cache-pull]
|
||||
template: lazaret-build
|
||||
arguments: *working-pvc-argument
|
||||
- name: runsc-build
|
||||
dependencies: [upstream, cache-pull]
|
||||
template: runsc-build
|
||||
arguments: *working-pvc-argument
|
||||
- name: publish
|
||||
dependencies: [lazaret-build, runsc-build]
|
||||
template: publish
|
||||
arguments: *working-pvc-argument
|
||||
- name: cache-export
|
||||
dependencies: [lazaret-build, runsc-build]
|
||||
template: cache-export
|
||||
continueOn:
|
||||
failed: true
|
||||
error: true
|
||||
arguments: *working-pvc-argument
|
||||
outputs:
|
||||
parameters:
|
||||
- name: delivery-result
|
||||
valueFrom:
|
||||
parameter: "{{tasks.publish.outputs.parameters.delivery-result}}"
|
||||
|
||||
- name: source
|
||||
inputs: &working-pvc-input
|
||||
parameters:
|
||||
- name: working-pvc
|
||||
metadata:
|
||||
labels:
|
||||
delivery.quorate.dev/stage: lazaret-source
|
||||
container:
|
||||
image: *runner
|
||||
command: *fsi
|
||||
args: [/orchestration/source.fsx]
|
||||
env:
|
||||
- {name: SOURCE_REPOSITORY, value: "{{workflow.parameters.source-repository}}"}
|
||||
- {name: SOURCE_REVISION, value: "{{workflow.parameters.source-revision}}"}
|
||||
resources:
|
||||
requests: {cpu: 100m, memory: 128Mi}
|
||||
limits: {memory: 512Mi}
|
||||
securityContext: *restricted
|
||||
volumeMounts:
|
||||
- {name: orchestration, mountPath: /orchestration, readOnly: true}
|
||||
- {name: workspace, mountPath: /tools, subPath: tools, readOnly: true}
|
||||
- {name: workspace, mountPath: /source, subPath: source}
|
||||
- {name: workspace, mountPath: /tmp, subPath: source-tmp}
|
||||
volumes:
|
||||
- *orchestration
|
||||
- &workspace
|
||||
name: workspace
|
||||
persistentVolumeClaim:
|
||||
claimName: "{{inputs.parameters.working-pvc}}"
|
||||
|
||||
- name: tools
|
||||
inputs: *working-pvc-input
|
||||
metadata:
|
||||
labels:
|
||||
delivery.quorate.dev/stage: lazaret-upstream
|
||||
container:
|
||||
image: *runner
|
||||
command: *fsi
|
||||
args: [/orchestration/tools.fsx]
|
||||
resources:
|
||||
requests: {cpu: 100m, memory: 128Mi}
|
||||
limits: {cpu: "1", memory: 1Gi}
|
||||
securityContext: *restricted
|
||||
volumeMounts:
|
||||
- {name: orchestration, mountPath: /orchestration, readOnly: true}
|
||||
- {name: workspace, mountPath: /workspace, subPath: tools}
|
||||
- {name: temporary, mountPath: /tmp}
|
||||
volumes:
|
||||
- *orchestration
|
||||
- *workspace
|
||||
- {name: temporary, emptyDir: {}}
|
||||
|
||||
- name: upstream
|
||||
inputs: *working-pvc-input
|
||||
podSpecPatch: |
|
||||
runtimeClassName: gvisor
|
||||
metadata:
|
||||
labels:
|
||||
delivery.quorate.dev/stage: lazaret-upstream
|
||||
container:
|
||||
image: *runner
|
||||
command: *fsi
|
||||
args: [/orchestration/dependencies.fsx]
|
||||
env:
|
||||
- {name: BUILD_KIND, value: "{{workflow.parameters.build-kind}}"}
|
||||
resources:
|
||||
requests: {cpu: "2", memory: 2Gi}
|
||||
limits: {memory: 12Gi}
|
||||
securityContext: *restricted
|
||||
volumeMounts:
|
||||
- {name: orchestration, mountPath: /orchestration, readOnly: true}
|
||||
- {name: build-inputs, mountPath: /build-inputs, readOnly: true}
|
||||
- {name: workspace, mountPath: /source, subPath: source, readOnly: true}
|
||||
- {name: workspace, mountPath: /plan, subPath: state, readOnly: true}
|
||||
- {name: workspace, mountPath: /workspace/toolchain, subPath: toolchain}
|
||||
- {name: workspace, mountPath: /workspace/state, subPath: state/runsc}
|
||||
- {name: workspace, mountPath: /tmp, subPath: output/upstream-tmp}
|
||||
volumes:
|
||||
- *orchestration
|
||||
- *workspace
|
||||
- {name: build-inputs, configMap: {name: lazaret-build-inputs, defaultMode: 0444}}
|
||||
|
||||
- name: cache-pull
|
||||
inputs: *working-pvc-input
|
||||
metadata:
|
||||
labels:
|
||||
delivery.quorate.dev/stage: lazaret-cache-pull
|
||||
container:
|
||||
image: *runner
|
||||
command: *fsi
|
||||
args: [/orchestration/cache.fsx]
|
||||
env:
|
||||
- {name: CACHE_ACTION, value: pull}
|
||||
- {name: BUILD_KIND, value: "{{workflow.parameters.build-kind}}"}
|
||||
- {name: SOURCE_REVISION, value: "{{workflow.parameters.source-revision}}"}
|
||||
resources:
|
||||
requests: {cpu: "2", memory: 1Gi}
|
||||
limits: {memory: 4Gi}
|
||||
securityContext: *restricted
|
||||
volumeMounts:
|
||||
- {name: orchestration, mountPath: /orchestration, readOnly: true}
|
||||
- {name: cache-auth, mountPath: /cache-auth, readOnly: true}
|
||||
- {name: cache-ca, mountPath: /cache-ca, readOnly: true}
|
||||
- {name: build-inputs, mountPath: /build-inputs, readOnly: true}
|
||||
- {name: workspace, mountPath: /source, subPath: source}
|
||||
- {name: workspace, mountPath: /toolchain, subPath: toolchain}
|
||||
- {name: workspace, mountPath: /state, subPath: state}
|
||||
- {name: workspace, mountPath: /plan, subPath: state}
|
||||
- {name: workspace, mountPath: /tmp, subPath: state/cache-tmp}
|
||||
volumes:
|
||||
- *orchestration
|
||||
- *workspace
|
||||
- {name: cache-auth, secret: {secretName: project-delivery-cache-reader, defaultMode: 0440}}
|
||||
- {name: cache-ca, secret: {secretName: quay-internal-ca, defaultMode: 0440}}
|
||||
- {name: build-inputs, configMap: {name: lazaret-build-inputs, defaultMode: 0444}}
|
||||
|
||||
- name: lazaret-build
|
||||
inputs: *working-pvc-input
|
||||
podSpecPatch: |
|
||||
runtimeClassName: gvisor
|
||||
metadata:
|
||||
labels:
|
||||
delivery.quorate.dev/stage: lazaret-build
|
||||
container:
|
||||
image: *runner
|
||||
command: *fsi
|
||||
args: [/orchestration/build-lazaret.fsx]
|
||||
env:
|
||||
- {name: BUILD_KIND, value: "{{workflow.parameters.build-kind}}"}
|
||||
- {name: SOURCE_REVISION, value: "{{workflow.parameters.source-revision}}"}
|
||||
resources:
|
||||
requests: {cpu: "6", memory: 8Gi}
|
||||
limits: {memory: 24Gi}
|
||||
securityContext: *restricted
|
||||
volumeMounts:
|
||||
- {name: orchestration, mountPath: /orchestration, readOnly: true}
|
||||
- {name: workspace, mountPath: /bin/sh, subPath: toolchain/environment/usr/bin/busybox, readOnly: true}
|
||||
- {name: workspace, mountPath: /workspace/source, subPath: source/repository, readOnly: true}
|
||||
- {name: workspace, mountPath: /workspace/source/.lazaret/vendor/fuser-0.17.0, subPath: toolchain/cargo/fuser-0.17.0, readOnly: true}
|
||||
- {name: workspace, mountPath: /workspace/environment, subPath: toolchain/environment, readOnly: true}
|
||||
- {name: workspace, mountPath: /workspace/cargo, subPath: toolchain/cargo, readOnly: true}
|
||||
- {name: workspace, mountPath: /workspace/state, subPath: state/lazaret}
|
||||
- {name: workspace, mountPath: /plan, subPath: state, readOnly: true}
|
||||
- {name: workspace, mountPath: /workspace/output, subPath: output/lazaret}
|
||||
- {name: workspace, mountPath: /tmp, subPath: output/lazaret-tmp}
|
||||
volumes:
|
||||
- *orchestration
|
||||
- *workspace
|
||||
|
||||
- name: runsc-build
|
||||
inputs: *working-pvc-input
|
||||
podSpecPatch: |
|
||||
runtimeClassName: gvisor
|
||||
metadata:
|
||||
labels:
|
||||
delivery.quorate.dev/stage: lazaret-runsc-build
|
||||
container:
|
||||
image: *runner
|
||||
command: *fsi
|
||||
args: [/orchestration/build-runsc.fsx]
|
||||
env:
|
||||
- {name: BUILD_KIND, value: "{{workflow.parameters.build-kind}}"}
|
||||
- {name: SOURCE_REVISION, value: "{{workflow.parameters.source-revision}}"}
|
||||
resources:
|
||||
requests: {cpu: "6", memory: 8Gi}
|
||||
limits: {memory: 24Gi}
|
||||
securityContext: *restricted
|
||||
volumeMounts:
|
||||
- {name: orchestration, mountPath: /orchestration, readOnly: true}
|
||||
- {name: workspace, mountPath: /bin, subPath: toolchain/environment/usr/bin, readOnly: true}
|
||||
- {name: workspace, mountPath: /usr/bin, subPath: toolchain/environment/usr/bin, readOnly: true}
|
||||
- {name: workspace, mountPath: /usr/include, subPath: toolchain/environment/usr/include, readOnly: true}
|
||||
- {name: workspace, mountPath: /usr/lib, subPath: toolchain/environment/usr/lib, readOnly: true}
|
||||
- {name: workspace, mountPath: /workspace/environment, subPath: toolchain/environment, readOnly: true}
|
||||
- {name: workspace, mountPath: /workspace/toolchain/gvisor, subPath: toolchain/gvisor}
|
||||
- {name: workspace, mountPath: /workspace/state, subPath: state/runsc}
|
||||
- {name: workspace, mountPath: /plan, subPath: state, readOnly: true}
|
||||
- {name: workspace, mountPath: /workspace/output, subPath: output/runsc}
|
||||
- {name: workspace, mountPath: /tmp, subPath: output/runsc-tmp}
|
||||
volumes:
|
||||
- *orchestration
|
||||
- *workspace
|
||||
|
||||
- name: publish
|
||||
inputs: *working-pvc-input
|
||||
metadata:
|
||||
labels:
|
||||
delivery.quorate.dev/stage: lazaret-publication
|
||||
container:
|
||||
image: *runner
|
||||
command: *fsi
|
||||
args: [/orchestration/push.fsx]
|
||||
env:
|
||||
- {name: BUILD_KIND, value: "{{workflow.parameters.build-kind}}"}
|
||||
- {name: SOURCE_REVISION, value: "{{workflow.parameters.source-revision}}"}
|
||||
- {name: TARGETS, value: "{{workflow.parameters.targets}}"}
|
||||
resources:
|
||||
requests: {cpu: 250m, memory: 256Mi}
|
||||
limits: {memory: 1Gi}
|
||||
securityContext: *restricted
|
||||
volumeMounts:
|
||||
- {name: orchestration, mountPath: /orchestration, readOnly: true}
|
||||
- {name: publisher-auth, mountPath: /publisher-auth, readOnly: true}
|
||||
- {name: workspace, mountPath: /handoff/lazaret, subPath: output/lazaret, readOnly: true}
|
||||
- {name: workspace, mountPath: /handoff/runsc, subPath: output/runsc, readOnly: true}
|
||||
- {name: workspace, mountPath: /result, subPath: output/result}
|
||||
- {name: workspace, mountPath: /tmp, subPath: output/publish-tmp}
|
||||
volumes:
|
||||
- *orchestration
|
||||
- *workspace
|
||||
- {name: publisher-auth, secret: {secretName: lazaret-publisher, defaultMode: 0440}}
|
||||
outputs:
|
||||
parameters:
|
||||
- name: delivery-result
|
||||
valueFrom: {path: /result/delivery-result}
|
||||
|
||||
- name: cache-export
|
||||
inputs: *working-pvc-input
|
||||
metadata:
|
||||
labels:
|
||||
delivery.quorate.dev/stage: lazaret-cache-export
|
||||
container:
|
||||
image: *runner
|
||||
command: *fsi
|
||||
args: [/orchestration/cache.fsx]
|
||||
env:
|
||||
- {name: CACHE_ACTION, value: export}
|
||||
resources:
|
||||
requests: {cpu: "4", memory: 2Gi}
|
||||
limits: {memory: 8Gi}
|
||||
securityContext: *restricted
|
||||
volumeMounts:
|
||||
- {name: orchestration, mountPath: /orchestration, readOnly: true}
|
||||
- {name: cache-auth, mountPath: /cache-auth, readOnly: true}
|
||||
- {name: cache-ca, mountPath: /cache-ca, readOnly: true}
|
||||
- {name: workspace, mountPath: /plan, subPath: state, readOnly: true}
|
||||
- {name: workspace, mountPath: /toolchain, subPath: toolchain, readOnly: true}
|
||||
- {name: workspace, mountPath: /state, subPath: state, readOnly: true}
|
||||
- {name: workspace, mountPath: /tmp, subPath: exports/cache-tmp}
|
||||
volumes:
|
||||
- *orchestration
|
||||
- *workspace
|
||||
- {name: cache-auth, secret: {secretName: project-delivery-cache-writer, defaultMode: 0440}}
|
||||
- {name: cache-ca, secret: {secretName: quay-internal-ca, defaultMode: 0440}}
|
||||
Loading…
Reference in a new issue