Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import yaml

from bypass import ConditionNotMet
from context.github_pull_request import Context
from job_payload.payload_abstract import PayloadProviderAbstract


class JobPayloadProvider(PayloadProviderAbstract):
@staticmethod
def __call__(context: Context):
desc = context.description
pr = context.pull_request

def first_line(text):
if not text:
return ""
else:
return text.splitlines()[0]

job_origin = {
'pull_request': {
'action': desc["action"],
'number': desc["pull_request_number"],
'title': first_line(desc["title"]),
'login': desc["login"],
'url': pr["url"],
'body': first_line(pr["body"]),
'head': {
'ref': pr["head"]["ref"],
'sha': pr["head"]["sha"],
'url': pr["head"]["repo"]["html_url"]
},
'base': {
'ref': pr["base"]["ref"],
'sha': pr["base"]["sha"],
'url': pr["base"]["repo"]["html_url"]
}
}
}
if context.action == "closed" and pr.get("merged", False):
code_to_test = pr["base"]["ref"]
publish = "true"
elif context.action == "closed" and not pr.get("merged", False):
raise ConditionNotMet("Skipped on pull request closed but not merged")
else:
code_to_test = f"pull/{context.pull_request_number}"
publish = "false"

return {
"options": {
"job-origin": yaml.safe_dump(job_origin, sort_keys=False),
"code-to-test": code_to_test,
"publish-release": publish,
}
}
3 changes: 3 additions & 0 deletions src/bypass/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

class ConditionNotMet(Exception):
pass
9 changes: 8 additions & 1 deletion src/runner/http_abstract.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import requests

from bypass import ConditionNotMet
from runner.runner_abstract import RunnerAbstract


Expand All @@ -15,7 +16,13 @@ def __init__(self, verb):

def execute(self, job):
url = job.uri
payload = job.payload
try:
payload = job.payload
except ConditionNotMet as e:
logging.info(e)
self._status = 200
self._data = {"message": "ConditionNotMet: %s" % e}
return
verb = self.verb
logging.info(f'request sending {verb} {url}')
logging.info(f'request payload {json.dumps(payload, indent=4)}')
Expand Down
Loading