{"id":23188131,"url":"https://github.com/kuberocketci/tekton-custom-task","last_synced_at":"2025-04-05T05:43:25.859Z","repository":{"id":255168029,"uuid":"848714963","full_name":"KubeRocketCI/tekton-custom-task","owner":"KubeRocketCI","description":"Enhance CI/CD pipelines with Tekton Custom Task - the solution for integrating custom logic into Tekton workflows. Streamline DevOps processes with Kubernetes-extendable, easily configurable tasks","archived":false,"fork":false,"pushed_at":"2025-04-02T17:56:15.000Z","size":143,"stargazers_count":0,"open_issues_count":4,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-04-02T18:46:39.712Z","etag":null,"topics":["approval-process","approve","cicd","custom-task","devops","kuberocketci","manual-approval","pipeline","tekton","tekton-pipelines"],"latest_commit_sha":null,"homepage":"https://docs.kuberocketci.io","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KubeRocketCI.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-28T09:16:52.000Z","updated_at":"2025-03-27T07:43:42.000Z","dependencies_parsed_at":"2024-08-28T12:04:45.358Z","dependency_job_id":"824c5b95-5c10-4f89-bb2b-5f5c06ba688c","html_url":"https://github.com/KubeRocketCI/tekton-custom-task","commit_stats":null,"previous_names":["kuberocketci/tekton-custom-task"],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KubeRocketCI%2Ftekton-custom-task","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KubeRocketCI%2Ftekton-custom-task/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KubeRocketCI%2Ftekton-custom-task/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KubeRocketCI%2Ftekton-custom-task/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KubeRocketCI","download_url":"https://codeload.github.com/KubeRocketCI/tekton-custom-task/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247294463,"owners_count":20915338,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["approval-process","approve","cicd","custom-task","devops","kuberocketci","manual-approval","pipeline","tekton","tekton-pipelines"],"created_at":"2024-12-18T11:12:59.673Z","updated_at":"2025-04-05T05:43:25.835Z","avatar_url":"https://github.com/KubeRocketCI.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tekton Custom Task\n\n\u003c!-- TOC --\u003e\n\n- [Tekton Custom Task](#tekton-custom-task)\n  - [Introduction](#introduction)\n  - [Project Structure](#project-structure)\n  - [Getting Started](#getting-started)\n    - [Deploy with Helm](#deploy-with-helm)\n    - [Deploy with cluster add-ons](#deploy-with-cluster-add-ons)\n  - [Usage](#usage)\n    - [Using the ApprovalTask in a Tekton Pipeline](#using-the-approvaltask-in-a-tekton-pipeline)\n      - [Define the Pipeline](#define-the-pipeline)\n      - [Define the PipelineRun](#define-the-pipelinerun)\n    - [Applying the Definitions](#applying-the-definitions)\n  - [Features](#features)\n  - [Integration and Notifications](#integration-and-notifications)\n  - [Roadmap](#roadmap)\n  - [Contributing](#contributing)\n  - [License](#license)\n\n\u003c!-- /TOC --\u003e\n\n## Introduction\n\nTekton Custom Task extends Kubernetes and Tekton capabilities by providing custom task implementations.\nThese custom tasks are designed to facilitate complex workflows that standard Tekton tasks may not cover,\nmaking it a powerful tool for DevOps teams looking to extend their CI/CD pipelines with custom logic.\n\n## Project Structure\n\n- **api/v1alpha1/**: Contains the API definitions for the custom tasks, including the structure and validation of custom resource definitions (CRDs).\n- **cmd/**: Hosts the main application entry point and the command-line interface setup.\n- **config/**: Includes Kubernetes configuration files for deploying the custom tasks, such as CRDs, RBAC rules, and sample configurations.\n- **docs/**: Provides detailed documentation on the API and usage examples.\n- **deploy-templates/**: Contains Helm chart templates for deploying the custom tasks controller.\n\n## Getting Started\n\nTo get started with Tekton Custom Task, ensure you have Kubernetes and Tekton Pipelines installed in your environment. Follow these steps to deploy a custom task:\n\n1. Clone the repository to your local environment.\n2. Navigate to the `config/` directory.\n3. Apply the CRDs to your Kubernetes cluster:\n\n   ```bash\n   kubectl apply -f config/crd/bases/\n   ```\n\n### Deploy with Helm\n\n1. To add the Helm EPAMEDP Charts for local client, run \"helm repo add\":\n\n    ```bash\n    helm repo add epamedp https://epam.github.io/edp-helm-charts/stable\n    ```\n\n2. Choose available Helm chart version:\n\n    ```bash\n    helm search repo epamedp/tekton-custom-task -l\n    NAME                           CHART VERSION   APP VERSION     DESCRIPTION\n    epamedp/tekton-custom-task      0.1.0          0.1.0          A Helm chart for Tekton Custom Tasks\n    ```\n\n    _**NOTE:** It is highly recommended to use the latest released version._\n\n3. Full chart parameters available in [deploy-templates/README.md](deploy-templates/README.md).\n\n4. Install operator with the following command:\n\n    ```bash\n    helm install tekton-custom-task epamedp/tekton-custom-task --version \u003cchart_version\u003e\n    ```\n\n5. Check the namespace that should contain CustomTask controller in a running status.\n\n### Deploy with cluster add-ons\n\n1. Navigate to the forked [edp-cluster-add-ons](https://github.com/epam/edp-cluster-add-ons) repository.\n\n2. Enable the deployment of the Tekton Custom Task Helm chart by setting the `tekton-custom-task.enable` and `tekton-custom-task.createNamespace` values to `true` in the `clusters/core/apps/values.yaml` file.\n\n    ```yaml title=\"clusters/core/apps/values.yaml\"\n    tekton-custom-task:\n      createNamespace: true\n      enable: true\n    ```\n\n3. Update the `clusters/core/addons/tekton-custom-task/values.yaml` file with the desired configuration for the Tekton Custom Task Helm chart.\n\n4. After updating the `values.yaml` file, commit the changes to the repository and apply the changes with Helm or Argo CD.\n\n## Usage\n\nThis set of instructions guides you through the process of creating a custom `ApprovalTask` and incorporating it into a Tekton pipeline to serve as an approval step.\n\nTo integrate the `ApprovalTask` into your CI/CD pipelines, follow these steps to define the custom task and use it within a Tekton pipeline.\n\n### Using the `ApprovalTask` in a Tekton Pipeline\n\nIncorporate the `ApprovalTask` within a Tekton pipeline by defining both a `Pipeline` and a `PipelineRun`.\n\n#### Define the Pipeline\n\nCreate a file named `pipeline.yaml` with the following content:\n\n```yaml\napiVersion: tekton.dev/v1beta1\nkind: Pipeline\nmetadata:\n  name: example-pipeline\nspec:\n  tasks:\n    - name: approval-task\n      taskRef:\n        apiVersion: edp.epam.com/v1alpha1\n        kind: ApprovalTask\n        name: approvaltask-example\n```\n\nThis pipeline, named `example-pipeline`, contains a single task named `approval-task`. This task references your previously defined `ApprovalTask` (`approvaltask-example`).\n\n#### Define the PipelineRun\n\nTo initiate the pipeline execution, define a `PipelineRun` in a file named `pipeline-run.yaml` with the contents below:\n\n```yaml\napiVersion: tekton.dev/v1beta1\nkind: PipelineRun\nmetadata:\n  name: example-pipeline-run\nspec:\n  pipelineRef:\n    name: example-pipeline\n```\n\nThis `PipelineRun`, named `example-pipeline-run`, triggers the execution of `example-pipeline`.\n\n### Applying the Definitions\n\nDeploy the `ApprovalTask`, the pipeline, and initiate the pipeline run by applying the YAML files to your Kubernetes cluster:\n\n```sh\nkubectl apply -f approvaltask.yaml\nkubectl apply -f pipeline.yaml\nkubectl apply -f pipeline-run.yaml\n```\n\n## Features\n\n- **Custom Task Definitions**: Define your tasks that extend the Tekton pipeline model.\n- **Flexible Configuration**: Leverage Kubernetes CRDs for task definitions, allowing for dynamic and flexible configurations.\n- **Integration with Tekton Pipelines**: Seamlessly integrate custom tasks within your existing Tekton pipelines.\n\n## Integration and Notifications\n\nTekton Custom Task supports integration with Kubernetes dashboards and notification systems. This allows for improved monitoring and alerting capabilities for your custom tasks.\n\n## Roadmap\n\nFuture developments include:\n\n- Enhanced UI for managing custom tasks.\n- More examples and templates for common use cases.\n- Improved integration with external tools and platforms.\n\n## Contributing\n\nWe welcome contributions in the form of issues and pull requests. Please follow the contributing guidelines outlined in the repository.\n\n## License\n\nThis project is licensed under the [Apache License 2.0](LICENSE.txt).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuberocketci%2Ftekton-custom-task","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkuberocketci%2Ftekton-custom-task","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuberocketci%2Ftekton-custom-task/lists"}