Giter Club home page Giter Club logo

intellij-tekton's Introduction

JetBrains Marketplace Downloads Java CI with Gradle Validate against IJ versions License

IntelliJ Tekton

Overview

Tekton Pipelines extension provides an end-to-end developer experience for interaction with Tekton.

Using this extension:

  • Developer can create Tekton resource easily by using Deploy resource on save.
  • Install Task/ClusterTask from TektonHub.
  • Support for start Pipeline, Workspace and create new PVC(PersistentVolumeClaim) using wizard workflow.
  • Show Tekton TaskRun/PipelineRun Logs in Editor.
  • Support for Adding Trigger.
  • Tekton variables code completion.
  • Pipeline/PipelineRun preview diagram

Features

For more detail information around specific commands & features, please read the plugin features detailed guide.

Tekton Versions

  • The minimum IDEA version supported is now 2021.1.
  • The Tekton CLI in use has been upgraded to 0.27.0.
  • Schemas for validation and code assist have been updated to Tekton Pipeline 0.42.0 and Tekton Triggers 0.22.0.

Note: We support v1beta1 API. Previous version v1alpha1 may work, but we cannot guarantee that all features will work properly. If you have v1alpha1 pipelines/tasks please use migrating document to migrate to v1beta1.

Dependencies

This plugin uses a CLI tool to interact with Tekton Pipelines:

  • Tekton CLI - tkn

The plugin will detect these dependencies and prompt the user to install if they are missing or have not supported version - choose Download & Install when you see an notification for the missing tool.

NOTE: This plugin is in Preview mode. The plugin support for Tekton is strictly experimental - assumptions may break, commands and behavior may change!

Release notes

See the release notes.

Contributing

This is an open source project open to anyone. This project welcomes contributions and suggestions!

For information on getting started, refer to the CONTRIBUTING instructions.

Feedback & Questions

If you discover an issue please file a bug and we will fix it as soon as possible.

If you want to chat with us, you can contact us on the #ide-integration channel of the tektoncd Slack. Please click this link to join the tektoncd Slack.

License

EPL 2.0, See LICENSE for more information.

Data and Telemetry

The JetBrains IntelliJ Tekton plugin collects anonymous usage data and sends it to Red Hat servers to help improve our products and services. Read our privacy statement to learn more. This extension respects the Red Hat Telemetry setting which you can learn more about at https://github.com/redhat-developer/intellij-redhat-telemetry#telemetry-reporting

intellij-tekton's People

Contributors

adietish avatar dependabot[bot] avatar evidolob avatar fbricon avatar jeffmaury avatar l-qing avatar lstocchi avatar mohitsuman avatar sbouchet avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

intellij-tekton's Issues

Run a task

Users should be able to run a task by using the extension

Delete Action

Users should be able to delete a component (pipeline/task/resource)

Error when retrieving tasks for a namespace

When expanding a namespace node and the list of tasks is retrieved this error is printed

java.io.IOException: Process exited with an error: 1 (Exit value: 1) Error: unable to match a printer suitable for the output format "'jsonpath={range .items[*]}{.metadata.name}{'\n'}", allowed formats are: go-template,go-template-file,json,jsonpath,jsonpath-file,name,template,templatefile,yaml

Add snippets for trigger types

When editing a YAML, user should be able to generate snippets for the trigger types using vscode code completion. The trigger types are:

  • TriggerTemplate type
  • TriggerBinding type
  • ClusterTriggerBinding type
  • EventListener type

Add pipeline diagram preview

Pipeline YAML could be long and complex which makes it difficult to get an overview of all tasks included in the pipeline and their execution order. It would be beneficial to be able to get a read only visual graph of the pipeline based on the YAML to help user rapidly understand the tasks and how they'd execute.

Run a pipeline

Users should be able to run a pipeline by using the extension

Add refresh action

We need to add a refresh action so user can explicitly ask to reload the selected node

Open PipelineRun and TaskRun as readonly

PipelineRun and TaskRun are immutable objects and cannot be edited after they are created. If user opens these objects form the tree in the editor, they should be opened as read-only.

Stop asking user to add namespace in config

Forcing the user to specify the namespace is annoying and counter productive because most of the samples don't specifiy it. We should save it in the callback context and retrieve it when we push to the cluster.

