so I have been reading the docs and kind of got a glimpse of what I should do, but no real grasp of how I can do it.
Here is my problem: - I am using semantic release to publish my package to npm - I also have contract testing in place with Pact. - I would like my Pacts published after the release, if successful, with the same version as the new version
How can I do that easily?
I have looked at the docs, and understood that I could use the exec
plugin, however, I find it not clear how I should configure semantic-release to behave exactly the same as now, only exposing the version as, at the very least, an env variable, and couldn't find examples of people doing that.
I could use hooks, but I am concerned that if a npm publish does not happen for some reasons, I would still get my pact published with the next version, which wouldn't exactly exist. Any suggestions here?
It seems I could also write my own JS script (see https://github.com/semantic-release/semantic-release/blob/3cc62f0318ff8917fcdc7cebe890da9dbaa7b3f9/docs/developer-guide/js-api.md) to do this as well as handling the version, but I am not certain what this example does and what it covers regarding the current behaviour.
I guess I could also write my own pact plugin too, but that's even more next level into having to understand how the internals of semantic-release work.
So I am after some examples/experience sharing, and maybe an easy-peasy solution to have that working in less than 30 minutes :)
Thanks
PS: sorry for posting here, but it seems the issues of semantic-release are not really made for support questions.
You can simply use @semantic-release/exec
in an extra publish step that comes after @semantic-release/npm
and @semantic-release/github
:
{
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/npm",
"@semantic-release/github",
["@semantic-release/exec", {
"publishCmd": "publish-pacts ${nextRelease.version}"
}],
]
}
This way the script publish-pacts
will be called with the release version as first parameter for each new release, only when npm and github releases are successful.