GithubHelp home page GithubHelp logo

raskyld / go-tektasker Goto Github PK

View Code? Open in Web Editor NEW
7.0 1.0 0.0 116 KB

A small tool to create, test and deploy Tekton tasks writing only Go code ๐Ÿ˜Ž

Home Page: https://go-tektasker.nocera.eu

License: Apache License 2.0

Go 100.00%
hacktoberfest hacktoberfest2023 tekton tekton-pipelines tekton-tasks tektoncd

go-tektasker's Introduction

Go Tektasker

๐Ÿ”ง This project is in an alpha level of readiness.

A framework for building Tekton Tasks in Go.

Demo

demo-alpha-go-tektasker.webm

Features

  • Generate YAML from Go package.
  • Use pure-go code to manipulate params and results.
  • Development Environment for a fast DX.

Installation

See the installation instructions.

Contributing

See CONTRIBUTING.md

Acknowledgements

  • Thanks to @MariaLetta for Free Gophers Pack! ๐Ÿคฉ
  • Thanks to Execore for the music used in the demo ๐ŸŽต
  • Thanks to the Tekton Authors (indeed! ๐Ÿ˜)
  • Thanks to the Kubernetes SIG apimachinery and to kubebuilder for the libraries this project is using ๐Ÿš€

go-tektasker's People

Contributors

raskyld avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

go-tektasker's Issues

cli: tektasker version

Describe the solution you'd like
tektasker version returns the version of the binary.
The version should be baked-in by the linker using the -X ldflag during the build process that should be implemented in #14

generate cli reference in yaml and markdown

Describe the solution you'd like
We should be able to generate documentation for this CLI in Markdown and Yaml using official cobra doc pkg.

This should be invokable in the help subcommand if possible by passing an -o, --output <yaml|md> and this would be used by the official documentation builder to keep up-to-date reference of the CLI.

doc for the project

Is your feature request related to a problem? Please describe.
We should have a simple stupid documentation before we release Tektasker.

Describe the solution you'd like
A simple GitHub page with a docusaurus generated static website.

Better description computation

Summary

Tektasker use GoDoc on marked structures to generate description but because of GoDoc convention of starting the comment
with the name of the type or package documented, this lead to weird description in the generated manifests.

Ideas

  • Exclude the first line or paragraph of package-level comments
  • For types and fields, find the first occurence of the name of the type or field associated with the comment and remove it

Rewrite the repository README.md

Is your feature request related to a problem? Please describe.
Now that the project is really close to release, we should should update the readme.

Describe the solution you'd like
The README.md should makes people easily:

  1. understand the value of Tektasker
  2. get a grasp of the user journey (maybe a short introduction video / GIF would help?)
  3. install and use tektasker
  4. list features
  5. see limitations
  6. go deeper

build: wrong version number when using go install

Describe the bug
If you go install go-tektasker, its version will be left to the default dev version :(

To Reproduce
Steps to reproduce the behavior:

  1. go install github.com/raskyld/go-tektasker@latest
  2. go-tektasker version will return dev

Expected behavior
The go build system seems to be able to get VCS information using the importpath, we should handle this case when users
will go install tektasker and provides them with the tag that was resolved for the build system.

ko.local look up failed no such host

Describe the bug
When running a task generated by Tektasker with KO_DOCKER_REPO=ko.local, the TaskRun fails with
a look-up failure on ko.local, this is because Tekton Pipeline is trying to look-up the registry of the image of the Task when
the command args is left empty in the steps.

To Reproduce
Steps to reproduce the behavior:

  1. Init a project
  2. Use ko.local
  3. task manifest
  4. Ensure there is no command in the step of the Task generated
  5. task apply
  6. Create a TaskRun for the just applied task and observe the failure

Expected behavior
Tektasker try to guess the correct entrypoint and specify the command accordingly to avoid a registry look-up as
described in the Container Contract.

Desktop (please complete the following information):

  • Version unreleased
  • Tekton Pipelines version: v0.52

DX: ease the requirements installation

Is your feature request related to a problem? Please describe.
The Taskfile and the opinionated development environment shipped with go-tektasker requires other tool:

  • ko builder
  • kubectl and a valid context pointing to a cluster with tekton installed
  • task to run the taskfile

This may hurt DX and create an useless barrier to use Tektasker.

Describe the solution you'd like

An installer that SHOULD install task, ko and propose to install Tekton Pipelines to the current Kubernetes
context if the CRDs are not found. It should be easy to maintain and to read so the user isn't
scared to launch it. (more likely a bash script right?)

It should be interactive (asks the user for permission) and use go install for task and ko so we don't have to deal with
arch and OS specificities.

taskfile: check if tekton is installed

Is your feature request related to a problem? Please describe.
If you task apply on a cluster without Tekton installed, this will fail.

Describe the solution you'd like
It may sound stupid but it's likely to happen in a developer environment, imagine you installed a fresh KinD cluster, you may have forgotten to install Tekton, let's make dev life simpler by linking them to the official documentation.

Describe alternatives you've considered
We could also add a new task "installTekton" but we need to maintain it and handle cross-platform (macOS, linux, ...)

Handle custom headers

Summary

As of now, when generating go code, there is no way to customise the headers of the generated code.
This may be a problem for users licensing their code (e.g. wanting to add an apache 2.0 header).

Ideas

  • Use the same technique than the CRD builder of the controller-tools, see there.

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.