- Go 1.24+
- Pulumi CLI
- Python 3.9+ with uv (for Python SDK work)
# Build and install the provider locally
make install
# Or step by step:
make tfgen # Build the schema generator
make schema # Generate schema.json and bridge-metadata.json
make provider # Build the provider binaryGenerate the Python SDK from the current schema:
make sdk_pythonThis outputs to sdk/python/. To install it locally for testing:
uv pip install -e sdk/python# Fast schema validity test (no credentials needed)
make test_provider
# Full end-to-end integration test (requires credentials)
export DAGSTER_CLOUD_ORGANIZATION="your-org"
export DAGSTER_CLOUD_API_TOKEN="your-token"
make test_examplesThe examples/basic-python/ example can be tested manually with pulumi preview after running make install and uv pip install -e sdk/python.
pulumi-dagsterplus/
├── .github/workflows/
│ ├── ci.yml # Runs on PRs and pushes to main
│ └── release.yml # Triggered by version tags
├── provider/
│ ├── resources.go # Provider configuration and token mapping
│ ├── schema_test.go # Schema validity test
│ └── cmd/
│ ├── pulumi-tfgen-dagsterplus/ # Schema generator binary
│ └── pulumi-resource-dagsterplus/ # Provider runtime binary
├── examples/
│ ├── basic/ # Basic YAML example
│ ├── basic-python/ # Basic Python example
│ └── examples_test.go # Integration tests
├── .goreleaser.yml # Cross-platform release config
└── Makefile
Releases are automated via goreleaser and GitHub Actions. Pushing a version tag triggers the release workflow, which:
- Builds cross-platform provider binaries and publishes them to GitHub Releases
- Generates the Python SDK, builds a wheel, and publishes it to PyPI
git tag v0.1.0
git push origin v0.1.0The PyPI publish step requires a PYPI_TOKEN secret configured in the repository's GitHub Actions settings.
When a new version of the Terraform provider is released:
- Update the version in
go.mod:github.com/dagster-io/terraform-provider-dagsterplus vX.Y.Z - Run
go mod tidy - Run
make installto regenerate the schema and rebuild - Run
make sdk_pythonto regenerate the Python SDK - Run
make test_provider && make test_examplesto verify