Publish our plugin
Now we are going to publish our plugin so that anybody may use it.
Let's open our plugin project once again:
cd ~/pact-plugin-template-golang
Configure Git
You have probably already configured git on your command line.
If not, check the instructions on the GitHub site
Create a fine grained personal access token
head to https://github.com/settings/personal-access-tokens/new
- Give it a name and description (e.g. Pact Plugin tutorial)
- Set expiration to something short (like 7 days)
- Choose "only select repositories" and select your plugin project
- Under "repository permissions" choose read and write for "Contents"
- Choose "generate token" and copy the value
Commit the changes
Add the files and commit the changes:
git add .
git commit -m 'feat: initial foobar plugin'
git push origin master
NOTE: you will need to use your personal access token as the password in this step
To release, we simply need to:
- Bump the
VERSION
in theMakefile
. It's currently set to0.0.1
which is appropriate. - Tag the project
git tag -a v0.0.1 -m "Initial release"
- Push the tag
git push origin v0.0.1
That's it! There is a release.yml
in the github workflows directory that will automatically build and publish the artifact to GitHub.
Check the release step
Head over to your GitHub Actions build page for your repo (https://github.com/YOUR_ORG/pact-foobar-plugin/actions). You should see the release job is running (it should take about 3-4 mins to execute).
Once it's completed, it will create a number of release artifacts that are ready to be downloaded by your users!
In fact, they are prepared in a way that can also be installed through the Plugin CLI. Let's download the CLI and install it that way:
curl -fsSL https://raw.githubusercontent.com/pact-foundation/pact-plugins/main/scripts/install-plugin-cli.sh | bash
Install your plugin, using the CLI, customised to your git repo:
/root/bin/pact-plugin-cli install -y https://github.com/YOUR_ORG/pact-foobar-plugin/releases/tag/v0.0.1
Check if it's installed:
/root/bin/pact-plugin-cli list
You can now head back to your JS tests and try running again to see if it works:
cd ~/example-project-js-foobar-plugin
npm t
...
Verifying a pact between myconsumer and myprovider
an HTTP request to /foobar
Given the Foobar protocol exists
returns a response which
has status code 200 (OK)
includes headers
"content-type" with value "application/foo" (OK)
has a matching body (OK)
WOOT! 🎉