Open cweagans opened 3 months ago
Sorry for the much delayed response.
If my-job:123 is in the output for a given job, my-job is a real job, and 123 is a valid run number for my-job, Laminar could simply turn it into a link to that job run in the job output page.
laminar already does something like this. If you launch laminarc run
from within laminar, it detects this and emits additional control characters, which the UI converts into links. Does this not work for you?
If # Some heading is in the output, format "Some heading" in a more prominent way in the job output page. This isn't strictly necessary, since I can just as easily echo; echo "====== [SOME HEADING] ======"; echo; or something along those lines
I'm not too keen on this idea as it stands, since it appears to modify the actual text of the console output. I'd be more receptive to a feature that styles the UI in a way that is not representable in terminal output. But that aside, would using a custom wrapper around laminarc run
resolve this?
Add a new subcommand to laminarc: laminarc wait my-job:123. This would allow me to have pipeline stages where multiple jobs are running in parallel:
Needs some bash-foo, but an existing way to do this based on your script is
echo "# Build"
exec 3< <(laminarc run build-linux)
read <&3 linuxBuild
exec 4< <(laminarc run build-mac)
read <&4 macBuild
exec 5< <(laminarc run build-windows)
read <&5 windowsBuild
echo "Cross-platform builds in progress:"
echo $linuxBuild
echo $macBuild
echo $windowsBuild
wait
echo "# Release"
echo "Release jobs:"
exec 3< <(laminarc run release-linux buildJob=$linuxBuild)
read <&3 linuxRelease
exec 4< <(laminarc run release-mac buildJob=$macBuild)
read <&4 macRelease
exec 5< <(laminarc run release-windows buildJob=$windowsBuild)
read <&5 windowsRelease
echo "Release jobs in progress:"
echo $linuxRelease
echo $macRelease
echo $windowsRelease
wait
We use Jenkins extensively in our infrastructure. One concept in particular has been very useful to us, which is the ability to compose a Pipeline out of multiple jobs. When we run one of these Pipelines (composed of different Stages), we get some output that looks like this: (two different job names covered by red and orange boxes)
In that screenshot at location 1 is the name of the Stage of the pipeline. At location 2, there's a link to the specific job that was started by this pipeline at this step.
In Laminar, this is somewhat easily represented with a job that just does something like this:
I don't think Laminar should have all of the fancy pipeline modeling that Jenkins has, but I do think that with a couple of small features, it'd be easy to compose pipelines in a more laminar-y way.
my-job:123
is in the output for a given job,my-job
is a real job, and123
is a valid run number formy-job
, Laminar could simply turn it into a link to that job run in the job output page.# Some heading
is in the output, format "Some heading" in a more prominent way in the job output page. This isn't strictly necessary, since I can just as easilyecho; echo "====== [SOME HEADING] ======"; echo;
or something along those linesAdd a new subcommand to
laminarc
:laminarc wait my-job:123
. This would allow me to have pipeline stages where multiple jobs are running in parallel:The output for that might look something like this:
(+ all of the
jobname:123
outputs would be HTML links to their respective job/run pages)If there's some other syntactic sugar that you'd prefer, that's ok too. I was mainly considering ease of implementation. Another option would be something like: