예제 #1
0
파일: test_building.py 프로젝트: zhill/quay
def test_skip(metadata, config):
    prepared = PreparedBuild()
    prepared.metadata = metadata
    config = config

    with pytest.raises(SkipRequestException):
        raise_if_skipped_build(prepared, config)
예제 #2
0
    def handle_trigger_request(self, request):
        payload = request.get_json()
        if not payload:
            raise InvalidPayloadException()

        logger.debug("GitLab trigger payload %s", payload)

        # Lookup the default branch.
        gl_client = self._get_authorized_client()
        gl_project = gl_client.projects.get(self.config["build_source"])
        if not gl_project:
            logger.debug("Skipping GitLab build; project %s not found", self.config["build_source"])
            raise InvalidPayloadException()

        def lookup_commit(repo_id, commit_sha):
            commit = self.lookup_commit(repo_id, commit_sha)
            if commit is None:
                return None

            return dict(commit.attributes)

        default_branch = gl_project.attributes["default_branch"]
        metadata = get_transformed_webhook_payload(
            payload,
            default_branch=default_branch,
            lookup_user=self.lookup_user,
            lookup_commit=lookup_commit,
        )
        prepared = self.prepare_build(metadata)

        # Check if we should skip this build.
        raise_if_skipped_build(prepared, self.config)
        return prepared
예제 #3
0
    def handle_trigger_request(self, request):
        # Check the payload to see if we should skip it based on the lack of a head_commit.
        payload = request.get_json()
        if payload is None:
            raise InvalidPayloadException("Missing payload")

        # This is for GitHub's probing/testing.
        if "zen" in payload:
            raise SkipRequestException()

        # Lookup the default branch for the repository.
        if "repository" not in payload:
            raise InvalidPayloadException("Missing 'repository' on request")

        if "owner" not in payload["repository"]:
            raise InvalidPayloadException("Missing 'owner' on repository")

        if "name" not in payload["repository"]["owner"]:
            raise InvalidPayloadException("Missing owner 'name' on repository")

        if "name" not in payload["repository"]:
            raise InvalidPayloadException("Missing 'name' on repository")

        default_branch = None
        lookup_user = None
        try:
            repo_full_name = "%s/%s" % (
                payload["repository"]["owner"]["name"],
                payload["repository"]["name"],
            )

            gh_client = self._get_client()
            repo = gh_client.get_repo(repo_full_name)
            default_branch = repo.default_branch
            lookup_user = self.lookup_user
        except GitHubBadCredentialsException:
            logger.exception(
                "Got GitHub Credentials Exception; Cannot lookup default branch"
            )
        except GithubException:
            logger.exception(
                "Got GitHub Exception when trying to start trigger %s",
                self.trigger.id)
            raise SkipRequestException()

        logger.debug("GitHub trigger payload %s", payload)
        metadata = get_transformed_webhook_payload(
            payload, default_branch=default_branch, lookup_user=lookup_user)
        prepared = self.prepare_build(metadata)

        # Check if we should skip this build.
        raise_if_skipped_build(prepared, self.config)
        return prepared
예제 #4
0
파일: test_building.py 프로젝트: zhill/quay
def test_does_not_skip():
    prepared = PreparedBuild()
    prepared.metadata = {
        "ref": "ref/heads/master",
        "commit_info": {
            "message": "some cool message",
        },
    }

    config = {
        "branchtag_regex": "(master)|(heads/master)",
    }

    raise_if_skipped_build(prepared, config)
예제 #5
0
  def handle_trigger_request(self, request):
    payload = request.data
    if not payload:
      raise InvalidPayloadException('Missing expected payload')

    logger.debug('Payload %s', payload)

    metadata = self._metadata_from_payload(payload, self.config['build_source'])
    prepared = self.prepare_build(metadata)

    # Check if we should skip this build.
    raise_if_skipped_build(prepared, self.config)

    return prepared
예제 #6
0
def test_does_not_skip():
    prepared = PreparedBuild()
    prepared.metadata = {
        'ref': 'ref/heads/master',
        'commit_info': {
            'message': 'some cool message',
        },
    }

    config = {
        'branchtag_regex': '(master)|(heads/master)',
    }

    raise_if_skipped_build(prepared, config)
예제 #7
0
    def handle_trigger_request(self, request):
        payload = request.get_json()
        if payload is None:
            raise InvalidPayloadException("Missing payload")

        logger.debug("Got BitBucket request: %s", payload)

        repository = self._get_repository_client()
        default_branch = self._get_default_branch(repository)

        metadata = get_transformed_webhook_payload(payload, default_branch=default_branch)
        prepared = self.prepare_build(metadata)

        # Check if we should skip this build.
        raise_if_skipped_build(prepared, self.config)
        return prepared