Skip to content

Commit

Permalink
chore(release): 🔖 version 0.13.2
Browse files Browse the repository at this point in the history
  • Loading branch information
kikkomep committed Mar 13, 2024
2 parents ef76f91 + d3af054 commit b6206ca
Show file tree
Hide file tree
Showing 5 changed files with 60 additions and 38 deletions.
2 changes: 1 addition & 1 deletion k8s/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ version: 0.12.0
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
appVersion: 0.13.1
appVersion: 0.13.2

# Chart dependencies
dependencies:
Expand Down
29 changes: 23 additions & 6 deletions lifemonitor/integrations/github/controllers.py
Original file line number Diff line number Diff line change
Expand Up @@ -423,11 +423,17 @@ def create(event: GithubEvent):
logger.warning("Is Tag: %r", repo_info.tag)
logger.warning("Is Branch: %r", repo_info.branch)

# workflow submitter
submitter = services.identify_workflow_version_submitter(event.repository_reference)
if not submitter:
logger.warning("Unable to identify the submitter of the workflow version")
return

if repo_info.branch:
try:
__check_for_issues_and_register__(repo_info,
event.sender.user.github_settings,
event.sender.user.registry_settings,
submitter.github_settings,
submitter.registry_settings,
True)
except Exception as e:
logger.exception(e)
Expand Down Expand Up @@ -457,10 +463,16 @@ def delete(event: GithubEvent):
logger.warning("Is Tag: %s", repo_info.tag)
logger.warning("Is Branch: %s", repo_info.branch)

# workflow submitter
submitter = services.identify_workflow_version_submitter(event.repository_reference)
if not submitter:
logger.warning("Unable to identify the submitter of the workflow version")
return

if repo_info.tag or repo_info.branch:
try:
workflow_version = services.delete_repository_workflow_version(repo_info,
registries=event.sender.user.registry_settings.registries)
registries=submitter.registry_settings.registries)
if workflow_version:
__notify_workflow_version_event__(repo_info, workflow_version, action='deleted')
except Exception as e:
Expand Down Expand Up @@ -490,12 +502,17 @@ def push(event: GithubEvent):
logger.debug("Tree: %r", repo.trees_url)
logger.debug("Commit: %r", repo.rev)

# workflow submitter
submitter = services.identify_workflow_version_submitter(event.repository_reference)
if not submitter:
logger.warning("Unable to identify the submitter of the workflow version")
return

if not repo_info.ref or repo_info.deleted:
logger.debug("Repo ref not defined or branch/tag deleted: %r", repo)
else:
settings: GithubUserSettings = event.sender.user.github_settings
__check_for_issues_and_register__(repo_info, settings,
event.sender.user.registry_settings, True)
__check_for_issues_and_register__(repo_info, submitter.github_settings,
submitter.registry_settings, True)

return "No content", 204
except Exception as e:
Expand Down
61 changes: 33 additions & 28 deletions lifemonitor/integrations/github/services.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,16 +104,46 @@ def __get_registries_map__(w: Workflow, registries: List[str]):


def find_workflow_version(repository_reference: GithubRepositoryReference) -> Tuple[Workflow, WorkflowVersion]:
# found the existing workflow associated with repo
# get a reference to the github workflow registry for this installation
github_registry: GithubWorkflowRegistry = repository_reference.event.installation.github_registry
# find the workflow
workflow_version = None
workflow = github_registry.find_workflow(repository_reference.repository.full_name)
if workflow:
# get the workflow version (the one associated with the branch or tag of the repository)
workflow_version = workflow.versions.get(repository_reference.branch or repository_reference.tag, None)
logger.debug("Found workflow version: %r", workflow_version)
return workflow, workflow_version


def identify_workflow_version_submitter(repository_reference: GithubRepositoryReference) -> User:
""" Identify the submitter of the workflow version.
The submitter is the user who trigger a github event on the repository.
If the "sender" of the event is not a LifeMonitor user, the submitter is the user who triggered the event
for the registration of the first workflow version (e.g., the user who registered the LifeMonitor Github app on the github repository).
"""
# search user identity
submitter = None
try:
identity: OAuthIdentity = repository_reference.event.sender
submitter = identity.user
logger.debug("Found a Github identity for the sender %r --> %r, %r", repository_reference.event.sender, identity, submitter)
except OAuthIdentityNotFoundException as e:
logger.warning("Github identity of the sender '%r' doesn't match with any LifeMonitor user identity", repository_reference.owner_id)
if logger.isEnabledFor(logging.DEBUG):
logger.exception(e)

