Before you begin, read through the Terraform documentation on Extending Terraform and Writing Custom Providers.
Finally, the HashiCorp Provider Design Principles explore the underlying principles for the design choices of this provider.
- Go 1.13+
- Docker - used for running acceptance tests.
- Docker-Compose - used for running acceptance tests.
To work on the provider, you'll need Go installed on
your machine (version 1.13+ is required). You'll also need to correctly set up
a GOPATH, as well as adding
$GOPATH/bin
to your $PATH
.
To compile the provider, run make build
. This will build the provider and
install the provider binary in the $GOPATH/bin
directory.
make build
...
$GOPATH/bin/terraform-provider-auth0
...
In order to test the provider, you can simply run make test
.
make test
In order to run the full suite of Acceptance tests, the following environment variables must be set:
AUTH0_DOMAIN=<your-auth0-tenant-domain>
AUTH0_CLIENT_ID=<your-auth0-client-id>
AUTH0_CLIENT_SECRET=<your-auth0-client-secret>
Then, run make testacc
.
Note: The acceptance tests make calls to a real Auth0 tenant, and create
real resources. Certain tests also require a paid Auth0 subscription to be able to
run successfully, e.g. TestAccCustomDomain
and the ones starting with TestAccLogStream*
.
Note: At the time of writing, the following configuration steps are also required for the test tenant:
- The
Username-Password-Authentication
connection must have Requires Username option enabled for the user tests to successfully run.
To make it easier to document new resources a handy script is available. The script can output documentation of a resource in Markdown format, using the schema of the resource itself.
go run scripts/gendocs.go -resource auth0_action
The Auth0 provider follows the Versioning and Changelog guidelines from HashiCorp.
Prepare for the release by updating the CHANGELOG.
To publish a new version, create a new git tag and push it.
git tag -a vX.Y.Z
git push origin vX.Y.Z
This will trigger the Release GitHub Action which creates a new release.