goreleaser-action
goreleaser-action copied to clipboard
YAML parse error when .goreleaser.yml contains anchor
Reproduction of the issue: https://github.com/at-wat/goreleaser-repro-action-anchor/pull/1
When .goreleaser.yml
contains YAML anchor like,
&shared:
build: &build_base
env:
- CGO_ENABLED=0
project_name: test
builds:
- <<: *build_base
goreleaser/goreleaser-action
fails with an error:
...
• release succeeded after 14s
Error: end of the stream or a document separator is expected (6:1)
3 | env:
4 | - CGO_ENABLED=0
5 |
6 | project_name: test
-----^
7 | builds:
8 | - <<: *build_base
GoReleaser does support YAML anchor, but goreleaser-action
seems parsing .goreleaser.yml
by different yaml library which doesn't support anchor.
Workaround
Use goreleaser-action
with install-only: true
option, and run goreleaser
command in different step.
- name: Install GoReleaser
uses: goreleaser/goreleaser-action@v4
with:
version: latest
install-only: true
- name: Run GoReleaser
run: goreleaser release
hmmm, likely
export async function getDistPath(yamlfile: string): Promise<string> {
@crazy-max we are already using the latest js-yaml, should we try to switch to another lib?
Argh yeah this is one of the caveats when using this lib: https://github.com/nodeca/js-yaml#caveats
Will take a look.
Looks like we could switch to https://eemeli.org/yaml/#parsing-yaml