Error when having string param inside an array

If i have a string (which contains a value with a space) in an array and the array is passed as value to the pipeline, it is unable to start.

Error: Process exited with an error: 1 (Exit value: 1) Error: param '"message' not present in spec

Refresh tekton tree automatically

The Tekton Pipelines tree currently requires a manual refresh to display the latest state of the pipelines and pipelineruns. This would leave the user thinking the pipeilnerun is running for a long time.

Error when resource yaml is wrong

By using this yaml

spec:
  params:
    - name: flags
      type: array
    - name: someURL
      type: string
  steps:
    - name: build
      image: my-builder
      args: ["build", "$(params.flags[*])", "url=$(params.someURL)"]

the saving fails with this error

io.fabric8.kubernetes.client.KubernetesClientException: Error while performing the call to https://api.crc.testing:6443/apis/tekton.dev/v1alpha1/namespaces/pipeline-test/tasks/. Response code: 500
	at io.fabric8.kubernetes.client.dsl.internal.RawCustomResourceOperationsImpl.makeCall(RawCustomResourceOperationsImpl.java:582)
	at io.fabric8.kubernetes.client.dsl.internal.RawCustomResourceOperationsImpl.validateAndSubmitRequest(RawCustomResourceOperationsImpl.java:593)
	at io.fabric8.kubernetes.client.dsl.internal.RawCustomResourceOperationsImpl.create(RawCustomResourceOperationsImpl.java:122)
	at com.redhat.devtools.intellij.tektoncd.tkn.TknCli.createCustomResource(TknCli.java:171)

Now, by trying it with the terminal i got a clearer message

Internal error occurred: admission webhook "webhook.tekton.dev" denied the request: mutation failed: cannot decode incoming new object: json: unknown field "params"

All of this to say.... we should show an error which is more explanatory

Improve yaml completion

It would be great if yaml completion showed the list of tasks or resources available when the user is filling the task/resource field in the editor.

Add Start last Run action

The extension only has the start action. We need to add the start last run to allow executing last run automatically

Allow to create a pipeline or a task

Looking at the VSCode extension i didn't find any action related to this but i think it could be useful to have a create btn which opens up an editor with a pipeline/task template to be completed.

Open In Editor doesn't focus on already opened tab

If i have multiple tabs opened and i click Open In Editor on a resource which has a tab already opened, that tab is not highlighted. The focus stays on the current visible tab and it seems the action is not working.

Review start dialog with UX team

We should ask help to the UX team how we should deal with this. Better stick with the current dialog format or change it to a table view?

Use the async structured model

We should use the async structured model provided by IJ as it provides better support for refresh, async operations. See the intellij-kubernetes as a template

Add snippets for conditions

When editing a YAML, user should be able to generate snippets for conditions using code completion. The snippets are

Condition type
Condition reference in a taskref e.g.

- name: list-pipeline-repo-files-1
      taskRef:
        name: list-pipeline-repo-files
      conditions:
        - conditionRef: "verify-no-file-exists-without-resource"
          params:
            - name: "path"
              value: "$(params.path)"

Pipelinerun failed to be created because of uppercase char

If you have a pipeline which has a task and its name contains one or more uppercase char (or any other invalid char) the taskrun (connected to the pipelinerun) will not be created and no message will be given to the user.
Looking at the log using oc.

Warning  TaskRunCreationFailed  50m                 pipeline-controller  Failed to create TaskRun "pipeline-test-release-run-lktb6-taskName-rjn2r": TaskRun.tekton.dev "pipeline-test-release-run-lktb6-taskName-rjn2r" is invalid: metadata.name: Invalid value: "pipeline-test-release-run-lktb6-taskName-rjn2r": a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')

This is related to #34 . We need to check the yaml before to push it. In this particular case we don't even get any error displayed in the ui. Even if you start the pipeline from the terminal you won't receive any error.

"tkn" binary should be download in the background, is blocking me from doing anything else

If you dont have the "tkn" binary yet, the tooling is offering to do so. The user is asked to confirm downloading it. If the user chooses to do so he/she gets a modal progress dialog which reports the progress of the downloading. This modal progress dialog is preventing him/her from doing anything else. Ideally this task should be put into background so that the user can continue doing stuff.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.