示例#1
0
    def get_latest_version(self):
        """
        Retrieves information about a tag

        Parameters:
            release_name (str): tag name

        Returns:
            dict: tag details
        """
        try:
            request_data = {
                "method": "GET",
                "headers": self.req_headers,
                "url": f"{self.repo_url}/releases/latest"
            }
            response = request_handler(request_data)
            if response is None:
                return {"message": "No releases found", "status_code": 404}
            if response.status_code == 200 and 'tag_name' in response.json():
                self.current_release = response.json()
                return self.current_release['tag_name']
            return response

        except Exception as err:
            print("Error occurred getting tag: {}".format(err))
            return None
        else:
            return None
示例#2
0
    def get_tag(self, tag_name: str):
        """
        Retrieves information about a tag

        Parameters:
            tag_name (str): branch name

        Returns:
            dict: Tag information
        """
        try:
            request_data = {
                "method": "GET",
                "headers": self.req_headers,
                "url": f"{self.repo_url}/git/ref/tags/{tag_name}"
            }
            response = request_handler(request_data)

            if response is None:
                return None

            if response.status_code == 200:
                self.tag_details = response.json()
                return response.json()

            return self.tag_details

        except Exception as err:
            print("Error occurred getting tag: {}".format(err))
            return None
        else:
            return None
    def create_tag_object(self, payload: dict):
        """
            Create tag object

            Parameters:
                payload (dict):
                    tag: tag name
                    message: tag message
                    object: commit id sha
                    type: type of object, nomrally commit

            Returns:
                dict: Tag delete result
            """
        try:
            request_data = {
                "method": "POST",
                "headers": self.req_headers,
                "url": f"{self.repo_url}/git/tags",
                "data": payload
            }
            response = request_handler(request_data)

            return response

        except Exception as err:
            print("Error occurred creating tag object: {}".format(err))
            return None
        else:
            return None
示例#4
0
 def get_commit_ids(self):
     request_data = {
         "method": "GET",
         "headers": self.req_headers,
         "url": f"{self.repo_url}/commits"
     }
     response = request_handler(request_data)
     commit_ids = [id["sha"] for id in response.json()]
     return commit_ids
 def get_commit(self, commit_id: str):
     try:
         request_data = {
             "method": "GET",
             "headers": self.req_headers,
             "url": f"{self.repo_url}/git/commits/{commit_id}"
         }
         response = request_handler(request_data)
         return response.json()
     except Exception as err:
         print("Error occurred getting tag: {}".format(err))
         return None
     else:
         return None
    def get_all_references(self):
        """
        Get all tag references

        Parameters:
            tag_name (str): tag name

        Returns:
            dict: Tag delete result
        """
        try:
            request_data = {
                "method": "GET",
                "headers": self.req_headers,
                "url": f"{self.repo_url}/git/matching-refs/"
            }
            response = request_handler(request_data)
            return response.json()

        except Exception as err:
            print("Error occurred getting tag: {}".format(err))
            return None
        else:
            return None
示例#7
0
    def create_release(self, branch_name: str, commit_id: str):
        """
        Create a release

        Parameters:
            branch_name (str): Specifies the git branch tag is created from.
            commit_id (str): git commit id


        Returns:
            dict: tag details
        """
        try:
            current_version = self.get_latest_version()
            release_name = generate_version(current_version)
            resp_obj = {
                "message":
                f"Error occurred creating release version {release_name} no changes made",
                "exit_code": 1
            }

            current_tag = self.get_tag(current_version)

            if current_tag is not None:
                if current_tag['object']["sha"] != commit_id:
                    _ids = self.get_commit_ids()
                    if commit_id in _ids:
                        self.create_release_status = True

            if self.create_release_status == False:
                resp_obj[
                    'message'] = f"Release {current_version} using commit id {commit_id}, skipping creating new release"
                resp_obj['exit_code'] = 0
                resp_obj['data'] = self.tag_details
                return resp_obj

            url = f"{self.repo_url}/releases"
            req_body = {
                "tag_name": release_name,
                "target_commitish": branch_name,
                "name": release_name,
                "draft": False,
                "prerelease": False
            }

            request_data = {
                "method": "POST",
                "headers": self.req_headers,
                "url": url,
                "data": req_body
            }

            response = request_handler(request_data)

            if response.json() is not None and response.status_code == 201:
                self.create_alpha_tag()
                self.release_details = response.json()
                resp_obj[
                    'message'] = f"Release {release_name} created using branch {branch_name}"
                resp_obj['exit_code'] = 0
                resp_obj['data'] = self.release_details
                return resp_obj
            return response
        except Exception as err:
            print("Error occurred creating tag: {}".format(err))
            resp_obj[
                'message'] = f"An error occurred creating release {release_name}"
            resp_obj['error'] = err
            return resp_obj
        else:
            return None