This actually helped a lot with the simpler workflows, didn't realise the matrix options can be 'any' defined string
Although for the more complicated ones when I need multiple steps after a 'setup' action (above) anchors would really help
This isn't quite hte same though, as it would result in a single job.
I want our users to see (without looking through logs) which part of the process failed, and multiple jobs are great for that.
Oh boy. I just made a pretty yaml file just to find out that anchors are not supported. Is there a technical reason why not? What Yaml parser cannot handle this?
I have 2 sets of jobs in my workflow that have exactly same steps save for the last few (2 test jobs and 2 deploy jobs). So now I have to copy-paste like 100+ lines of code for no good reason. And then I'll have to be extra vigilant about making sure that I don't forget to update same code in two different places.
GitHub simply do not follow the YAML spec, otherwise there would be support for anchors as every parser that follows the spec.
Since we cannot rely on the spec to use actions, they might as well call it a fork and publish their own specification. Sadly it is not a superset like GFM
While Github figures out how to parse YAML files I'm doing a workaround:
- Step 1: Write Yaml file with anchors so steps can be reused
- Step 2: Have a script emit unrolled YAML file that Github can parse
#!/usr/bin/env ruby require "yaml" require "json" yaml = YAML.load_file(File.expand_path("workflow_template.yml", __dir__)) File.write(File.expand_path("workflows/cicd.yml", __dir__), YAML.load(yaml.to_json).to_yaml(line_width: 1024)) puts "Workflow emitted!"