mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2026-02-13 21:00:00 +00:00
Merge branch 'origin/main' into 'next-release/main'
This commit is contained in:
31
.cspell.json
31
.cspell.json
@@ -28,9 +28,9 @@
|
||||
"Bluesky",
|
||||
"Boguslawski",
|
||||
"bradrydzewski",
|
||||
"buildkit",
|
||||
"BUILDPLATFORM",
|
||||
"buildx",
|
||||
"buildkit",
|
||||
"caddyfile",
|
||||
"ccmenu",
|
||||
"CERTDIR",
|
||||
@@ -120,10 +120,10 @@
|
||||
"mapstructure",
|
||||
"markdownlint",
|
||||
"mdbook",
|
||||
"Milestoned",
|
||||
"memswap",
|
||||
"Metas",
|
||||
"mhmxs",
|
||||
"Milestoned",
|
||||
"moby",
|
||||
"Msgf",
|
||||
"mstruebing",
|
||||
@@ -209,8 +209,8 @@
|
||||
"unsanitize",
|
||||
"Upsert",
|
||||
"urfave",
|
||||
"useragent",
|
||||
"usecase",
|
||||
"useragent",
|
||||
"varchar",
|
||||
"varz",
|
||||
"Vieter",
|
||||
@@ -239,32 +239,33 @@
|
||||
"zerologger"
|
||||
],
|
||||
"ignorePaths": [
|
||||
"*.excalidraw",
|
||||
"*.svg",
|
||||
"*_test.go",
|
||||
".cspell.json",
|
||||
".git/**/*",
|
||||
".gitignore",
|
||||
".golangci.yaml",
|
||||
".vscode/extensions.json",
|
||||
"*_test.go",
|
||||
"*.excalidraw",
|
||||
"*.svg",
|
||||
"**/*.pb.go",
|
||||
"**/fixtures/**",
|
||||
"**/testdata/**",
|
||||
"CHANGELOG.md",
|
||||
"Makefile",
|
||||
"docs/versioned_docs/",
|
||||
"flake.nix",
|
||||
"go.mod",
|
||||
"**/*.pb.go",
|
||||
"Makefile",
|
||||
"package.json",
|
||||
"server/store/datastore/migration/**/*",
|
||||
"web/components.d.ts",
|
||||
"web/src/assets/locales/**/*",
|
||||
"**/fixtures/**",
|
||||
"**/testdata/**",
|
||||
"docs/versioned_docs/",
|
||||
"package.json",
|
||||
// generated
|
||||
"go.sum",
|
||||
"flake.lock",
|
||||
"pnpm-lock.yaml",
|
||||
"**/mocks/**",
|
||||
"**/node_modules/**/*",
|
||||
"cmd/server/openapi/docs.go",
|
||||
"flake.lock",
|
||||
"go.sum",
|
||||
"pnpm-lock.yaml",
|
||||
"renovate.json",
|
||||
// TODO: remove the following
|
||||
"docs/**/*.js",
|
||||
|
||||
@@ -49,10 +49,10 @@ linters:
|
||||
agent:
|
||||
list-mode: lax
|
||||
files:
|
||||
- '**/agent/**/*.go'
|
||||
- '**/agent/*.go'
|
||||
- '**/cmd/agent/**/*.go'
|
||||
- '**/agent/**/*.go'
|
||||
- '**/cmd/agent/*.go'
|
||||
- '**/cmd/agent/**/*.go'
|
||||
deny:
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/cli
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/cmd/cli
|
||||
@@ -63,70 +63,89 @@ linters:
|
||||
cli:
|
||||
list-mode: lax
|
||||
files:
|
||||
- '**/cli/**/*.go'
|
||||
- '**/cli/*.go'
|
||||
- '**/cmd/cli/**/*.go'
|
||||
- '**/cli/**/*.go'
|
||||
- '**/cmd/cli/*.go'
|
||||
- '**/cmd/cli/**/*.go'
|
||||
deny:
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/agent
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/server
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/cmd/agent
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/cmd/server
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/rpc
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/server
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/web
|
||||
pipeline:
|
||||
list-mode: lax
|
||||
files:
|
||||
- '**/pipeline/**/*.go'
|
||||
- '**/pipeline/*.go'
|
||||
- '!**/cli/pipeline/*.go'
|
||||
- '!**/cli/pipeline/**/*.go'
|
||||
- '!**/server/pipeline/*.go'
|
||||
- '!**/server/pipeline/**/*.go'
|
||||
- '**/pipeline/*.go'
|
||||
- '**/pipeline/**/*.go'
|
||||
deny:
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/agent
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/cli
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/cmd
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/rpc
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/server
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/web
|
||||
server:
|
||||
list-mode: lax
|
||||
files:
|
||||
- '**/server/**/*.go'
|
||||
- '**/server/*.go'
|
||||
- '**/cmd/server/**/*.go'
|
||||
- '**/cmd/server/*.go'
|
||||
- '**/web/**/*.go'
|
||||
- '**/cmd/server/**/*.go'
|
||||
- '**/server/*.go'
|
||||
- '**/server/**/*.go'
|
||||
- '**/web/*.go'
|
||||
- '**/web/**/*.go'
|
||||
deny:
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/agent
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/cli
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/cmd/agent
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/cmd/cli
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/woodpecker-go/woodpecker
|
||||
rpc:
|
||||
list-mode: lax
|
||||
files:
|
||||
- '!**/agent/rpc/*.go'
|
||||
- '!**/agent/rpc/**/*.go'
|
||||
- '!**/server/rpc/*.go'
|
||||
- '!**/server/rpc/**/*.go'
|
||||
- '**/rpc/*.go'
|
||||
- '**/rpc/**/*.go'
|
||||
deny:
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/agent
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/cli
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/cmd
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/server
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/web
|
||||
shared:
|
||||
list-mode: lax
|
||||
files:
|
||||
- '**/shared/**/*.go'
|
||||
- '**/shared/*.go'
|
||||
- '!**/pipeline/shared/*.go'
|
||||
- '!**/pipeline/shared/**/*.go'
|
||||
- '**/shared/*.go'
|
||||
- '**/shared/**/*.go'
|
||||
deny:
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/agent
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/cli
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/cmd
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/pipeline
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/rpc
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/server
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/web
|
||||
woodpecker-go:
|
||||
list-mode: lax
|
||||
files:
|
||||
- '**/woodpecker-go/woodpecker/**/*.go'
|
||||
- '**/woodpecker-go/woodpecker/*.go'
|
||||
- '**/woodpecker-go/woodpecker/**/*.go'
|
||||
deny:
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/agent
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/cli
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/cmd
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/pipeline
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/rpc
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/server
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/shared
|
||||
- pkg: go.woodpecker-ci.org/woodpecker/v3/web
|
||||
|
||||
@@ -5,7 +5,7 @@ filename: mock_{{.InterfaceName}}.go
|
||||
pkgname: mocks
|
||||
recursive: true
|
||||
packages:
|
||||
go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc:
|
||||
go.woodpecker-ci.org/woodpecker/v3/rpc:
|
||||
config:
|
||||
recursive: false
|
||||
go.woodpecker-ci.org/woodpecker/v3/server/forge:
|
||||
|
||||
2
Makefile
2
Makefile
@@ -123,7 +123,7 @@ generate: install-mockery generate-openapi ## Run all code generations
|
||||
CGO_ENABLED=0 go generate ./...
|
||||
|
||||
generate-openapi: ## Run openapi code generation and format it
|
||||
CGO_ENABLED=0 go run github.com/swaggo/swag/cmd/swag fmt --exclude pipeline/rpc/proto
|
||||
CGO_ENABLED=0 go run github.com/swaggo/swag/cmd/swag fmt --exclude rpc/proto
|
||||
CGO_ENABLED=0 go generate cmd/server/openapi.go
|
||||
|
||||
generate-license-header: install-addlicense
|
||||
|
||||
@@ -23,8 +23,8 @@ import (
|
||||
|
||||
"github.com/rs/zerolog/log"
|
||||
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/shared"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc"
|
||||
)
|
||||
|
||||
// LineWriter sends logs to the client.
|
||||
@@ -20,9 +20,9 @@ import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/mock"
|
||||
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/log"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc/mocks"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/agent/log"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc/mocks"
|
||||
)
|
||||
|
||||
func TestLineWriter(t *testing.T) {
|
||||
@@ -20,10 +20,11 @@ import (
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
|
||||
"go.woodpecker-ci.org/woodpecker/v3/agent/log"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline"
|
||||
backend "go.woodpecker-ci.org/woodpecker/v3/pipeline/backend/types"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/log"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc"
|
||||
pipeline_utils "go.woodpecker-ci.org/woodpecker/v3/pipeline/utils"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc"
|
||||
)
|
||||
|
||||
func (r *Runner) createLogger(_logger zerolog.Logger, uploads *sync.WaitGroup, workflow *rpc.Workflow) pipeline.Logger {
|
||||
@@ -44,7 +45,7 @@ func (r *Runner) createLogger(_logger zerolog.Logger, uploads *sync.WaitGroup, w
|
||||
logger.Debug().Msg("log stream opened")
|
||||
|
||||
logStream := log.NewLineWriter(r.client, step.UUID, secrets...)
|
||||
if err := log.CopyLineByLine(logStream, rc, pipeline.MaxLogLineLength); err != nil {
|
||||
if err := pipeline_utils.CopyLineByLine(logStream, rc, pipeline.MaxLogLineLength); err != nil {
|
||||
logger.Error().Err(err).Msg("copy limited logStream part")
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ import (
|
||||
|
||||
"google.golang.org/grpc"
|
||||
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc/proto"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc/proto"
|
||||
)
|
||||
|
||||
const authClientTimeout = time.Second * 5
|
||||
|
||||
@@ -28,8 +28,8 @@ import (
|
||||
grpcproto "google.golang.org/protobuf/proto"
|
||||
|
||||
backend "go.woodpecker-ci.org/woodpecker/v3/pipeline/backend/types"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc/proto"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc/proto"
|
||||
)
|
||||
|
||||
const (
|
||||
|
||||
@@ -27,7 +27,7 @@ import (
|
||||
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline"
|
||||
backend "go.woodpecker-ci.org/woodpecker/v3/pipeline/backend/types"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/shared/constant"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/shared/utils"
|
||||
)
|
||||
|
||||
@@ -24,7 +24,7 @@ import (
|
||||
"github.com/rs/zerolog"
|
||||
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc"
|
||||
)
|
||||
|
||||
func (r *Runner) createTracer(ctxMeta context.Context, uploads *sync.WaitGroup, logger zerolog.Logger, workflow *rpc.Workflow) pipeline.TraceFunc {
|
||||
|
||||
@@ -45,7 +45,7 @@ import (
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/frontend/yaml/compiler"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/frontend/yaml/linter"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/frontend/yaml/matrix"
|
||||
pipelineLog "go.woodpecker-ci.org/woodpecker/v3/pipeline/log"
|
||||
pipeline_utils "go.woodpecker-ci.org/woodpecker/v3/pipeline/utils"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/shared/constant"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/shared/utils"
|
||||
)
|
||||
@@ -350,5 +350,5 @@ func convertPathForWindows(path string) string {
|
||||
|
||||
var defaultLogger = pipeline.Logger(func(step *backend_types.Step, rc io.ReadCloser) error {
|
||||
logWriter := NewLineWriter(step.Name, step.UUID)
|
||||
return pipelineLog.CopyLineByLine(logWriter, rc, pipeline.MaxLogLineLength)
|
||||
return pipeline_utils.CopyLineByLine(logWriter, rc, pipeline.MaxLogLineLength)
|
||||
})
|
||||
|
||||
@@ -43,7 +43,7 @@ import (
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/backend"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/backend/types"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/shared/logger"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/shared/utils"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/version"
|
||||
|
||||
@@ -24,9 +24,9 @@ import (
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/keepalive"
|
||||
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc/proto"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc/proto"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server"
|
||||
woodpeckerGrpcServer "go.woodpecker-ci.org/woodpecker/v3/server/grpc"
|
||||
woodpeckerGrpcServer "go.woodpecker-ci.org/woodpecker/v3/server/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/store"
|
||||
)
|
||||
|
||||
|
||||
@@ -11,38 +11,70 @@
|
||||
| package | meaning | imports |
|
||||
| ------------------ | -------------------------------------------------------------- | ------------------------------------- |
|
||||
| `cmd/**` | parse command-line args & environment to stat server/cli/agent | all other |
|
||||
| `agent/**` | code only agent (remote worker) will need | `pipeline`, `shared` |
|
||||
| `agent/**` | code only agent (remote worker) will need | `pipeline`, `rpc`, `shared` |
|
||||
| `cli/**` | code only cli tool does need | `pipeline`, `shared`, `woodpecker-go` |
|
||||
| `server/**` | code only server will need | `pipeline`, `shared` |
|
||||
| `server/**` | code only server will need | `pipeline`, `rpc`, `shared` |
|
||||
| `pipeline/**` | core ci/cd engine from parsing to execution | `shared` |
|
||||
| `rpc/**` | RPC interface for agent-server communication | `pipeline` |
|
||||
| `shared/**` | code shared for all three main tools (go help utils) | only std and external libs |
|
||||
| `woodpecker-go/**` | go client for server rest api | std |
|
||||
|
||||
### Server
|
||||
|
||||
| package | meaning | imports |
|
||||
| -------------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `server/api/**` | handle web requests from `server/router` | `pipeline`, `../badges`, `../ccmenu`, `../logging`, `../model`, `../pubsub`, `../queue`, `../forge`, `../shared`, `../store`, `shared`, (TODO: mv `server/router/middleware/session`) |
|
||||
| `server/badges/**` | generate svg badges for pipelines | `../model` |
|
||||
| `server/ccmenu/**` | generate xml ccmenu for pipelines | `../model` |
|
||||
| `server/grpc/**` | gRPC server agents can connect to | `pipeline/rpc/**`, `../logging`, `../model`, `../pubsub`, `../queue`, `../forge`, `../pipeline`, `../store` |
|
||||
| `server/logging/**` | logging lib for gPRC server to stream logs while running | std |
|
||||
| `server/model/**` | structs for store (db) and api (json) | std |
|
||||
| `server/plugins/**` | plugins for server | `../model`, `../forge` |
|
||||
| `server/pipeline/**` | orchestrate pipelines | `pipeline`, `../model`, `../pubsub`, `../queue`, `../forge`, `../store`, `../plugins` |
|
||||
| `server/pubsub/**` | pubsub lib for server to push changes to the WebUI | std |
|
||||
| `server/queue/**` | queue lib for server where agents pull new pipelines from via gRPC | `server/model` |
|
||||
| `server/forge/**` | forge lib for server to connect and handle forge specific stuff | `shared`, `server/model` |
|
||||
| `server/router/**` | handle requests to REST API (and all middleware) and serve UI and WebUI config | `shared`, `../api`, `../model`, `../forge`, `../store`, `../web` |
|
||||
| `server/store/**` | handle database | `server/model` |
|
||||
| `server/shared/**` | TODO: move and split [#974](https://github.com/woodpecker-ci/woodpecker/issues/974) | |
|
||||
| `server/web/**` | server SPA | |
|
||||
| package | meaning | imports |
|
||||
| -------------------- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `server/api/**` | handle web requests from `server/router` | `pipeline`, `rpc`, `../badges`, `../ccmenu`, `../logging`, `../model`, `../pubsub`, `../queue`, `../forge`, `../shared`, `../store`, `shared`, (TODO: mv `server/router/middleware/session`) |
|
||||
| `server/badges/**` | generate svg badges for pipelines | `../model` |
|
||||
| `server/ccmenu/**` | generate xml ccmenu for pipelines | `../model` |
|
||||
| `server/rpc/**` | gRPC server agents can connect to | `rpc`, `../logging`, `../model`, `../pubsub`, `../queue`, `../forge`, `../pipeline`, `../store` |
|
||||
| `server/logging/**` | logging lib for gPRC server to stream logs while running | std |
|
||||
| `server/model/**` | structs for store (db) and api (json) | std |
|
||||
| `server/pipeline/**` | orchestrate pipelines (TODO: parts of it should move into /pipeline) | `pipeline`, `../model`, `../pubsub`, `../queue`, `../forge`, `../store`, `../plugins` |
|
||||
| `server/pubsub/**` | pubsub lib for server to push changes to the WebUI | std |
|
||||
| `server/queue/**` | queue lib for server where agents pull new pipelines from via gRPC | `server/model` |
|
||||
| `server/forge/**` | forge lib for server to connect and handle forge specific stuff | `shared`, `server/model` |
|
||||
| `server/router/**` | handle requests to REST API (and all middleware) and serve UI and WebUI config | `shared`, `../api`, `../model`, `../forge`, `../store`, `../web` |
|
||||
| `server/store/**` | handle database | `server/model` |
|
||||
| `server/web/**` | server SPA | |
|
||||
|
||||
- `../` = `server/`
|
||||
|
||||
### Agent
|
||||
|
||||
TODO
|
||||
| package | meaning | imports |
|
||||
| -------------- | ---------------------------------------------------- | ------------------------------------------------------ |
|
||||
| `agent/**` | agent implementation that runs workflows | `pipeline`, `rpc`, `shared` |
|
||||
| `agent/rpc/**` | gRPC client for agent-server communication | `rpc`, `pipeline/backend/types`, std and external libs |
|
||||
| `cmd/agent/**` | CLI interface for starting and configuring the agent | `agent`, std and external libs |
|
||||
|
||||
The agent is a remote worker that connects to the server via gRPC to receive pipeline execution instructions and report back execution state and logs.
|
||||
The agent polls the server's queue for new work, executes pipeline steps using the pipeline engine, and streams results back to the server.
|
||||
|
||||
TODO: Review cmd/agent/core to determine if any logic should be moved into the agent package for better separation of concerns.
|
||||
|
||||
### CLI
|
||||
|
||||
TODO
|
||||
| package | meaning | imports |
|
||||
| ------------------------ | ----------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
|
||||
| `cli/admin/**` | admin commands for server management (users, secrets, registries, etc.) | `../common`, `../internal`, `woodpecker-go` |
|
||||
| `cli/common/**` | shared utilities and helpers used across all CLI subcommands | `../internal/config`, `../update`, `shared` |
|
||||
| `cli/context/**` | manage multiple server contexts (connections to different servers) | `../common`, `../internal/config`, `../output` |
|
||||
| `cli/exec/**` | execute pipelines locally without server orchestration | `pipeline`, `../common`, `../lint`, `shared` |
|
||||
| `cli/info/**` | display information about the current user | `../common`, `../internal` |
|
||||
| `cli/internal/**` | internal utilities for HTTP client, auth, and server communication | `../internal/config`, `woodpecker-go`, `shared` |
|
||||
| `cli/internal/config/**` | configuration file management (load, store, credentials) | std and external libs |
|
||||
| `cli/lint/**` | validate pipeline configuration files | `pipeline/frontend/yaml`, `pipeline/frontend/yaml/linter`, `../common`, `shared` |
|
||||
| `cli/org/**` | manage organization-level resources (secrets, registries) | `../common`, `../internal`, `woodpecker-go` |
|
||||
| `cli/output/**` | formatting utilities for CLI output (tables, etc.) | std and external libs |
|
||||
| `cli/pipeline/**` | manage pipeline operations (start, stop, approve, logs, etc.) | `../common`, `../internal`, `../output`, `woodpecker-go`, `shared` |
|
||||
| `cli/repo/**` | manage repository-level resources (repos, crons, secrets, registries) | `../common`, `../internal`, `../output`, `woodpecker-go` |
|
||||
| `cli/setup/**` | interactive first-time setup wizard for CLI configuration | `../internal/config` |
|
||||
| `cli/update/**` | self-updater for the CLI binary | std and external libs |
|
||||
| `cmd/cli/**` | CLI entry point and command structure | `cli/**` |
|
||||
|
||||
The CLI provides a command-line interface for interacting with Woodpecker servers.
|
||||
Each subcommand is organized into its own package under `cli/<subcommand>/`.
|
||||
|
||||
The `cli/exec` subcommand allows local pipeline execution for testing and development by combining pipeline parsing and execution without requiring a running server or agent.
|
||||
|
||||
- `../` = `cli/`
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package log
|
||||
package utils
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package log_test
|
||||
package utils_test
|
||||
|
||||
import (
|
||||
"io"
|
||||
@@ -23,7 +23,7 @@ import (
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/log"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/utils"
|
||||
)
|
||||
|
||||
type testWriter struct {
|
||||
@@ -61,7 +61,7 @@ func TestCopyLineByLine(t *testing.T) {
|
||||
done := make(chan struct{})
|
||||
|
||||
go func() {
|
||||
err := log.CopyLineByLine(testWriter, r, 1024)
|
||||
err := utils.CopyLineByLine(testWriter, r, 1024)
|
||||
assert.NoError(t, err)
|
||||
close(done)
|
||||
}()
|
||||
@@ -118,7 +118,7 @@ func TestCopyLineByLineSizeLimit(t *testing.T) {
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
err := log.CopyLineByLine(testWriter, r, 4)
|
||||
err := utils.CopyLineByLine(testWriter, r, 4)
|
||||
assert.NoError(t, err)
|
||||
}()
|
||||
|
||||
@@ -161,7 +161,7 @@ func TestStringReader(t *testing.T) {
|
||||
writes: make([]string, 0),
|
||||
}
|
||||
|
||||
err := log.CopyLineByLine(testWriter, r, 1024)
|
||||
err := utils.CopyLineByLine(testWriter, r, 1024)
|
||||
assert.NoError(t, err)
|
||||
|
||||
writes := testWriter.GetWrites()
|
||||
@@ -179,7 +179,7 @@ func TestCopyLineByLineNewlineCharacter(t *testing.T) {
|
||||
done := make(chan struct{})
|
||||
|
||||
go func() {
|
||||
err := log.CopyLineByLine(testWriter, r, 4)
|
||||
err := utils.CopyLineByLine(testWriter, r, 4)
|
||||
assert.NoError(t, err)
|
||||
close(done)
|
||||
}()
|
||||
@@ -243,7 +243,7 @@ func TestCopyLineByLineLongLine(t *testing.T) {
|
||||
maxSize := 10
|
||||
|
||||
go func() {
|
||||
err := log.CopyLineByLine(testWriter, r, maxSize)
|
||||
err := utils.CopyLineByLine(testWriter, r, maxSize)
|
||||
assert.NoError(t, err)
|
||||
close(done)
|
||||
}()
|
||||
@@ -296,7 +296,7 @@ func TestCopyLineByLineWriteChunks(t *testing.T) {
|
||||
maxSize := 8
|
||||
|
||||
go func() {
|
||||
err := log.CopyLineByLine(testWriter, r, maxSize)
|
||||
err := utils.CopyLineByLine(testWriter, r, maxSize)
|
||||
assert.NoError(t, err)
|
||||
close(done)
|
||||
}()
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
"context"
|
||||
|
||||
mock "github.com/stretchr/testify/mock"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc"
|
||||
)
|
||||
|
||||
// NewMockPeer creates a new instance of MockPeer. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
|
||||
@@ -1238,7 +1238,7 @@ const file_woodpecker_proto_rawDesc = "" +
|
||||
"\x0fUnregisterAgent\x12\f.proto.Empty\x1a\f.proto.Empty\"\x00\x12:\n" +
|
||||
"\fReportHealth\x12\x1a.proto.ReportHealthRequest\x1a\f.proto.Empty\"\x002C\n" +
|
||||
"\x0eWoodpeckerAuth\x121\n" +
|
||||
"\x04Auth\x12\x12.proto.AuthRequest\x1a\x13.proto.AuthResponse\"\x00B7Z5go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc/protob\x06proto3"
|
||||
"\x04Auth\x12\x12.proto.AuthRequest\x1a\x13.proto.AuthResponse\"\x00B.Z,go.woodpecker-ci.org/woodpecker/v3/rpc/protob\x06proto3"
|
||||
|
||||
var (
|
||||
file_woodpecker_proto_rawDescOnce sync.Once
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
option go_package = "go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc/proto";
|
||||
option go_package = "go.woodpecker-ci.org/woodpecker/v3/rpc/proto";
|
||||
package proto;
|
||||
|
||||
// !IMPORTANT!
|
||||
@@ -20,7 +20,7 @@ import (
|
||||
"fmt"
|
||||
"maps"
|
||||
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/model"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/pipeline/stepbuilder"
|
||||
|
||||
@@ -17,7 +17,7 @@ package pipeline
|
||||
|
||||
import (
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/model"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/store"
|
||||
)
|
||||
|
||||
@@ -22,7 +22,7 @@ import (
|
||||
"github.com/stretchr/testify/mock"
|
||||
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/model"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/store"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/store/mocks"
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
package pipeline
|
||||
|
||||
import (
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/model"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/store"
|
||||
)
|
||||
|
||||
@@ -21,7 +21,7 @@ import (
|
||||
|
||||
"github.com/rs/zerolog/log"
|
||||
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc/proto"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc/proto"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/model"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/store"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/store/types"
|
||||
@@ -19,7 +19,7 @@ import (
|
||||
"strings"
|
||||
|
||||
pipelineConsts "go.woodpecker-ci.org/woodpecker/v3/pipeline"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/model"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/queue"
|
||||
)
|
||||
@@ -19,7 +19,7 @@ import (
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/model"
|
||||
)
|
||||
|
||||
@@ -29,7 +29,7 @@ import (
|
||||
"github.com/rs/zerolog/log"
|
||||
grpcMetadata "google.golang.org/grpc/metadata"
|
||||
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/forge"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/logging"
|
||||
@@ -23,7 +23,7 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
"google.golang.org/grpc/metadata"
|
||||
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/model"
|
||||
store_mocks "go.woodpecker-ci.org/woodpecker/v3/server/store/mocks"
|
||||
)
|
||||
@@ -22,8 +22,8 @@ import (
|
||||
prometheus_auto "github.com/prometheus/client_golang/prometheus/promauto"
|
||||
"github.com/rs/zerolog/log"
|
||||
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc/proto"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/rpc/proto"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/logging"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/pubsub"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/queue"
|
||||
Reference in New Issue
Block a user