task icon indicating copy to clipboard operation
task copied to clipboard

New Feature: A Compromise Solution For Reusing common Taskfiles In Different Projects

Open hhstore opened this issue 3 years ago • 2 comments
trafficstars

Background:

  • There are many issues being discussed about reusing common Taskfiles.
  • It can be seen that this demand is very strong.
  • Given that the remote include solution doesn't work. I think of a compromise solution.

A Compromise Solution:

like this:


includes:
  sre:
    taskfile:  "https://github.com/better-sre/config"
    type: git+local         # or git+global
    dir: ./.task/xxx        # or ~/.local/.task/xxx
    sync: auto              # sync github: daily check

  • When include contains type option is git.
  • It will automatically check if the .task/ (or ~/.local/.task/) path has the same name path.
  • If it exists, use the local path directly.
  • If not, automatically git clone to .task/ ( or ~/.local/.task/) path.
  • In addition, task adds a new command. task sync, which automatically detects the include section of Taskfile.yml and synchronizes updates manually.

# automatically detects the include section of `Taskfile.yml` and synchronizes updates `manually`.
task sync
  • This solution is still based on the local path. There is no difficulty in implementation.
  • But it solves the problem of convenience.

Reference:

My current solution:

  • https://github.com/better-sre/config#usage
    • This repo can also be used as an example directory structure, my Taskfile here is multi-level nested.
  • About reusing Taskfile in different projects. Here, I gave 3 feasible solutions.
  • This is my current practice of reusing public Taskfiles. It can solve the problem, but it is not convenient enough.
  • I'm wondering if go-task can support option 2 or option 3.
image

Similar issues:

  • https://github.com/go-task/task/issues/98
  • https://github.com/go-task/task/issues/380
  • https://github.com/go-task/task/issues/556
  • https://github.com/go-task/task/issues/670
  • https://github.com/go-task/task/issues/380
  • These are all discussing the same requirement.

A collection of taskfiles:

  • https://github.com/better-sre/awesome-taskfile

hhstore avatar Jun 12 '22 01:06 hhstore

This is definitely needed, I'm currently storing my included taskfiles in a submodule, and it's a constant pain to keep updating the submodule reference. Fetching it using git or the public APIs for Gitlab/Github would alleviate this issue pretty much completely, especially if it would be possible to use git references like branches, tags or commits to choose what to track.

tommyalatalo avatar Aug 25 '22 16:08 tommyalatalo

Was researching this tool and was looking for a feature like this in the docs. This feature would def make it a strong case to use it over Makefiles.

ryancurrah avatar Aug 31 '22 12:08 ryancurrah

Any idea if this might be feasible in the near future? This feature would be very helpful.

dark06 avatar Mar 01 '23 12:03 dark06

+1

lorenzofaresin avatar Apr 18 '23 15:04 lorenzofaresin

I recommend checking out how kustomize handles it: https://github.com/kubernetes-sigs/kustomize/blob/master/examples/remoteBuild.md

shadiramadan avatar May 04 '23 20:05 shadiramadan

Hi All! Thanks to everyone for upvoting this issue. It's been the most upvoted issue for quite a while, so I'm happy to say that we're now actively working on an experiment for this!

As a result, I'm going to close this issue. You can follow the progress over in the new Remote Taskfiles experiment issue (#1317).

pd93 avatar Aug 29 '23 11:08 pd93