Skip to content

Instantly share code, notes, and snippets.

@xSAVIKx
Created April 20, 2024 20:18
Show Gist options
  • Save xSAVIKx/5970620e65f54fe79df3fc83f900e052 to your computer and use it in GitHub Desktop.
Save xSAVIKx/5970620e65f54fe79df3fc83f900e052 to your computer and use it in GitHub Desktop.
Tasks Runner e2e test GCP Workflows workflow
main:
params: [input]
steps:
- checkSleepTimeout:
switch:
- condition: ${"sleepTimeoutSeconds" in input}
assign:
- sleepTimeoutSeconds: ${int(input.sleepTimeoutSeconds)}
- condition: true
assign:
- sleepTimeoutSeconds: 2100 # 35 minutes
- createCallback:
call: events.create_callback_endpoint
args:
http_callback_method: "POST"
result: callbackDetails
- createHttpCallPayload:
assign:
- httpCallPayload: {}
- httpCallPayload.workflows_callback: ${callbackDetails}
- httpCallPayload.sleepTimeoutSeconds: ${sleepTimeoutSeconds}
- createCloudTaskPayload:
assign:
- tasksRunnerTask: { }
- tasksRunnerTask.url: ${sys.get_env("JOB_SERVICE_URL")}
- tasksRunnerTask.method: "POST"
- tasksRunnerTask.content_type: "application/json"
- tasksRunnerTask.timeout: 3660
- tasksRunnerTask.body: ${httpCallPayload}
- tasksRunnerTaskJson: ${json.encode(tasksRunnerTask)}
- tasksRunnerTaskEncodedJson: ${base64.encode(tasksRunnerTaskJson)}
- getProjectID:
assign:
- projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
- scheduleJob:
call: googleapis.cloudtasks.v2.projects.locations.queues.tasks.create
args:
parent: ${"projects/" + projectId + "/locations/us-central1/queues/scheduled-tasks"}
body:
task:
appEngineHttpRequest:
httpMethod: "POST"
relativeUri: "/"
headers:
Content-Type: "application/json"
body: ${tasksRunnerTaskEncodedJson}
responseView: "BASIC"
result: createdTasksRunnerTask
- logCreatedTaskTask:
call: sys.log
args:
text: ${"Created Tasks Runner scheduled task " + json.encode_to_string(createdTasksRunnerTask)}
severity: INFO
- awaitCallback:
call: events.await_callback
args:
callback: ${callbackDetails}
timeout: 3000
result: callbackResult
- unwrapCallbackResult:
assign:
- serverResponse: ${callbackResult.http_request}
- returnOutput:
return: '${serverResponse}'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment