GitHub HTTP post failing #11233
-
I am trying to send a HTTP post request in argo workflows to create a branch in my github. It keeps failing and i am not able to figure out why. it's looks like something sticky and small and i would appreciate any help in figuring this out. While executing i just see a message apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: http-template-
spec:
entrypoint: main
serviceAccountName: argo-workflow-sa
templates:
- name: main
steps:
- - name: getmainsha
template: get-sha
arguments:
parameters:
- name: url
value: "https://api.github.com/repos/<owner>/<repo>/git/refs/heads/main"
- - name: print-main-sha
template: print
arguments:
parameters:
- name: message
value: "{{=jsonpath(steps.getmainsha.outputs.result, '$.object.sha')}}"
- - name: generate-branch-name
template: generate-unique-name
arguments:
parameters:
- name: string-name
value: "new-branch"
- - name: create-branch-github
template: create-branch-post
arguments:
parameters:
- name: url
value: "https://api.github.com/repos/<owner>/<repo>/git/refs"
- name: branch-name
value: "{{steps.generate-branch-name.outputs.result}}"
- name: main-branch-sha
value: "{{=jsonpath(steps.getmainsha.outputs.result, '$.object.sha')}}"
#--------------------------------------------------------------templates-----------------------------------------------------------------------------#
- name: print
inputs:
parameters:
- name: message
container:
image: docker/whalesay:latest
command: [cowsay]
args: ["{{inputs.parameters.message}}"]
- name: get-sha
inputs:
parameters:
- name: url
http:
timeoutSeconds: 20 # Default 30
url: "{{inputs.parameters.url}}"
method: "GET"
headers:
- name: "Accept"
value: "application/vnd.github+json"
- name: "Authorization"
value: "Bearer <Token>"
- name: "X-GitHub-Api-Version"
value: "2022-11-28"
successCondition: "response.statusCode == 200"
- name: generate-unique-name
inputs:
parameters:
- name: string-name
script:
image: python:alpine3.6
command: [python]
source: |
import random
i = random.randint(1, 1000)
print('refs/heads/'+'{{inputs.parameters.string-name}}'+'-'+str(i))
- name: create-branch-post
inputs:
parameters:
- name: url
- name: branch-name
- name: main-branch-sha
http:
timeoutSeconds: 20 # Default 30
url: "{{inputs.parameters.url}}"
method: "POST"
headers:
- name: "Accept"
value: "application/vnd.github+json"
- name: "Authorization"
value: "Bearer <Token>"
- name: "X-GitHub-Api-Version"
value: "2022-11-28"
body: "{'ref':{{inputs.parameters.branch-name}},'sha':{{inputs.parameters.main-branch-sha}}}"
successCondition: "response.statusCode == 201" |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
So silly of me to make this mistake. As per the official github documentation the ref in the request body should be like this "ref":"refs/heads/". Github api create reference Here is the updated template kind: Workflow
metadata:
generateName: expand-pvc-template-
spec:
entrypoint: main
serviceAccountName: argo-workflow-sa
arguments:
parameters:
- name: uri
value: "<github-uri>"
templates:
- name: main
steps:
- - name: create-branch-github
template: github-http-post-put
arguments:
parameters:
- name: url
value: "{{workflow.parameters.uri}}/git/refs"
- name: method
value: "POST"
- name: requestbody
value: |
{
"ref":"refs/heads/new-branch",
"sha":"<main-branch-sha>"
}
- name: success-condition
value: "response.statusCode == 201"
# --------------------------------------------------------
- name: github-http-post
inputs:
parameters:
- name: url
- name: method
- name: requestbody
- name: success-condition
http:
timeoutSeconds: 30
url: "{{inputs.parameters.url}}"
method: "{{inputs.parameters.method}}"
headers:
- name: "Accept"
value: "application/vnd.github+json"
- name: "Authorization"
value: "Bearer <>"
- name: "X-GitHub-Api-Version"
value: "2022-11-28"
body: "{{inputs.parameters.requestbody}}"
successCondition: "{{inputs.parameters.success-condition}}" |
Beta Was this translation helpful? Give feedback.
So silly of me to make this mistake.
As per the official github documentation the ref in the request body should be like this "ref":"refs/heads/".
Github api create reference
Here is the updated template