-
Notifications
You must be signed in to change notification settings - Fork 0
/
cloud-workflows-source.yaml
67 lines (67 loc) · 2.79 KB
/
cloud-workflows-source.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
main:
params: [event]
steps:
- log_event:
call: sys.log
args:
text: ${event}
severity: INFO
- extract_event_data:
assign:
- bucket: ${event.data.bucket}
- object: ${event.data.name}
- contentType: ${event.data.contentType}
- check_content_type:
switch:
- condition: ${not text.match_regex(contentType, "video") and not text.match_regex(contentType, "octet-stream")}
return: ${"Media " + contentType + " not valid."}
next: end
next: prep_transcoding_job
- prep_transcoding_job:
assign:
- project: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
- location: ${sys.get_env("GOOGLE_CLOUD_LOCATION")}
- jobId: '${"transcoding-" + uuid.generate()}'
- imageUri: ${sys.get_env("DOCKER_IMAGE_URI")}
- gcsDestination: ${sys.get_env("GCS_DESTINATION")}
- machineType: ${sys.get_env("MACHINE_TYPE")}
- machineCpuMilli: ${sys.get_env("MACHINE_CPU_MILLI")}
- machineMemoryMib: ${sys.get_env("MACHINE_MEMORY_MIB")}
- create_transcoding_job:
call: googleapis.batch.v1.projects.locations.jobs.create
args:
parent: ${"projects/" + project + "/locations/" + location}
jobId: "${jobId}"
body:
priority: 99
taskGroups:
- taskCount: 1
parallelism: 1
taskSpec:
computeResource:
cpuMilli: ${machineCpuMilli}
memoryMib: ${machineMemoryMib}
runnables:
- container:
imageUri: "${imageUri}"
entrypoint: ''
volumes:
- "/mnt/disks/output:/output"
- "/mnt/disks/input:/input"
environment:
variables:
MEDIA: "${object}"
volumes:
- gcs:
remotePath: "${bucket}"
mountPath: "/mnt/disks/input"
- gcs:
remotePath: "${gcsDestination}"
mountPath: "/mnt/disks/output"
allocationPolicy:
instances:
- policy:
provisioningModel: SPOT
machineType: "${machineType}"
logsPolicy:
destination: CLOUD_LOGGING