Remove redundant CI documentation and example checks
This commit is contained in:
@@ -25,16 +25,9 @@ steps:
|
|||||||
commands:
|
commands:
|
||||||
- go build ./...
|
- go build ./...
|
||||||
|
|
||||||
documentation-and-examples:
|
|
||||||
image: golang:1.26
|
|
||||||
depends_on: tests
|
|
||||||
commands:
|
|
||||||
- go test ./internal/doccheck
|
|
||||||
- go test ./internal/config -run '^TestExamplesLoadAndValidate$'
|
|
||||||
|
|
||||||
cross-build:
|
cross-build:
|
||||||
image: golang:1.26
|
image: golang:1.26
|
||||||
depends_on: [race-tests, static-analysis, build, documentation-and-examples]
|
depends_on: [race-tests, static-analysis, build]
|
||||||
commands:
|
commands:
|
||||||
- |
|
- |
|
||||||
set -eu
|
set -eu
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ Maintained development and verification require Go 1.26. Use the official Go
|
|||||||
| Adapters or external tool contracts | [Adapter Internals](internal/adapters.md) and [Integration Contracts](integrations/README.md) | The internal guide owns adapter composition and mechanics; integration documents own external formats and protocols. |
|
| Adapters or external tool contracts | [Adapter Internals](internal/adapters.md) and [Integration Contracts](integrations/README.md) | The internal guide owns adapter composition and mechanics; integration documents own external formats and protocols. |
|
||||||
| Manifests, artifacts, workspace paths, or publish behavior | [Manifest Internals](internal/manifest.md), [Artifact Internals](internal/artifacts.md), [Workspace Internals](internal/workspace.md), [Publish Internals](internal/stage-publish.md), and [Operations](operations.md) | These separate implementation state and resolution from operator-visible layout and lifecycle. |
|
| Manifests, artifacts, workspace paths, or publish behavior | [Manifest Internals](internal/manifest.md), [Artifact Internals](internal/artifacts.md), [Workspace Internals](internal/workspace.md), [Publish Internals](internal/stage-publish.md), and [Operations](operations.md) | These separate implementation state and resolution from operator-visible layout and lifecycle. |
|
||||||
| Maintained configuration or input examples | [Configuration](config.md) and [Examples](../examples/README.md) | The reference owns field meanings; the examples directory owns complete copyable files. |
|
| Maintained configuration or input examples | [Configuration](config.md) and [Examples](../examples/README.md) | The reference owns field meanings; the examples directory owns complete copyable files. |
|
||||||
| Preparing, validating, or publishing a release | [Release Policy](policy/release.md) and [Release Procedure](release.md) | Policy owns requirements and exceptions; the procedure owns concrete validation, guarded publication, and optional later inspection. |
|
| Preparing, validating, or publishing a release | [Release Policy](policy/release.md) and [Release Procedure](release.md) | Policy owns requirements; the procedure owns concrete validation, guarded publication, and optional later inspection. |
|
||||||
| Proposed or unimplemented behavior | `docs/roadmap/` | Future work belongs only in roadmap documentation until implemented. |
|
| Proposed or unimplemented behavior | `docs/roadmap/` | Future work belongs only in roadmap documentation until implemented. |
|
||||||
|
|
||||||
For an existing subsystem, also inspect its focused tests and package-level
|
For an existing subsystem, also inspect its focused tests and package-level
|
||||||
@@ -64,24 +64,25 @@ contracts before changing behavior.
|
|||||||
|
|
||||||
## Validation
|
## Validation
|
||||||
|
|
||||||
Use focused package tests while iterating. Every pull request and push runs the
|
Use focused package tests while iterating. Push and pull-request CI runs these
|
||||||
following repository-wide checks before it can be accepted:
|
repository-wide checks and cross-builds the declared targets:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
go test ./...
|
go test ./...
|
||||||
go test -race ./...
|
go test -race ./...
|
||||||
go vet ./...
|
go vet ./...
|
||||||
go build ./...
|
go build ./...
|
||||||
go test ./internal/doccheck
|
|
||||||
go test ./internal/config -run '^TestExamplesLoadAndValidate$'
|
|
||||||
```
|
```
|
||||||
|
|
||||||
The documentation check verifies local Markdown links and the dependency graph
|
The full suite includes documentation-link and Woodpecker dependency checks
|
||||||
of the Woodpecker workflows. The configuration check loads every maintained
|
and loads maintained pipeline and session examples. For focused diagnosis,
|
||||||
pipeline and session example. Tag CI independently revalidates the tagged source
|
run `go test ./internal/doccheck` or
|
||||||
before asynchronous asset delivery; it is not a second synchronous release
|
`go test ./internal/config -run '^TestExamplesLoadAndValidate$'` directly;
|
||||||
prerequisite. The normal maintainer entry point is the single publication command
|
these are available developer tools, not additional CI steps. Tag CI
|
||||||
in the [Release Procedure](release.md).
|
independently revalidates the tagged source before asynchronous asset delivery;
|
||||||
|
it is not a second synchronous release prerequisite. The normal maintainer
|
||||||
|
entry point is the single publication command in the
|
||||||
|
[Release Procedure](release.md).
|
||||||
|
|
||||||
Woodpecker also runs `go test -race -shuffle=on -count=3 ./...` on its scheduled
|
Woodpecker also runs `go test -race -shuffle=on -count=3 ./...` on its scheduled
|
||||||
job to expose ordering and repeatability defects. Current runners cross-compile
|
job to expose ordering and repeatability defects. Current runners cross-compile
|
||||||
|
|||||||
@@ -310,7 +310,15 @@ unchanged. Adopt metadata only for the actual document revision incorporated.
|
|||||||
|
|
||||||
## Stage 6: Align CI and contributor validation references
|
## Stage 6: Align CI and contributor validation references
|
||||||
|
|
||||||
Status: Pending.
|
Status: Complete (2026-09-28).
|
||||||
|
|
||||||
|
Verification: Removed only the redundant push/PR documentation-and-examples
|
||||||
|
job, with cross-build dependencies repaired. The full suite still exercises
|
||||||
|
both checks, while focused commands remain documented for developer diagnosis.
|
||||||
|
Tag CI, scheduled shuffle/race testing, runner images, build targets, and
|
||||||
|
non-overwrite publication settings remain unchanged. `go test
|
||||||
|
./internal/doccheck ./internal/releasecheck` and `git diff --check` passed;
|
||||||
|
manual review found no CI wait or broad-ref publication path.
|
||||||
|
|
||||||
Read .woodpecker/verify.yml, .woodpecker/release.yml, .woodpecker/shuffle.yml,
|
Read .woodpecker/verify.yml, .woodpecker/release.yml, .woodpecker/shuffle.yml,
|
||||||
the doccheck workflow graph tests, and docs/development.md.
|
the doccheck workflow graph tests, and docs/development.md.
|
||||||
|
|||||||
@@ -49,6 +49,33 @@ func TestWoodpeckerWorkflowDependencies(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestVerifyWorkflowUsesFullSuiteWithoutFocusedDuplicates(t *testing.T) {
|
||||||
|
path := filepath.Join(repositoryRoot(t), ".woodpecker", "verify.yml")
|
||||||
|
data, err := os.ReadFile(path)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
var workflow woodpeckerWorkflow
|
||||||
|
if err := yaml.Unmarshal(data, &workflow); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
tests, ok := workflow.Steps["tests"]
|
||||||
|
if !ok || !containsWorkflowCommand(tests.Commands, "go test ./...") {
|
||||||
|
t.Fatalf("verify workflow lacks the full default suite: %#v", tests)
|
||||||
|
}
|
||||||
|
for name, step := range workflow.Steps {
|
||||||
|
commands := strings.Join(step.Commands, "\n")
|
||||||
|
if strings.Contains(commands, "go test ./internal/doccheck") || strings.Contains(commands, "go test ./internal/config -run") {
|
||||||
|
t.Errorf("verify step %q repeats tests covered by the full suite", name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, dependency := range []string{"race-tests", "static-analysis", "build"} {
|
||||||
|
if !workflowDependsOn(workflow.Steps, "cross-build", dependency, map[string]bool{}) {
|
||||||
|
t.Errorf("cross-build does not depend on %q", dependency)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestReleaseWorkflowRequiresValidation(t *testing.T) {
|
func TestReleaseWorkflowRequiresValidation(t *testing.T) {
|
||||||
root := repositoryRoot(t)
|
root := repositoryRoot(t)
|
||||||
path := filepath.Join(root, ".woodpecker", "release.yml")
|
path := filepath.Join(root, ".woodpecker", "release.yml")
|
||||||
|
|||||||
Reference in New Issue
Block a user