# fallback the submitter to the original submitter of the workflow
# (i.e., the user who registered the LifeMonitor Github app on the github repository)
if not submitter:
# get the workflow
workflow, _ = find_workflow_version(repository_reference)
if workflow:
submitter = workflow.earliest_version.submitter

return submitter


def register_repository_workflow(repository_reference: GithubRepositoryReference, registries: List[str] = None) -> WorkflowVersion:
logger.debug("Repository ref: %r", repository_reference)
# set a reference to LifeMonitorService
Expand All @@ -139,15 +169,7 @@ def register_repository_workflow(repository_reference: GithubRepositoryReference
workflow_version = repository_reference.branch or repository_reference.tag

# search user identity
submitter = None
try:
identity: OAuthIdentity = repository_reference.event.sender
submitter = identity.user
logger.debug("Found a Github identity for the sender %r --> %r, %r", repository_reference.event.sender, identity, submitter)
except OAuthIdentityNotFoundException as e:
logger.warning("Github identity of the sender '%r' doesn't match with any LifeMonitor user identity", repository_reference.owner_id)
if logger.isEnabledFor(logging.DEBUG):
logger.exception(e)
submitter = identify_workflow_version_submitter(repository_reference)

# set the repo link
repo_link = f"{hosting_service.uri}/{repo.full_name}.git"
Expand All @@ -158,11 +180,6 @@ def register_repository_workflow(repository_reference: GithubRepositoryReference
if workflow:
logger.debug("Found workflow associated with the repo: %r", workflow)

# fallback the submitter to the original submitter of the workflow
# (i.e., the user who registered the LifeMonitor Github app on the github repository)
if not submitter:
submitter = workflow.earliest_version.submitter

# look up the existing workflow version
current_wv = wv = workflow.versions.get(workflow_version, None)

Expand Down Expand Up @@ -239,14 +256,7 @@ def delete_repository_workflow_version(repository_reference: GithubRepositoryRef
workflow_version = repository_reference.branch or repository_reference.tag

# search user identity
submitter = None
try:
identity: OAuthIdentity = repository_reference.event.sender
submitter = identity.user
except OAuthIdentityNotFoundException as e:
logger.warning("Github identity of the sender '%r' doesn't match with any LifeMonitor user identity", repository_reference.owner_id)
if logger.isEnabledFor(logging.DEBUG):
logger.exception(e)
submitter = identify_workflow_version_submitter(repository_reference)

# set the repo link
repo_link = f"{hosting_service.uri}/{repo.full_name}.git"
Expand All @@ -260,11 +270,6 @@ def delete_repository_workflow_version(repository_reference: GithubRepositoryRef
logger.warning(f"No workflow associated with '{repo.full_name}' found")
else:

# fallback the submitter to the original submitter of the workflow
# (i.e., the user who registered the LifeMonitor Github app on the github repository)
if not submitter:
submitter = w.earliest_version.submitter

# try to find the workflow version
wv = lm.get_user_workflow_version(submitter, w.uuid, workflow_version)
if not wv:
Expand Down
2 changes: 1 addition & 1 deletion lifemonitor/static/src/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "lifemonitor",
"description": "Workflow Testing Service",
"version": "0.13.1",
"version": "0.13.2",
"license": "MIT",
"author": "CRS4",
"main": "../dist/js/lifemonitor.min.js",
Expand Down
4 changes: 2 additions & 2 deletions specs/api.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
openapi: "3.0.0"

info:
version: "0.13.1"
version: "0.13.2"
title: "Life Monitor API"
description: |
*Workflow sustainability service*
Expand All @@ -18,7 +18,7 @@ info:
servers:
- url: /
description: >
Version 0.13.1 of API.
Version 0.13.2 of API.
tags:
- name: GitHub Integration
Expand Down

0 comments on commit b6206ca

Please sign in to comment.