|
18 | 18 | )
|
19 | 19 |
|
20 | 20 | from .access_requests import ProjectAccessRequestManager # noqa: F401
|
| 21 | +from .artifacts import ProjectArtifactManager # noqa: F401 |
21 | 22 | from .audit_events import ProjectAuditEventManager # noqa: F401
|
22 | 23 | from .badges import ProjectBadgeManager # noqa: F401
|
23 | 24 | from .boards import ProjectBoardManager # noqa: F401
|
@@ -136,6 +137,7 @@ class Project(RefreshMixin, SaveMixin, ObjectDeleteMixin, RepositoryMixin, RESTO
|
136 | 137 | additionalstatistics: ProjectAdditionalStatisticsManager
|
137 | 138 | approvalrules: ProjectApprovalRuleManager
|
138 | 139 | approvals: ProjectApprovalManager
|
| 140 | + artifacts: ProjectArtifactManager |
139 | 141 | audit_events: ProjectAuditEventManager
|
140 | 142 | badges: ProjectBadgeManager
|
141 | 143 | boards: ProjectBoardManager
|
@@ -553,94 +555,19 @@ def transfer_project(self, *args: Any, **kwargs: Any) -> None:
|
553 | 555 | )
|
554 | 556 | return self.transfer(*args, **kwargs)
|
555 | 557 |
|
556 |
| - @cli.register_custom_action("Project", ("ref_name", "job"), ("job_token",)) |
557 |
| - @exc.on_http_error(exc.GitlabGetError) |
558 |
| - def artifacts( |
559 |
| - self, |
560 |
| - ref_name: str, |
561 |
| - job: str, |
562 |
| - streamed: bool = False, |
563 |
| - action: Optional[Callable] = None, |
564 |
| - chunk_size: int = 1024, |
565 |
| - **kwargs: Any, |
566 |
| - ) -> Optional[bytes]: |
567 |
| - """Get the job artifacts archive from a specific tag or branch. |
568 |
| -
|
569 |
| - Args: |
570 |
| - ref_name: Branch or tag name in repository. HEAD or SHA references |
571 |
| - are not supported. |
572 |
| - artifact_path: Path to a file inside the artifacts archive. |
573 |
| - job: The name of the job. |
574 |
| - job_token: Job token for multi-project pipeline triggers. |
575 |
| - streamed: If True the data will be processed by chunks of |
576 |
| - `chunk_size` and each chunk is passed to `action` for |
577 |
| - treatment |
578 |
| - action: Callable responsible of dealing with chunk of |
579 |
| - data |
580 |
| - chunk_size: Size of each chunk |
581 |
| - **kwargs: Extra options to send to the server (e.g. sudo) |
582 |
| -
|
583 |
| - Raises: |
584 |
| - GitlabAuthenticationError: If authentication is not correct |
585 |
| - GitlabGetError: If the artifacts could not be retrieved |
586 |
| -
|
587 |
| - Returns: |
588 |
| - The artifacts if `streamed` is False, None otherwise. |
589 |
| - """ |
590 |
| - path = f"/projects/{self.encoded_id}/jobs/artifacts/{ref_name}/download" |
591 |
| - result = self.manager.gitlab.http_get( |
592 |
| - path, job=job, streamed=streamed, raw=True, **kwargs |
593 |
| - ) |
594 |
| - if TYPE_CHECKING: |
595 |
| - assert isinstance(result, requests.Response) |
596 |
| - return utils.response_content(result, streamed, action, chunk_size) |
597 |
| - |
598 | 558 | @cli.register_custom_action("Project", ("ref_name", "artifact_path", "job"))
|
599 | 559 | @exc.on_http_error(exc.GitlabGetError)
|
600 | 560 | def artifact(
|
601 | 561 | self,
|
602 |
| - ref_name: str, |
603 |
| - artifact_path: str, |
604 |
| - job: str, |
605 |
| - streamed: bool = False, |
606 |
| - action: Optional[Callable] = None, |
607 |
| - chunk_size: int = 1024, |
| 562 | + *args: Any, |
608 | 563 | **kwargs: Any,
|
609 | 564 | ) -> Optional[bytes]:
|
610 |
| - """Download a single artifact file from a specific tag or branch from |
611 |
| - within the job’s artifacts archive. |
612 |
| -
|
613 |
| - Args: |
614 |
| - ref_name: Branch or tag name in repository. HEAD or SHA references |
615 |
| - are not supported. |
616 |
| - artifact_path: Path to a file inside the artifacts archive. |
617 |
| - job: The name of the job. |
618 |
| - streamed: If True the data will be processed by chunks of |
619 |
| - `chunk_size` and each chunk is passed to `action` for |
620 |
| - treatment |
621 |
| - action: Callable responsible of dealing with chunk of |
622 |
| - data |
623 |
| - chunk_size: Size of each chunk |
624 |
| - **kwargs: Extra options to send to the server (e.g. sudo) |
625 |
| -
|
626 |
| - Raises: |
627 |
| - GitlabAuthenticationError: If authentication is not correct |
628 |
| - GitlabGetError: If the artifacts could not be retrieved |
629 |
| -
|
630 |
| - Returns: |
631 |
| - The artifacts if `streamed` is False, None otherwise. |
632 |
| - """ |
633 |
| - |
634 |
| - path = ( |
635 |
| - f"/projects/{self.encoded_id}/jobs/artifacts/{ref_name}/raw/" |
636 |
| - f"{artifact_path}?job={job}" |
637 |
| - ) |
638 |
| - result = self.manager.gitlab.http_get( |
639 |
| - path, streamed=streamed, raw=True, **kwargs |
| 565 | + warnings.warn( |
| 566 | + "The project.artifact() method is deprecated and will be " |
| 567 | + "removed in a future version. Use project.artifacts.raw() instead.", |
| 568 | + DeprecationWarning, |
640 | 569 | )
|
641 |
| - if TYPE_CHECKING: |
642 |
| - assert isinstance(result, requests.Response) |
643 |
| - return utils.response_content(result, streamed, action, chunk_size) |
| 570 | + return self.artifacts.raw(*args, **kwargs) |
644 | 571 |
|
645 | 572 |
|
646 | 573 | class ProjectManager(CRUDMixin, RESTManager):
|
|
0 commit comments