Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions .github/ISSUE_TEMPLATE/module.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Module completion
description: Track a TableauSharp module from API design through prerelease readiness.
title: "module: Complete <module name> SDK surface"
labels: ["enhancement"]
body:
- type: input
id: module
attributes:
label: Module
description: The SDK module or service area this issue tracks.
placeholder: Workbooks and Views
validations:
required: true
- type: textarea
id: scope
attributes:
label: Scope
description: Public API, Tableau REST endpoints, models, and examples included in this module.
placeholder: |
- List workbooks
- Get workbook by ID
- Publish workbook
validations:
required: true
- type: checkboxes
id: completion-gate
attributes:
label: Completion gate
description: Complete these items before publishing a prerelease for this module.
options:
- label: Public API reviewed for naming, cancellation tokens, async behavior, and Tableau REST parity.
- label: Request and response models document required, optional, and nullable fields.
- label: Unit tests cover request construction, response parsing, auth headers, validation, and error paths.
- label: Integration tests exist for at least one happy-path Tableau call and are skipped unless credentials are configured.
- label: Examples project includes a runnable sample for the module.
- label: README or docs include minimal usage for the module.
- label: CI passes restore, build, test, and pack.
- label: Publish workflow dry run succeeds for the target prerelease version.
- type: textarea
id: notes
attributes:
label: Notes
description: Known gaps, Tableau version assumptions, or release risks.
20 changes: 20 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
## Summary

-

## Module Completion Gate

- [ ] Public API reviewed for naming, cancellation tokens, async behavior, and Tableau REST parity.
- [ ] Request and response models document required, optional, and nullable fields.
- [ ] Unit tests cover request construction, response parsing, auth headers, validation, and error paths.
- [ ] Integration tests exist for at least one happy-path Tableau call and are skipped unless credentials are configured.
- [ ] Examples project includes a runnable sample for the module.
- [ ] README or docs include minimal usage for the module.
- [ ] CI passes restore, build, test, and pack.
- [ ] Publish workflow dry run succeeds for the target prerelease version.

For non-module PRs, mark unrelated items as `N/A` and keep the verification section concrete.

## Verification

-
10 changes: 10 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ on:
branches: [master]
pull_request:
branches: [master]
workflow_dispatch:
inputs:
module:
description: 'Module being validated, for example Workbooks and Views'
required: false
type: string

jobs:
build-and-test:
Expand All @@ -20,6 +26,10 @@ jobs:
with:
dotnet-version: '8.0.x'

- name: Module gate context
if: ${{ github.event_name == 'workflow_dispatch' && inputs.module != '' }}
run: echo "Validating module gate for ${{ inputs.module }}"

- name: Restore
run: dotnet restore TableauSharp.sln

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ For now, clone the repository:
git clone https://github.com/teesofttech/TableauSharp.git
```

Maintainers can publish prerelease packages from GitHub Actions. See [Release Process](docs/release.md).
Maintainers can publish prerelease packages from GitHub Actions after the [Module Completion Gate](docs/module-completion.md) is met. See [Release Process](docs/release.md).

---

Expand Down
41 changes: 41 additions & 0 deletions docs/module-completion.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Module Completion Gate

Use this gate before publishing a prerelease for a completed TableauSharp module and moving to the next module.

## Required Before Prerelease

- Public API reviewed for naming, cancellation tokens, async behavior, and Tableau REST parity.
- Request and response models identify required, optional, and nullable fields.
- Unit tests cover request construction, response parsing, auth headers, validation, and error paths.
- Integration tests cover at least one happy-path real Tableau call when credentials are configured.
- Examples project includes a runnable sample for the module.
- README or docs include minimal usage for the module.
- CI passes restore, build, test, and pack.
- Publish workflow dry run succeeds for the target prerelease version.

## Integration Test Policy

Integration tests are required for module completeness, but they must be opt-in. They should skip automatically unless real Tableau credentials are configured in the environment.

Do not block ordinary pull requests or community contributions on unavailable Tableau credentials. Before a module prerelease, maintainers should run the integration tests in an environment that has credentials and record the result in the PR or release notes.

## CI Gate

Every PR runs the standard CI gate:

```bash
dotnet restore TableauSharp.sln
dotnet build TableauSharp.sln --no-restore -c Release
dotnet test TableauSharp.sln --no-build -c Release
dotnet pack src/TableauSharp/TableauSharp.csproj --no-build -c Release -p:ContinuousIntegrationBuild=true
```

Maintainers can also run the CI workflow manually and provide the module name to make the validation run visible in GitHub Actions.

## Publishing Sequence

1. Complete the module issue checklist.
2. Merge the module PR after CI passes.
3. Run the **Publish to NuGet** workflow as a dry run for the prerelease version.
4. Publish from a version tag or run the workflow with `dry_run` set to `false`.
5. Move to the next module issue.
1 change: 1 addition & 0 deletions docs/release.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ TableauSharp publishes prerelease NuGet packages from GitHub Actions.

- `NUGET_API_KEY` repository secret with permission to push `TableauSharp`.
- Passing CI on `master`.
- Completed [Module Completion Gate](module-completion.md) for the module being released.
- A prerelease version, for example `0.1.0-alpha.1`.

## Validate Locally
Expand Down
Loading