gitextract_g04cg062/ ├── .cspell.json ├── .ecrc ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yaml │ │ ├── config.yml │ │ └── feature_request.yaml │ ├── pull_request_template.md │ ├── release_template.md │ └── renovate.json ├── .gitignore ├── .gitpod.yml ├── .golangci.yaml ├── .hadolint.yaml ├── .lycheeignore ├── .markdownlint.yaml ├── .mockery.yaml ├── .pre-commit-config.yaml ├── .prettierignore ├── .prettierrc.json ├── .vscode/ │ ├── extensions.json │ ├── launch.json │ └── settings.json ├── .woodpecker/ │ ├── binaries.yaml │ ├── check-feature-docs.sh │ ├── docker.yaml │ ├── docs.yaml │ ├── links.yaml │ ├── release-helper.yaml │ ├── securityscan.yaml │ ├── social.yaml │ ├── static.yaml │ ├── test.yaml │ └── web.yaml ├── .yamllint.yaml ├── CHANGELOG.md ├── LICENSE ├── Makefile ├── README.md ├── agent/ │ ├── log/ │ │ ├── line_writer.go │ │ └── line_writer_test.go │ ├── logger.go │ ├── rpc/ │ │ ├── auth_client_grpc.go │ │ ├── auth_client_grpc_test.go │ │ ├── auth_interceptor.go │ │ └── client_grpc.go │ ├── runner.go │ ├── state.go │ └── tracer.go ├── checkmake.ini ├── cli/ │ ├── README.md │ ├── admin/ │ │ ├── admin.go │ │ ├── loglevel/ │ │ │ └── loglevel.go │ │ ├── org/ │ │ │ └── org_list.go │ │ ├── registry/ │ │ │ ├── registry.go │ │ │ ├── registry_add.go │ │ │ ├── registry_list.go │ │ │ ├── registry_rm.go │ │ │ ├── registry_set.go │ │ │ └── registry_show.go │ │ ├── secret/ │ │ │ ├── secret.go │ │ │ ├── secret_add.go │ │ │ ├── secret_list.go │ │ │ ├── secret_rm.go │ │ │ ├── secret_set.go │ │ │ └── secret_show.go │ │ └── user/ │ │ ├── user.go │ │ ├── user_add.go │ │ ├── user_list.go │ │ ├── user_rm.go │ │ └── user_show.go │ ├── common/ │ │ ├── flags.go │ │ ├── hooks.go │ │ ├── pipeline.go │ │ └── zerologger.go │ ├── context/ │ │ └── context.go │ ├── exec/ │ │ ├── dummy.go │ │ ├── exec.go │ │ ├── flags.go │ │ ├── line.go │ │ ├── metadata.go │ │ └── metadata_test.go │ ├── info/ │ │ └── info.go │ ├── internal/ │ │ ├── config/ │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ ├── context.go │ │ │ └── context_test.go │ │ ├── util.go │ │ └── util_test.go │ ├── lint/ │ │ ├── lint.go │ │ └── utils.go │ ├── org/ │ │ ├── org.go │ │ ├── registry/ │ │ │ ├── registry.go │ │ │ ├── registry_add.go │ │ │ ├── registry_list.go │ │ │ ├── registry_rm.go │ │ │ ├── registry_set.go │ │ │ └── registry_show.go │ │ └── secret/ │ │ ├── secret.go │ │ ├── secret_add.go │ │ ├── secret_list.go │ │ ├── secret_rm.go │ │ ├── secret_set.go │ │ └── secret_show.go │ ├── output/ │ │ ├── output.go │ │ ├── output_test.go │ │ ├── table.go │ │ └── table_test.go │ ├── pipeline/ │ │ ├── approve.go │ │ ├── create.go │ │ ├── decline.go │ │ ├── deploy/ │ │ │ └── deploy.go │ │ ├── kill.go │ │ ├── last.go │ │ ├── list.go │ │ ├── list_test.go │ │ ├── log/ │ │ │ ├── log.go │ │ │ ├── log_purge.go │ │ │ └── log_show.go │ │ ├── pipeline.go │ │ ├── pipeline_test.go │ │ ├── ps.go │ │ ├── purge.go │ │ ├── purge_test.go │ │ ├── queue.go │ │ ├── show.go │ │ ├── start.go │ │ └── stop.go │ ├── repo/ │ │ ├── cron/ │ │ │ ├── cron.go │ │ │ ├── cron_add.go │ │ │ ├── cron_list.go │ │ │ ├── cron_rm.go │ │ │ ├── cron_show.go │ │ │ └── cron_update.go │ │ ├── registry/ │ │ │ ├── registry.go │ │ │ ├── registry_add.go │ │ │ ├── registry_list.go │ │ │ ├── registry_rm.go │ │ │ ├── registry_set.go │ │ │ └── registry_show.go │ │ ├── repo.go │ │ ├── repo_add.go │ │ ├── repo_chown.go │ │ ├── repo_list.go │ │ ├── repo_repair.go │ │ ├── repo_rm.go │ │ ├── repo_show.go │ │ ├── repo_show_test.go │ │ ├── repo_sync.go │ │ ├── repo_test.go │ │ ├── repo_update.go │ │ └── secret/ │ │ ├── secret.go │ │ ├── secret_add.go │ │ ├── secret_list.go │ │ ├── secret_rm.go │ │ ├── secret_set.go │ │ └── secret_show.go │ ├── setup/ │ │ ├── setup.go │ │ ├── token_fetcher.go │ │ └── ui/ │ │ ├── ask.go │ │ └── confirm.go │ └── update/ │ ├── command.go │ ├── tar.go │ ├── types.go │ ├── updater.go │ └── updater_test.go ├── cmd/ │ ├── agent/ │ │ ├── core/ │ │ │ ├── agent.go │ │ │ ├── agent_test.go │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ ├── flags.go │ │ │ ├── health.go │ │ │ ├── health_test.go │ │ │ └── run.go │ │ ├── dummy.go │ │ ├── main.go │ │ └── man.go │ ├── cli/ │ │ ├── app.go │ │ ├── docs.go │ │ ├── main.go │ │ └── man.go │ └── server/ │ ├── app.go │ ├── flags.go │ ├── grpc_server.go │ ├── health.go │ ├── main.go │ ├── man.go │ ├── metrics_server.go │ ├── openapi/ │ │ └── docs.go │ ├── openapi.go │ ├── openapi_json_gen.go │ ├── openapi_test.go │ ├── server.go │ └── setup.go ├── codecov.yaml ├── contrib/ │ └── woodpecker-test-repo/ │ └── .woodpecker/ │ ├── demo.yaml │ └── test.yaml ├── docker/ │ ├── Dockerfile.agent.alpine.multiarch │ ├── Dockerfile.agent.multiarch │ ├── Dockerfile.cli.alpine.multiarch.rootless │ ├── Dockerfile.cli.multiarch.rootless │ ├── Dockerfile.make │ ├── Dockerfile.server.alpine.multiarch.rootless │ └── Dockerfile.server.multiarch.rootless ├── docker-compose.example.yaml ├── docker-compose.gitpod.yaml ├── docs/ │ ├── .gitignore │ ├── .prettierignore │ ├── .prettierrc.js │ ├── LICENSE │ ├── README.md │ ├── blog/ │ │ ├── 2023-06-11-hello-blog/ │ │ │ └── index.md │ │ ├── 2023-07-28-release-v1.0.0/ │ │ │ └── index.md │ │ ├── 2023-11-09-release-v2.0.0/ │ │ │ └── index.md │ │ ├── 2023-12-12-podman-image-builds/ │ │ │ └── index.md │ │ ├── 2023-12-13-debug-pipeline-steps/ │ │ │ └── index.md │ │ ├── 2023-12-15-podman-sigstore/ │ │ │ └── index.md │ │ ├── 2024-01-01-continuous-deployment/ │ │ │ └── index.md │ │ ├── 2024-05-27-release-v2.5.0/ │ │ │ └── index.md │ │ └── 2024-12-28-release-v3.0.0/ │ │ └── index.md │ ├── docs/ │ │ ├── 10-intro/ │ │ │ └── index.md │ │ ├── 20-usage/ │ │ │ ├── 10-intro.md │ │ │ ├── 100-troubleshooting.md │ │ │ ├── 15-terminology/ │ │ │ │ ├── architecture.excalidraw │ │ │ │ ├── index.md │ │ │ │ └── pipeline-workflow-step.excalidraw │ │ │ ├── 20-workflow-syntax.md │ │ │ ├── 25-workflows.md │ │ │ ├── 30-matrix-workflows.md │ │ │ ├── 40-secrets.md │ │ │ ├── 41-registries.md │ │ │ ├── 45-cron.md │ │ │ ├── 50-environment.md │ │ │ ├── 51-plugins/ │ │ │ │ ├── 20-creating-plugins.md │ │ │ │ ├── 51-overview.md │ │ │ │ └── _category_.yaml │ │ │ ├── 60-services.md │ │ │ ├── 70-volumes.md │ │ │ ├── 72-extensions/ │ │ │ │ ├── 40-configuration-extension.md │ │ │ │ ├── 50-registry-extension.md │ │ │ │ ├── 55-secret-extension.md │ │ │ │ ├── _category_.yaml │ │ │ │ └── index.md │ │ │ ├── 72-linter.md │ │ │ ├── 75-project-settings.md │ │ │ ├── 80-badges.md │ │ │ ├── 90-advanced-usage.md │ │ │ └── _category_.yaml │ │ ├── 30-administration/ │ │ │ ├── 00-general.md │ │ │ ├── 05-installation/ │ │ │ │ ├── 10-docker-compose.md │ │ │ │ ├── 20-helm-chart.md │ │ │ │ ├── 30-packages.md │ │ │ │ └── _category_.yaml │ │ │ ├── 10-configuration/ │ │ │ │ ├── 10-server.md │ │ │ │ ├── 100-addons.md │ │ │ │ ├── 11-backends/ │ │ │ │ │ ├── 10-docker.md │ │ │ │ │ ├── 20-kubernetes.md │ │ │ │ │ ├── 30-local.md │ │ │ │ │ ├── 50-custom.md │ │ │ │ │ └── _category_.yaml │ │ │ │ ├── 12-forges/ │ │ │ │ │ ├── 11-overview.md │ │ │ │ │ ├── 20-github.md │ │ │ │ │ ├── 30-gitea.md │ │ │ │ │ ├── 35-forgejo.md │ │ │ │ │ ├── 40-gitlab.md │ │ │ │ │ ├── 50-bitbucket.md │ │ │ │ │ ├── 60-bitbucket_datacenter.md │ │ │ │ │ └── _category_.yaml │ │ │ │ ├── 30-agent.md │ │ │ │ ├── 40-autoscaler.md │ │ │ │ └── _category_.yaml │ │ │ └── _category_.yaml │ │ └── 92-development/ │ │ ├── 01-getting-started.md │ │ ├── 02-core-ideas.md │ │ ├── 03-ui.md │ │ ├── 04-docs.md │ │ ├── 05-architecture.md │ │ ├── 06-conventions.md │ │ ├── 07-guides.md │ │ ├── 08-translations.md │ │ ├── 09-openapi.md │ │ ├── 09-testing.md │ │ ├── 10-packaging.md │ │ ├── 100-addons.md │ │ ├── 40-deprecations.md │ │ ├── _category_.yaml │ │ └── woodpecker-architecture.dot │ ├── docusaurus.config.ts │ ├── package.json │ ├── plugins/ │ │ └── woodpecker-plugins/ │ │ ├── .gitignore │ │ ├── package.json │ │ ├── plugins.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── markdown.ts │ │ │ ├── theme/ │ │ │ │ ├── Icons.tsx │ │ │ │ ├── WoodpeckerPlugin.tsx │ │ │ │ ├── WoodpeckerPluginList.tsx │ │ │ │ └── style.css │ │ │ └── types.ts │ │ ├── tsconfig.json │ │ └── tsconfig.jsx.json │ ├── pnpm-workspace.yaml │ ├── sidebars.js │ ├── src/ │ │ ├── components/ │ │ │ ├── HomepageFeatures.js │ │ │ └── HomepageFeatures.module.css │ │ ├── css/ │ │ │ └── custom.css │ │ └── pages/ │ │ ├── about.md │ │ ├── awesome.md │ │ ├── index.module.css │ │ ├── index.tsx │ │ ├── migrations.md │ │ └── versions.md │ ├── tsconfig.json │ ├── versioned_docs/ │ │ ├── version-2.8/ │ │ │ ├── 10-intro/ │ │ │ │ └── index.md │ │ │ ├── 20-usage/ │ │ │ │ ├── 10-intro.md │ │ │ │ ├── 100-troubleshooting.md │ │ │ │ ├── 15-terminology/ │ │ │ │ │ ├── architecture.excalidraw │ │ │ │ │ ├── index.md │ │ │ │ │ └── pipeline-workflow-step.excalidraw │ │ │ │ ├── 20-workflow-syntax.md │ │ │ │ ├── 25-workflows.md │ │ │ │ ├── 30-matrix-workflows.md │ │ │ │ ├── 40-secrets.md │ │ │ │ ├── 41-registries.md │ │ │ │ ├── 45-cron.md │ │ │ │ ├── 50-environment.md │ │ │ │ ├── 51-plugins/ │ │ │ │ │ ├── 20-creating-plugins.md │ │ │ │ │ ├── 51-overview.md │ │ │ │ │ └── _category_.yaml │ │ │ │ ├── 60-services.md │ │ │ │ ├── 70-volumes.md │ │ │ │ ├── 72-linter.md │ │ │ │ ├── 75-project-settings.md │ │ │ │ ├── 80-badges.md │ │ │ │ ├── 90-advanced-usage.md │ │ │ │ └── _category_.yaml │ │ │ ├── 30-administration/ │ │ │ │ ├── 00-getting-started.md │ │ │ │ ├── 05-deployment-methods/ │ │ │ │ │ ├── 10-docker-compose.md │ │ │ │ │ ├── 20-kubernetes.md │ │ │ │ │ ├── 30-third-party.md │ │ │ │ │ ├── 40-nixos.md │ │ │ │ │ └── _category_.yaml │ │ │ │ ├── 10-database.md │ │ │ │ ├── 10-server-config.md │ │ │ │ ├── 11-forges/ │ │ │ │ │ ├── 100-addon.md │ │ │ │ │ ├── 11-overview.md │ │ │ │ │ ├── 20-github.md │ │ │ │ │ ├── 30-gitea.md │ │ │ │ │ ├── 35-forgejo.md │ │ │ │ │ ├── 40-gitlab.md │ │ │ │ │ ├── 50-bitbucket.md │ │ │ │ │ ├── 60-bitbucket_datacenter.md │ │ │ │ │ └── _category_.yaml │ │ │ │ ├── 15-agent-config.md │ │ │ │ ├── 22-backends/ │ │ │ │ │ ├── 10-docker.md │ │ │ │ │ ├── 20-local.md │ │ │ │ │ ├── 40-kubernetes.md │ │ │ │ │ ├── 50-custom-backends.md │ │ │ │ │ └── _category_.yaml │ │ │ │ ├── 40-advanced/ │ │ │ │ │ ├── 10-proxy.md │ │ │ │ │ ├── 100-external-configuration-api.md │ │ │ │ │ ├── 20-ssl.md │ │ │ │ │ ├── 30-autoscaler.md │ │ │ │ │ ├── 40-advanced.md │ │ │ │ │ ├── 90-prometheus.md │ │ │ │ │ └── _category_.yaml │ │ │ │ └── _category_.yaml │ │ │ ├── 40-cli.md │ │ │ ├── 50-about.md │ │ │ ├── 91-migrations.md │ │ │ ├── 92-awesome.md │ │ │ └── 92-development/ │ │ │ ├── 01-getting-started.md │ │ │ ├── 02-core-ideas.md │ │ │ ├── 03-ui.md │ │ │ ├── 04-docs.md │ │ │ ├── 05-architecture.md │ │ │ ├── 06-conventions.md │ │ │ ├── 07-guides.md │ │ │ ├── 08-translations.md │ │ │ ├── 09-swagger.md │ │ │ ├── 09-testing.md │ │ │ └── _category_.yaml │ │ ├── version-3.12/ │ │ │ ├── 10-intro/ │ │ │ │ └── index.md │ │ │ ├── 20-usage/ │ │ │ │ ├── 10-intro.md │ │ │ │ ├── 100-troubleshooting.md │ │ │ │ ├── 15-terminology/ │ │ │ │ │ ├── architecture.excalidraw │ │ │ │ │ ├── index.md │ │ │ │ │ └── pipeline-workflow-step.excalidraw │ │ │ │ ├── 20-workflow-syntax.md │ │ │ │ ├── 25-workflows.md │ │ │ │ ├── 30-matrix-workflows.md │ │ │ │ ├── 40-secrets.md │ │ │ │ ├── 41-registries.md │ │ │ │ ├── 45-cron.md │ │ │ │ ├── 50-environment.md │ │ │ │ ├── 51-plugins/ │ │ │ │ │ ├── 20-creating-plugins.md │ │ │ │ │ ├── 51-overview.md │ │ │ │ │ └── _category_.yaml │ │ │ │ ├── 60-services.md │ │ │ │ ├── 70-volumes.md │ │ │ │ ├── 72-extensions/ │ │ │ │ │ ├── 40-configuration-extension.md │ │ │ │ │ ├── _category_.yaml │ │ │ │ │ └── index.md │ │ │ │ ├── 72-linter.md │ │ │ │ ├── 75-project-settings.md │ │ │ │ ├── 80-badges.md │ │ │ │ ├── 90-advanced-usage.md │ │ │ │ └── _category_.yaml │ │ │ ├── 30-administration/ │ │ │ │ ├── 00-general.md │ │ │ │ ├── 05-installation/ │ │ │ │ │ ├── 10-docker-compose.md │ │ │ │ │ ├── 20-helm-chart.md │ │ │ │ │ ├── 30-packages.md │ │ │ │ │ └── _category_.yaml │ │ │ │ ├── 10-configuration/ │ │ │ │ │ ├── 10-server.md │ │ │ │ │ ├── 100-addons.md │ │ │ │ │ ├── 11-backends/ │ │ │ │ │ │ ├── 10-docker.md │ │ │ │ │ │ ├── 20-kubernetes.md │ │ │ │ │ │ ├── 30-local.md │ │ │ │ │ │ ├── 50-custom.md │ │ │ │ │ │ └── _category_.yaml │ │ │ │ │ ├── 12-forges/ │ │ │ │ │ │ ├── 11-overview.md │ │ │ │ │ │ ├── 20-github.md │ │ │ │ │ │ ├── 30-gitea.md │ │ │ │ │ │ ├── 35-forgejo.md │ │ │ │ │ │ ├── 40-gitlab.md │ │ │ │ │ │ ├── 50-bitbucket.md │ │ │ │ │ │ ├── 60-bitbucket_datacenter.md │ │ │ │ │ │ └── _category_.yaml │ │ │ │ │ ├── 30-agent.md │ │ │ │ │ ├── 40-autoscaler.md │ │ │ │ │ └── _category_.yaml │ │ │ │ └── _category_.yaml │ │ │ ├── 40-cli.md │ │ │ └── 92-development/ │ │ │ ├── 01-getting-started.md │ │ │ ├── 02-core-ideas.md │ │ │ ├── 03-ui.md │ │ │ ├── 04-docs.md │ │ │ ├── 05-architecture.md │ │ │ ├── 06-conventions.md │ │ │ ├── 07-guides.md │ │ │ ├── 08-translations.md │ │ │ ├── 09-openapi.md │ │ │ ├── 09-testing.md │ │ │ ├── 100-addons.md │ │ │ └── _category_.yaml │ │ ├── version-3.13/ │ │ │ ├── 10-intro/ │ │ │ │ └── index.md │ │ │ ├── 20-usage/ │ │ │ │ ├── 10-intro.md │ │ │ │ ├── 100-troubleshooting.md │ │ │ │ ├── 15-terminology/ │ │ │ │ │ ├── architecture.excalidraw │ │ │ │ │ ├── index.md │ │ │ │ │ └── pipeline-workflow-step.excalidraw │ │ │ │ ├── 20-workflow-syntax.md │ │ │ │ ├── 25-workflows.md │ │ │ │ ├── 30-matrix-workflows.md │ │ │ │ ├── 40-secrets.md │ │ │ │ ├── 41-registries.md │ │ │ │ ├── 45-cron.md │ │ │ │ ├── 50-environment.md │ │ │ │ ├── 51-plugins/ │ │ │ │ │ ├── 20-creating-plugins.md │ │ │ │ │ ├── 51-overview.md │ │ │ │ │ └── _category_.yaml │ │ │ │ ├── 60-services.md │ │ │ │ ├── 70-volumes.md │ │ │ │ ├── 72-extensions/ │ │ │ │ │ ├── 40-configuration-extension.md │ │ │ │ │ ├── _category_.yaml │ │ │ │ │ └── index.md │ │ │ │ ├── 72-linter.md │ │ │ │ ├── 75-project-settings.md │ │ │ │ ├── 80-badges.md │ │ │ │ ├── 90-advanced-usage.md │ │ │ │ └── _category_.yaml │ │ │ ├── 30-administration/ │ │ │ │ ├── 00-general.md │ │ │ │ ├── 05-installation/ │ │ │ │ │ ├── 10-docker-compose.md │ │ │ │ │ ├── 20-helm-chart.md │ │ │ │ │ ├── 30-packages.md │ │ │ │ │ └── _category_.yaml │ │ │ │ ├── 10-configuration/ │ │ │ │ │ ├── 10-server.md │ │ │ │ │ ├── 100-addons.md │ │ │ │ │ ├── 11-backends/ │ │ │ │ │ │ ├── 10-docker.md │ │ │ │ │ │ ├── 20-kubernetes.md │ │ │ │ │ │ ├── 30-local.md │ │ │ │ │ │ ├── 50-custom.md │ │ │ │ │ │ └── _category_.yaml │ │ │ │ │ ├── 12-forges/ │ │ │ │ │ │ ├── 11-overview.md │ │ │ │ │ │ ├── 20-github.md │ │ │ │ │ │ ├── 30-gitea.md │ │ │ │ │ │ ├── 35-forgejo.md │ │ │ │ │ │ ├── 40-gitlab.md │ │ │ │ │ │ ├── 50-bitbucket.md │ │ │ │ │ │ ├── 60-bitbucket_datacenter.md │ │ │ │ │ │ └── _category_.yaml │ │ │ │ │ ├── 30-agent.md │ │ │ │ │ ├── 40-autoscaler.md │ │ │ │ │ └── _category_.yaml │ │ │ │ └── _category_.yaml │ │ │ ├── 40-cli.md │ │ │ └── 92-development/ │ │ │ ├── 01-getting-started.md │ │ │ ├── 02-core-ideas.md │ │ │ ├── 03-ui.md │ │ │ ├── 04-docs.md │ │ │ ├── 05-architecture.md │ │ │ ├── 06-conventions.md │ │ │ ├── 07-guides.md │ │ │ ├── 08-translations.md │ │ │ ├── 09-openapi.md │ │ │ ├── 09-testing.md │ │ │ ├── 10-packaging.md │ │ │ ├── 100-addons.md │ │ │ └── _category_.yaml │ │ └── version-3.14/ │ │ ├── 10-intro/ │ │ │ └── index.md │ │ ├── 20-usage/ │ │ │ ├── 10-intro.md │ │ │ ├── 100-troubleshooting.md │ │ │ ├── 15-terminology/ │ │ │ │ ├── architecture.excalidraw │ │ │ │ ├── index.md │ │ │ │ └── pipeline-workflow-step.excalidraw │ │ │ ├── 20-workflow-syntax.md │ │ │ ├── 25-workflows.md │ │ │ ├── 30-matrix-workflows.md │ │ │ ├── 40-secrets.md │ │ │ ├── 41-registries.md │ │ │ ├── 45-cron.md │ │ │ ├── 50-environment.md │ │ │ ├── 51-plugins/ │ │ │ │ ├── 20-creating-plugins.md │ │ │ │ ├── 51-overview.md │ │ │ │ └── _category_.yaml │ │ │ ├── 60-services.md │ │ │ ├── 70-volumes.md │ │ │ ├── 72-extensions/ │ │ │ │ ├── 40-configuration-extension.md │ │ │ │ ├── 50-registry-extension.md │ │ │ │ ├── 55-secret-extension.md │ │ │ │ ├── _category_.yaml │ │ │ │ └── index.md │ │ │ ├── 72-linter.md │ │ │ ├── 75-project-settings.md │ │ │ ├── 80-badges.md │ │ │ ├── 90-advanced-usage.md │ │ │ └── _category_.yaml │ │ ├── 30-administration/ │ │ │ ├── 00-general.md │ │ │ ├── 05-installation/ │ │ │ │ ├── 10-docker-compose.md │ │ │ │ ├── 20-helm-chart.md │ │ │ │ ├── 30-packages.md │ │ │ │ └── _category_.yaml │ │ │ ├── 10-configuration/ │ │ │ │ ├── 10-server.md │ │ │ │ ├── 100-addons.md │ │ │ │ ├── 11-backends/ │ │ │ │ │ ├── 10-docker.md │ │ │ │ │ ├── 20-kubernetes.md │ │ │ │ │ ├── 30-local.md │ │ │ │ │ ├── 50-custom.md │ │ │ │ │ └── _category_.yaml │ │ │ │ ├── 12-forges/ │ │ │ │ │ ├── 11-overview.md │ │ │ │ │ ├── 20-github.md │ │ │ │ │ ├── 30-gitea.md │ │ │ │ │ ├── 35-forgejo.md │ │ │ │ │ ├── 40-gitlab.md │ │ │ │ │ ├── 50-bitbucket.md │ │ │ │ │ ├── 60-bitbucket_datacenter.md │ │ │ │ │ └── _category_.yaml │ │ │ │ ├── 30-agent.md │ │ │ │ ├── 40-autoscaler.md │ │ │ │ └── _category_.yaml │ │ │ └── _category_.yaml │ │ ├── 40-cli.md │ │ └── 92-development/ │ │ ├── 01-getting-started.md │ │ ├── 02-core-ideas.md │ │ ├── 03-ui.md │ │ ├── 04-docs.md │ │ ├── 05-architecture.md │ │ ├── 06-conventions.md │ │ ├── 07-guides.md │ │ ├── 08-translations.md │ │ ├── 09-openapi.md │ │ ├── 09-testing.md │ │ ├── 10-packaging.md │ │ ├── 100-addons.md │ │ ├── 40-deprecations.md │ │ ├── _category_.yaml │ │ └── woodpecker-architecture.dot │ ├── versioned_sidebars/ │ │ ├── version-2.8-sidebars.json │ │ ├── version-3.12-sidebars.json │ │ ├── version-3.13-sidebars.json │ │ └── version-3.14-sidebars.json │ └── versions.json ├── e2e/ │ ├── scenarios/ │ │ ├── agent_routing_test.go │ │ ├── cancel_test.go │ │ ├── fixtures/ │ │ │ ├── 01_simple_success.json │ │ │ ├── 01_simple_success.yaml │ │ │ ├── 02_step_failure.json │ │ │ ├── 02_step_failure.yaml │ │ │ ├── 03_failure_ignore.json │ │ │ ├── 03_failure_ignore.yaml │ │ │ ├── 04_on_failure_notify.json │ │ │ ├── 04_on_failure_notify.yaml │ │ │ ├── 05_service.json │ │ │ ├── 05_service.yaml │ │ │ ├── 06_parallel_steps.json │ │ │ ├── 06_parallel_steps.yaml │ │ │ ├── 07_oom_killed.json │ │ │ ├── 07_oom_killed.yaml │ │ │ ├── 08_multi_step_on_failure.json │ │ │ ├── 08_multi_step_on_failure.yaml │ │ │ ├── 09_multi_workflow_parallel/ │ │ │ │ ├── build.yaml │ │ │ │ ├── lint.yaml │ │ │ │ └── scenario.json │ │ │ ├── 10_multi_workflow_failure/ │ │ │ │ ├── failing.yaml │ │ │ │ ├── passing.yaml │ │ │ │ └── scenario.json │ │ │ ├── 11_multi_workflow_failure_ignore/ │ │ │ │ ├── flaky.yaml │ │ │ │ ├── main.yaml │ │ │ │ └── scenario.json │ │ │ ├── 12_multi_workflow_depends_on/ │ │ │ │ ├── build.yaml │ │ │ │ ├── deploy.yaml │ │ │ │ ├── notify.yaml │ │ │ │ └── scenario.json │ │ │ └── 13_multi_workflow_depends_on_failure/ │ │ │ ├── build.yaml │ │ │ ├── deploy.yaml │ │ │ └── scenario.json │ │ ├── fixtures.go │ │ ├── infra_test.go │ │ ├── matrix_test.go │ │ ├── restart_test.go │ │ └── suite_test.go │ └── setup/ │ ├── agent.go │ ├── forge.go │ ├── server.go │ ├── store.go │ └── wait.go ├── flake.nix ├── go.mod ├── go.sum ├── nfpm/ │ ├── agent.yaml │ ├── cli.yaml │ ├── server.yaml │ ├── woodpecker-agent.env.example │ ├── woodpecker-agent.service │ ├── woodpecker-server.env.example │ ├── woodpecker-server.service │ └── woodpecker-system-user.preinstall.sh ├── pipeline/ │ ├── backend/ │ │ ├── backend.go │ │ ├── common/ │ │ │ ├── script.go │ │ │ ├── script_posix.go │ │ │ ├── script_posix_test.go │ │ │ ├── script_test.go │ │ │ ├── script_win.go │ │ │ └── script_win_test.go │ │ ├── docker/ │ │ │ ├── backend_options.go │ │ │ ├── backend_options_test.go │ │ │ ├── config.go │ │ │ ├── convert.go │ │ │ ├── convert_test.go │ │ │ ├── convert_win.go │ │ │ ├── convert_win_test.go │ │ │ ├── docker.go │ │ │ ├── errors.go │ │ │ └── flags.go │ │ ├── dummy/ │ │ │ ├── dummy.go │ │ │ └── dummy_test.go │ │ ├── kubernetes/ │ │ │ ├── backend_options.go │ │ │ ├── backend_options_test.go │ │ │ ├── flags.go │ │ │ ├── kubernetes.go │ │ │ ├── kubernetes_test.go │ │ │ ├── namespace.go │ │ │ ├── namespace_test.go │ │ │ ├── pod.go │ │ │ ├── pod_test.go │ │ │ ├── secrets.go │ │ │ ├── secrets_test.go │ │ │ ├── service.go │ │ │ ├── service_test.go │ │ │ ├── utils.go │ │ │ ├── utils_test.go │ │ │ ├── volume.go │ │ │ └── volume_test.go │ │ ├── local/ │ │ │ ├── clone.go │ │ │ ├── command.go │ │ │ ├── command_test.go │ │ │ ├── const.go │ │ │ ├── const_test.go │ │ │ ├── errors.go │ │ │ ├── flags.go │ │ │ ├── local.go │ │ │ ├── local_test.go │ │ │ └── plugin.go │ │ └── types/ │ │ ├── auth.go │ │ ├── backend.go │ │ ├── config.go │ │ ├── conn.go │ │ ├── errors.go │ │ ├── mocks/ │ │ │ └── mock_Backend.go │ │ ├── network.go │ │ ├── secret.go │ │ ├── stage.go │ │ ├── state.go │ │ └── step.go │ ├── const.go │ ├── errors/ │ │ ├── linter.go │ │ ├── linter_test.go │ │ ├── pipeline.go │ │ └── runtime.go │ ├── frontend/ │ │ ├── metadata/ │ │ │ ├── const.go │ │ │ ├── drone_compatibility.go │ │ │ ├── drone_compatibility_test.go │ │ │ ├── environment.go │ │ │ ├── environment_test.go │ │ │ ├── substitution.go │ │ │ ├── substitution_test.go │ │ │ └── types.go │ │ └── yaml/ │ │ ├── compiler/ │ │ │ ├── compiler.go │ │ │ ├── compiler_test.go │ │ │ ├── convert.go │ │ │ ├── convert_test.go │ │ │ ├── dag.go │ │ │ ├── dag_test.go │ │ │ ├── errors.go │ │ │ ├── option.go │ │ │ ├── option_test.go │ │ │ └── settings/ │ │ │ ├── params.go │ │ │ └── params_test.go │ │ ├── constraint/ │ │ │ ├── constraint.go │ │ │ ├── constraint_test.go │ │ │ ├── list.go │ │ │ ├── list_test.go │ │ │ ├── map.go │ │ │ ├── map_test.go │ │ │ ├── path.go │ │ │ ├── path_test.go │ │ │ └── skip.go │ │ ├── linter/ │ │ │ ├── error.go │ │ │ ├── linter.go │ │ │ ├── linter_test.go │ │ │ ├── option.go │ │ │ └── schema/ │ │ │ ├── .woodpecker/ │ │ │ │ ├── test-array-syntax.yaml │ │ │ │ ├── test-backend-options.yaml │ │ │ │ ├── test-broken-plugin.yaml │ │ │ │ ├── test-broken-plugin2.yaml │ │ │ │ ├── test-broken.yaml │ │ │ │ ├── test-clone-skip.yaml │ │ │ │ ├── test-clone.yaml │ │ │ │ ├── test-custom-backend.yaml │ │ │ │ ├── test-dag.yaml │ │ │ │ ├── test-kubernetes-backend-tolerations.yaml │ │ │ │ ├── test-labels.yaml │ │ │ │ ├── test-matrix.yaml │ │ │ │ ├── test-merge-map-and-sequence.yaml │ │ │ │ ├── test-multi.yaml │ │ │ │ ├── test-pipeline-when.yaml │ │ │ │ ├── test-plugin.yaml │ │ │ │ ├── test-run-on.yaml │ │ │ │ ├── test-service.yaml │ │ │ │ ├── test-step.yaml │ │ │ │ ├── test-when.yaml │ │ │ │ └── test-workspace.yaml │ │ │ ├── schema.go │ │ │ ├── schema.json │ │ │ └── schema_test.go │ │ ├── matrix/ │ │ │ ├── matrix.go │ │ │ └── matrix_test.go │ │ ├── parse.go │ │ ├── parse_test.go │ │ ├── types/ │ │ │ ├── base/ │ │ │ │ ├── int.go │ │ │ │ ├── int_test.go │ │ │ │ ├── slice.go │ │ │ │ └── slice_test.go │ │ │ ├── container.go │ │ │ ├── container_list.go │ │ │ ├── container_test.go │ │ │ ├── network.go │ │ │ ├── network_test.go │ │ │ ├── volume.go │ │ │ ├── volume_test.go │ │ │ └── workflow.go │ │ └── utils/ │ │ ├── image.go │ │ └── image_test.go │ ├── logging/ │ │ └── logger.go │ ├── runtime/ │ │ ├── helpers_test.go │ │ ├── option.go │ │ ├── runtime.go │ │ ├── runtime_test.go │ │ ├── shutdown.go │ │ ├── step.go │ │ ├── step_test.go │ │ ├── workflow.go │ │ └── workflow_test.go │ ├── shared/ │ │ ├── replace_secrets.go │ │ └── replace_secrets_test.go │ ├── state/ │ │ └── state.go │ ├── tracing/ │ │ ├── mocks/ │ │ │ └── mock_Tracer.go │ │ └── tracer.go │ └── utils/ │ ├── copy_line_by_line.go │ └── copy_line_by_line_test.go ├── release-config.ts ├── rpc/ │ ├── log_entry.go │ ├── log_entry_test.go │ ├── mocks/ │ │ └── mock_Peer.go │ ├── peer.go │ ├── proto/ │ │ ├── generate.go │ │ ├── version.go │ │ ├── woodpecker.pb.go │ │ ├── woodpecker.proto │ │ └── woodpecker_grpc.pb.go │ └── types.go ├── server/ │ ├── api/ │ │ ├── agent.go │ │ ├── agent_test.go │ │ ├── badge.go │ │ ├── cron.go │ │ ├── debug/ │ │ │ └── debug.go │ │ ├── forge.go │ │ ├── global_registry.go │ │ ├── global_secret.go │ │ ├── helper.go │ │ ├── helper_test.go │ │ ├── hook.go │ │ ├── hook_test.go │ │ ├── login.go │ │ ├── login_test.go │ │ ├── metrics/ │ │ │ └── prometheus.go │ │ ├── org.go │ │ ├── org_registry.go │ │ ├── org_secret.go │ │ ├── pipeline.go │ │ ├── pipeline_test.go │ │ ├── queue.go │ │ ├── registry.go │ │ ├── repo.go │ │ ├── repo_secret.go │ │ ├── repo_test.go │ │ ├── signature_public_key.go │ │ ├── stream.go │ │ ├── stream_test.go │ │ ├── user.go │ │ ├── users.go │ │ └── z.go │ ├── badges/ │ │ ├── badges.go │ │ ├── badges_test.go │ │ ├── color.go │ │ ├── drawer.go │ │ ├── fonts/ │ │ │ └── dejavusans.go │ │ └── style.go │ ├── cache/ │ │ └── membership.go │ ├── ccmenu/ │ │ ├── cc.go │ │ └── cc_test.go │ ├── config.go │ ├── cron/ │ │ ├── cron.go │ │ └── cron_test.go │ ├── forge/ │ │ ├── addon/ │ │ │ ├── args.go │ │ │ ├── client.go │ │ │ ├── plugin.go │ │ │ └── server.go │ │ ├── bitbucket/ │ │ │ ├── bitbucket.go │ │ │ ├── bitbucket_test.go │ │ │ ├── convert.go │ │ │ ├── convert_test.go │ │ │ ├── fixtures/ │ │ │ │ ├── HookPull.json │ │ │ │ ├── HookPullRequestDeclined.json │ │ │ │ ├── HookPullRequestMerged.json │ │ │ │ ├── HookPush.json │ │ │ │ ├── handler.go │ │ │ │ └── hooks.go │ │ │ ├── internal/ │ │ │ │ ├── client.go │ │ │ │ └── types.go │ │ │ ├── parse.go │ │ │ └── parse_test.go │ │ ├── bitbucketdatacenter/ │ │ │ ├── bitbucketdatacenter.go │ │ │ ├── bitbucketdatacenter_test.go │ │ │ ├── convert.go │ │ │ ├── convert_test.go │ │ │ ├── fixtures/ │ │ │ │ ├── HookPullRequestMerged.json │ │ │ │ ├── HookPullRequestOpened.json │ │ │ │ ├── HookPullRequestOpenedFromFork.json │ │ │ │ ├── HookPush.json │ │ │ │ ├── expected/ │ │ │ │ │ └── PostBuildStatus.json │ │ │ │ ├── handler.go │ │ │ │ └── hooks.go │ │ │ ├── internal/ │ │ │ │ ├── client.go │ │ │ │ └── client_test.go │ │ │ ├── parse.go │ │ │ └── parse_test.go │ │ ├── common/ │ │ │ ├── event_normalize.go │ │ │ ├── status.go │ │ │ ├── status_test.go │ │ │ ├── utils.go │ │ │ └── utils_test.go │ │ ├── forge.go │ │ ├── forgejo/ │ │ │ ├── fixtures/ │ │ │ │ ├── HookPullRequest.json │ │ │ │ ├── HookPullRequestAssigneeCleared.json │ │ │ │ ├── HookPullRequestAssigneesAdded.json │ │ │ │ ├── HookPullRequestClosed.json │ │ │ │ ├── HookPullRequestEdited.json │ │ │ │ ├── HookPullRequestLabelAdded.json │ │ │ │ ├── HookPullRequestLabelsCleared.json │ │ │ │ ├── HookPullRequestLabelsUpdated.json │ │ │ │ ├── HookPullRequestMerged.json │ │ │ │ ├── HookPullRequestMilestoneAdded.json │ │ │ │ ├── HookPullRequestMilestoneChanged.json │ │ │ │ ├── HookPullRequestMilestoneCleared.json │ │ │ │ ├── HookPullRequestReopened.json │ │ │ │ ├── HookPullRequestUpdated.json │ │ │ │ ├── HookPush.json │ │ │ │ ├── HookPushBranch.json │ │ │ │ ├── HookPushMulti.json │ │ │ │ ├── HookRelease.json │ │ │ │ ├── HookTag.json │ │ │ │ ├── handler.go │ │ │ │ └── hooks.go │ │ │ ├── forgejo.go │ │ │ ├── forgejo_test.go │ │ │ ├── helper.go │ │ │ ├── helper_test.go │ │ │ ├── parse.go │ │ │ ├── parse_test.go │ │ │ └── types.go │ │ ├── gitea/ │ │ │ ├── fixtures/ │ │ │ │ ├── HookPullRequest.json │ │ │ │ ├── HookPullRequestAddLabel.json │ │ │ │ ├── HookPullRequestAddMile.json │ │ │ │ ├── HookPullRequestAddReviewRequest.json │ │ │ │ ├── HookPullRequestAssigneesAdded.json │ │ │ │ ├── HookPullRequestAssigneesRemoved.json │ │ │ │ ├── HookPullRequestChangeBody.json │ │ │ │ ├── HookPullRequestChangeLabel.json │ │ │ │ ├── HookPullRequestChangeMile.json │ │ │ │ ├── HookPullRequestChangeTitle.json │ │ │ │ ├── HookPullRequestClosed.json │ │ │ │ ├── HookPullRequestMerged.json │ │ │ │ ├── HookPullRequestRemoveLabel.json │ │ │ │ ├── HookPullRequestRemoveMile.json │ │ │ │ ├── HookPullRequestReopened.json │ │ │ │ ├── HookPullRequestReviewAck.json │ │ │ │ ├── HookPullRequestReviewComment.json │ │ │ │ ├── HookPullRequestReviewDeny.json │ │ │ │ ├── HookPullRequestUpdated.json │ │ │ │ ├── HookPush.json │ │ │ │ ├── HookPushBranch.json │ │ │ │ ├── HookPushMulti.json │ │ │ │ ├── HookRelease.json │ │ │ │ ├── HookTag.json │ │ │ │ ├── handler.go │ │ │ │ └── hooks.go │ │ │ ├── gitea.go │ │ │ ├── gitea_test.go │ │ │ ├── helper.go │ │ │ ├── helper_test.go │ │ │ ├── parse.go │ │ │ ├── parse_test.go │ │ │ └── types.go │ │ ├── github/ │ │ │ ├── convert.go │ │ │ ├── convert_test.go │ │ │ ├── fixtures/ │ │ │ │ ├── HookDeploy.json │ │ │ │ ├── HookPullRequest.json │ │ │ │ ├── HookPullRequestAssigneeAdded.json │ │ │ │ ├── HookPullRequestAssigneeRemoved.json │ │ │ │ ├── HookPullRequestClosed.json │ │ │ │ ├── HookPullRequestEdited.json │ │ │ │ ├── HookPullRequestLabelAdded.json │ │ │ │ ├── HookPullRequestLabelRemoved.json │ │ │ │ ├── HookPullRequestLabelsCleared.json │ │ │ │ ├── HookPullRequestMerged.json │ │ │ │ ├── HookPullRequestMilestoneAdded.json │ │ │ │ ├── HookPullRequestMilestoneRemoved.json │ │ │ │ ├── HookPullRequestReopened.json │ │ │ │ ├── HookPullRequestReviewRequested.json │ │ │ │ ├── HookPush.json │ │ │ │ ├── HookRelease.json │ │ │ │ ├── HookTag.json │ │ │ │ ├── handler.go │ │ │ │ ├── hooks.go │ │ │ │ └── mock_server.go │ │ │ ├── github.go │ │ │ ├── github_test.go │ │ │ ├── parse.go │ │ │ └── parse_test.go │ │ ├── gitlab/ │ │ │ ├── convert.go │ │ │ ├── fixtures/ │ │ │ │ ├── HookPullRequestApproved.json │ │ │ │ ├── HookPullRequestAssigned.json │ │ │ │ ├── HookPullRequestClosed.json │ │ │ │ ├── HookPullRequestDemilestoned.json │ │ │ │ ├── HookPullRequestEdited.json │ │ │ │ ├── HookPullRequestLabelsAdded.json │ │ │ │ ├── HookPullRequestLabelsCleared.json │ │ │ │ ├── HookPullRequestLabelsUpdated.json │ │ │ │ ├── HookPullRequestMerged.json │ │ │ │ ├── HookPullRequestMilestoned.json │ │ │ │ ├── HookPullRequestOpened.json │ │ │ │ ├── HookPullRequestReopened.json │ │ │ │ ├── HookPullRequestReviewRequestDel.json │ │ │ │ ├── HookPullRequestReviewRequested.json │ │ │ │ ├── HookPullRequestUnapproved.json │ │ │ │ ├── HookPullRequestUnassigned.json │ │ │ │ ├── HookPullRequestUnsupportedAction.json │ │ │ │ ├── HookPullRequestUpdated.json │ │ │ │ ├── HookPullRequestWithoutChanges.json │ │ │ │ ├── HookPush.json │ │ │ │ ├── HookTag.json │ │ │ │ ├── WebhookReleaseBody.json │ │ │ │ ├── hooks.go │ │ │ │ ├── oauth.go │ │ │ │ ├── projects.go │ │ │ │ ├── testdata.go │ │ │ │ └── users.go │ │ │ ├── gitlab.go │ │ │ ├── gitlab_test.go │ │ │ ├── helper.go │ │ │ └── status.go │ │ ├── mocks/ │ │ │ ├── mock_Forge.go │ │ │ └── mock_Refresher.go │ │ ├── refresh.go │ │ ├── refresh_test.go │ │ ├── setup/ │ │ │ └── setup.go │ │ └── types/ │ │ ├── errors.go │ │ ├── meta.go │ │ ├── meta_test.go │ │ └── oauth.go │ ├── logging/ │ │ ├── LICENSE │ │ ├── log.go │ │ ├── log_test.go │ │ └── logging.go │ ├── model/ │ │ ├── agent.go │ │ ├── agent_test.go │ │ ├── commit.go │ │ ├── config.go │ │ ├── const.go │ │ ├── cron.go │ │ ├── environ.go │ │ ├── event.go │ │ ├── feed.go │ │ ├── forge.go │ │ ├── log.go │ │ ├── netrc.go │ │ ├── org.go │ │ ├── pagination.go │ │ ├── pagination_test.go │ │ ├── perm.go │ │ ├── pipeline.go │ │ ├── pull_request.go │ │ ├── queue.go │ │ ├── redirection.go │ │ ├── registry.go │ │ ├── repo.go │ │ ├── repo_test.go │ │ ├── secret.go │ │ ├── secret_test.go │ │ ├── server_config.go │ │ ├── step.go │ │ ├── step_test.go │ │ ├── task.go │ │ ├── task_test.go │ │ ├── team.go │ │ ├── user.go │ │ ├── user_test.go │ │ └── workflow.go │ ├── pipeline/ │ │ ├── approve.go │ │ ├── cancel.go │ │ ├── config.go │ │ ├── create.go │ │ ├── decline.go │ │ ├── errors.go │ │ ├── gated.go │ │ ├── gated_test.go │ │ ├── helper.go │ │ ├── items.go │ │ ├── items_test.go │ │ ├── pipeline_status.go │ │ ├── pipeline_status_test.go │ │ ├── queue.go │ │ ├── restart.go │ │ ├── start.go │ │ ├── status.go │ │ ├── status_test.go │ │ ├── step_builder/ │ │ │ ├── metadata.go │ │ │ ├── metadata_test.go │ │ │ ├── step_builder.go │ │ │ └── step_builder_test.go │ │ ├── step_status.go │ │ ├── step_status_test.go │ │ ├── topic.go │ │ ├── workflow_status.go │ │ └── workflow_status_test.go │ ├── pubsub/ │ │ ├── memory/ │ │ │ ├── pub.go │ │ │ └── pub_test.go │ │ ├── pubsub.go │ │ └── pubsub_test.go │ ├── queue/ │ │ ├── fifo.go │ │ ├── fifo_test.go │ │ ├── mocks/ │ │ │ └── mock_Queue.go │ │ ├── persistent.go │ │ └── queue.go │ ├── router/ │ │ ├── api.go │ │ ├── middleware/ │ │ │ ├── header/ │ │ │ │ └── header.go │ │ │ ├── logger.go │ │ │ ├── session/ │ │ │ │ ├── agent.go │ │ │ │ ├── org.go │ │ │ │ ├── pagination.go │ │ │ │ ├── repo.go │ │ │ │ └── user.go │ │ │ ├── store.go │ │ │ ├── token/ │ │ │ │ └── token.go │ │ │ └── version.go │ │ └── router.go │ ├── rpc/ │ │ ├── auth_server.go │ │ ├── auth_server_test.go │ │ ├── authorizer.go │ │ ├── authorizer_test.go │ │ ├── errors.go │ │ ├── filter.go │ │ ├── filter_test.go │ │ ├── jwt_manager.go │ │ ├── jwt_manager_test.go │ │ ├── rpc.go │ │ ├── rpc_integration_test.go │ │ ├── rpc_test.go │ │ ├── sanitize.go │ │ ├── sanitize_test.go │ │ └── server.go │ ├── scheduler/ │ │ ├── proxy.go │ │ └── scheduler.go │ ├── services/ │ │ ├── config/ │ │ │ ├── combined.go │ │ │ ├── combined_test.go │ │ │ ├── forge.go │ │ │ ├── forge_test.go │ │ │ ├── http.go │ │ │ ├── mocks/ │ │ │ │ └── mock_Service.go │ │ │ └── service.go │ │ ├── encryption/ │ │ │ ├── aes.go │ │ │ ├── aes_builder.go │ │ │ ├── aes_encryption.go │ │ │ ├── aes_state.go │ │ │ ├── aes_test.go │ │ │ ├── constants.go │ │ │ ├── encryption.go │ │ │ ├── encryption_builder.go │ │ │ ├── no_encryption.go │ │ │ ├── tink.go │ │ │ ├── tink_builder.go │ │ │ ├── tink_keyset.go │ │ │ ├── tink_keyset_watcher.go │ │ │ ├── tink_state.go │ │ │ ├── types/ │ │ │ │ └── encryption.go │ │ │ └── wrapper/ │ │ │ └── store/ │ │ │ ├── constants.go │ │ │ ├── secret_store.go │ │ │ └── secret_store_wrapper.go │ │ ├── environment/ │ │ │ ├── mocks/ │ │ │ │ └── mock_Service.go │ │ │ ├── parse.go │ │ │ ├── parse_test.go │ │ │ └── service.go │ │ ├── log/ │ │ │ ├── addon/ │ │ │ │ ├── client.go │ │ │ │ ├── plugin.go │ │ │ │ └── server.go │ │ │ ├── file/ │ │ │ │ └── file.go │ │ │ ├── mocks/ │ │ │ │ └── mock_Service.go │ │ │ └── service.go │ │ ├── manager.go │ │ ├── mocks/ │ │ │ └── mock_Manager.go │ │ ├── permissions/ │ │ │ ├── admins.go │ │ │ ├── admins_test.go │ │ │ ├── orgs.go │ │ │ ├── orgs_test.go │ │ │ ├── repo_owners.go │ │ │ └── repo_owners_test.go │ │ ├── registry/ │ │ │ ├── combined.go │ │ │ ├── combined_test.go │ │ │ ├── db.go │ │ │ ├── filesystem.go │ │ │ ├── http.go │ │ │ ├── mocks/ │ │ │ │ ├── mock_ReadOnlyService.go │ │ │ │ └── mock_Service.go │ │ │ ├── service.go │ │ │ ├── with_extension.go │ │ │ └── with_extension_test.go │ │ ├── secret/ │ │ │ ├── combined.go │ │ │ ├── combined_test.go │ │ │ ├── db.go │ │ │ ├── db_test.go │ │ │ ├── http.go │ │ │ ├── mocks/ │ │ │ │ └── mock_Service.go │ │ │ └── service.go │ │ ├── setup.go │ │ └── utils/ │ │ ├── hostmatcher/ │ │ │ ├── hostmatcher.go │ │ │ ├── hostmatcher_test.go │ │ │ └── http.go │ │ ├── http.go │ │ └── http_test.go │ ├── store/ │ │ ├── common.go │ │ ├── context.go │ │ ├── datastore/ │ │ │ ├── agent.go │ │ │ ├── agent_test.go │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ ├── cron.go │ │ │ ├── cron_test.go │ │ │ ├── engine.go │ │ │ ├── engine_test.go │ │ │ ├── errors.go │ │ │ ├── feed.go │ │ │ ├── feed_test.go │ │ │ ├── forge.go │ │ │ ├── forge_test.go │ │ │ ├── helper.go │ │ │ ├── helper_test.go │ │ │ ├── init.go │ │ │ ├── init_cgo.go │ │ │ ├── log.go │ │ │ ├── log_test.go │ │ │ ├── migration/ │ │ │ │ ├── 000_legacy_to_xormigrate.go │ │ │ │ ├── 001_add_org_id.go │ │ │ │ ├── 002_task_data_type.go │ │ │ │ ├── 003_config_data_type.go │ │ │ │ ├── 004_remove_secrets_plugin_only_col.go │ │ │ │ ├── 005_convert_to_new_pipeline_errors_format.go │ │ │ │ ├── 006_link_to_url.go │ │ │ │ ├── 007_clean_registry_pipeline.go │ │ │ │ ├── 008_set_default_forge_id.go │ │ │ │ ├── 009_unify_columns_tables.go │ │ │ │ ├── 010_registries_add_user.go │ │ │ │ ├── 011_cron_without_sec.go │ │ │ │ ├── 012_rename_start_end_time.go │ │ │ │ ├── 013_fix_v31_registries.go │ │ │ │ ├── 014_remove_old_migrations_of_v1.go │ │ │ │ ├── 015_add_org_agents.go │ │ │ │ ├── 016_add_custom_labels_to_agent.go │ │ │ │ ├── 017_split_trusted.go │ │ │ │ ├── 018_fix_orgs_users_match.go │ │ │ │ ├── 019_gated_to_require_approval.go │ │ │ │ ├── 020_remove_repo_netrc_only_trusted.go │ │ │ │ ├── 021_rename_token_fields.go │ │ │ │ ├── 022_set_new_defaults_for_require_approval.go │ │ │ │ ├── 023_remove_repo_scm.go │ │ │ │ ├── 024_unsanitize_org_and_user_names.go │ │ │ │ ├── 025_fix_zero_forge_id_ref.go │ │ │ │ ├── 026_fix_forge_columns.go │ │ │ │ ├── 027_add_cron_field.go │ │ │ │ ├── common.go │ │ │ │ ├── common_test.go │ │ │ │ ├── logger.go │ │ │ │ ├── migration.go │ │ │ │ ├── migration_test.go │ │ │ │ └── test-files/ │ │ │ │ ├── .gitignore │ │ │ │ └── postgres.sql │ │ │ ├── org.go │ │ │ ├── org_test.go │ │ │ ├── permission.go │ │ │ ├── permission_test.go │ │ │ ├── pipeline.go │ │ │ ├── pipeline_test.go │ │ │ ├── redirection.go │ │ │ ├── redirection_test.go │ │ │ ├── registry.go │ │ │ ├── registry_test.go │ │ │ ├── repo.go │ │ │ ├── repo_test.go │ │ │ ├── secret.go │ │ │ ├── secret_test.go │ │ │ ├── server_config.go │ │ │ ├── server_config_test.go │ │ │ ├── step.go │ │ │ ├── step_test.go │ │ │ ├── task.go │ │ │ ├── task_test.go │ │ │ ├── user.go │ │ │ ├── user_test.go │ │ │ ├── workflow.go │ │ │ ├── workflow_test.go │ │ │ └── xorm.go │ │ ├── mocks/ │ │ │ └── mock_Store.go │ │ ├── store.go │ │ └── types/ │ │ └── errors.go │ └── web/ │ ├── config.go │ ├── web.go │ └── web_test.go ├── shared/ │ ├── constant/ │ │ └── constant.go │ ├── httputil/ │ │ ├── http_error.go │ │ ├── http_error_test.go │ │ ├── httputil.go │ │ ├── useragent.go │ │ └── useragent_test.go │ ├── logger/ │ │ ├── addon_logger.go │ │ ├── logger.go │ │ └── terminal.go │ ├── optional/ │ │ ├── option.go │ │ ├── option_test.go │ │ ├── serialization.go │ │ ├── serialization_json_test.go │ │ ├── serialization_test.go │ │ └── serialization_yaml_test.go │ ├── token/ │ │ ├── token.go │ │ └── token_test.go │ └── utils/ │ ├── context.go │ ├── paginate.go │ ├── paginate_test.go │ ├── protected.go │ ├── slices.go │ ├── slices_test.go │ ├── strings.go │ └── strings_test.go ├── tools/ │ └── tools.go ├── version/ │ └── version.go ├── web/ │ ├── .gitignore │ ├── .prettierignore │ ├── .prettierrc.js │ ├── .yamlignore │ ├── LICENSE │ ├── components.d.ts │ ├── eslint.config.js │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── assets/ │ │ │ └── locales/ │ │ │ ├── bar.json │ │ │ ├── cs.json │ │ │ ├── de.json │ │ │ ├── en.json │ │ │ ├── eo.json │ │ │ ├── es.json │ │ │ ├── fi.json │ │ │ ├── fr.json │ │ │ ├── hu.json │ │ │ ├── id.json │ │ │ ├── it.json │ │ │ ├── lv.json │ │ │ ├── nb-NO.json │ │ │ ├── nl.json │ │ │ ├── pl.json │ │ │ ├── pt.json │ │ │ ├── ru.json │ │ │ ├── uk.json │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ ├── components/ │ │ │ ├── FileTree.vue │ │ │ ├── admin/ │ │ │ │ └── settings/ │ │ │ │ ├── forges/ │ │ │ │ │ └── AdminForgeForm.vue │ │ │ │ └── queue/ │ │ │ │ └── AdminQueueStats.vue │ │ │ ├── agent/ │ │ │ │ ├── AgentForm.vue │ │ │ │ ├── AgentList.vue │ │ │ │ └── AgentManager.vue │ │ │ ├── atomic/ │ │ │ │ ├── Badge.vue │ │ │ │ ├── Button.vue │ │ │ │ ├── CountBadge.vue │ │ │ │ ├── DocsLink.vue │ │ │ │ ├── Error.vue │ │ │ │ ├── Icon.vue │ │ │ │ ├── IconButton.vue │ │ │ │ ├── ListItem.vue │ │ │ │ ├── RenderMarkdown.vue │ │ │ │ ├── SvgIcon.vue │ │ │ │ ├── SyntaxHighlight.ts │ │ │ │ └── Warning.vue │ │ │ ├── form/ │ │ │ │ ├── Checkbox.vue │ │ │ │ ├── CheckboxesField.vue │ │ │ │ ├── InputField.vue │ │ │ │ ├── KeyValueEditor.vue │ │ │ │ ├── NumberField.vue │ │ │ │ ├── RadioField.vue │ │ │ │ ├── SelectField.vue │ │ │ │ ├── TextField.vue │ │ │ │ └── form.types.ts │ │ │ ├── layout/ │ │ │ │ ├── Container.vue │ │ │ │ ├── Panel.vue │ │ │ │ ├── Popup.vue │ │ │ │ ├── Settings.vue │ │ │ │ ├── header/ │ │ │ │ │ ├── ActivePipelines.vue │ │ │ │ │ └── Navbar.vue │ │ │ │ ├── popups/ │ │ │ │ │ └── DeployPipelinePopup.vue │ │ │ │ └── scaffold/ │ │ │ │ ├── Header.vue │ │ │ │ ├── Scaffold.vue │ │ │ │ ├── Tab.vue │ │ │ │ └── Tabs.vue │ │ │ ├── pipeline-feed/ │ │ │ │ ├── PipelineFeedItem.vue │ │ │ │ └── PipelineFeedSidebar.vue │ │ │ ├── registry/ │ │ │ │ ├── RegistryEdit.vue │ │ │ │ └── RegistryList.vue │ │ │ ├── repo/ │ │ │ │ ├── RepoItem.vue │ │ │ │ └── pipeline/ │ │ │ │ ├── PipelineItem.vue │ │ │ │ ├── PipelineList.vue │ │ │ │ ├── PipelineLog.vue │ │ │ │ ├── PipelineRunningIcon.vue │ │ │ │ ├── PipelineStatusIcon.vue │ │ │ │ ├── PipelineStepDuration.vue │ │ │ │ ├── PipelineStepList.vue │ │ │ │ └── pipeline-status.ts │ │ │ └── secrets/ │ │ │ ├── SecretEdit.vue │ │ │ └── SecretList.vue │ │ ├── compositions/ │ │ │ ├── useApiClient.ts │ │ │ ├── useAsyncAction.ts │ │ │ ├── useAuthentication.ts │ │ │ ├── useConfig.ts │ │ │ ├── useDate.ts │ │ │ ├── useElapsedTime.ts │ │ │ ├── useEvents.ts │ │ │ ├── useFavicon.ts │ │ │ ├── useForgeStore.ts │ │ │ ├── useI18n.ts │ │ │ ├── useInjectProvide.ts │ │ │ ├── useInterval.ts │ │ │ ├── useNotifications.ts │ │ │ ├── usePaginate.test.ts │ │ │ ├── usePaginate.ts │ │ │ ├── usePipeline.ts │ │ │ ├── usePipelineFeed.ts │ │ │ ├── useRepoSearch.ts │ │ │ ├── useRepos.ts │ │ │ ├── useRouteBack.ts │ │ │ ├── useTabs.ts │ │ │ ├── useTheme.ts │ │ │ ├── useUserConfig.ts │ │ │ ├── useVersion.ts │ │ │ └── useWPTitle.ts │ │ ├── lib/ │ │ │ ├── api/ │ │ │ │ ├── client.ts │ │ │ │ ├── index.ts │ │ │ │ └── types/ │ │ │ │ ├── agent.ts │ │ │ │ ├── cron.ts │ │ │ │ ├── forge.ts │ │ │ │ ├── index.ts │ │ │ │ ├── org.ts │ │ │ │ ├── pipeline.ts │ │ │ │ ├── pipelineConfig.ts │ │ │ │ ├── pull_request.ts │ │ │ │ ├── queue.ts │ │ │ │ ├── registry.ts │ │ │ │ ├── repo.ts │ │ │ │ ├── secret.ts │ │ │ │ ├── user.ts │ │ │ │ └── webhook.ts │ │ │ ├── utils/ │ │ │ │ └── index.ts │ │ │ └── utils.test.ts │ │ ├── main.ts │ │ ├── router.ts │ │ ├── store/ │ │ │ ├── pipelines.ts │ │ │ └── repos.ts │ │ ├── style/ │ │ │ ├── console.css │ │ │ └── prism.css │ │ ├── style.css │ │ ├── tailwind.css │ │ ├── views/ │ │ │ ├── Login.vue │ │ │ ├── NotFound.vue │ │ │ ├── RepoAdd.vue │ │ │ ├── Repos.vue │ │ │ ├── RouterView.vue │ │ │ ├── admin/ │ │ │ │ ├── AdminAgents.vue │ │ │ │ ├── AdminInfo.vue │ │ │ │ ├── AdminOrgs.vue │ │ │ │ ├── AdminQueue.vue │ │ │ │ ├── AdminRegistries.vue │ │ │ │ ├── AdminRepos.vue │ │ │ │ ├── AdminSecrets.vue │ │ │ │ ├── AdminSettingsWrapper.vue │ │ │ │ ├── AdminUsers.vue │ │ │ │ └── forges/ │ │ │ │ ├── AdminForge.vue │ │ │ │ ├── AdminForgeCreate.vue │ │ │ │ └── AdminForges.vue │ │ │ ├── cli/ │ │ │ │ └── Auth.vue │ │ │ ├── org/ │ │ │ │ ├── OrgDeprecatedRedirect.vue │ │ │ │ ├── OrgRepos.vue │ │ │ │ ├── OrgWrapper.vue │ │ │ │ └── settings/ │ │ │ │ ├── OrgAgents.vue │ │ │ │ ├── OrgRegistries.vue │ │ │ │ ├── OrgSecrets.vue │ │ │ │ └── OrgSettingsWrapper.vue │ │ │ ├── repo/ │ │ │ │ ├── RepoBranch.vue │ │ │ │ ├── RepoBranches.vue │ │ │ │ ├── RepoDeprecatedRedirect.vue │ │ │ │ ├── RepoManualPipeline.vue │ │ │ │ ├── RepoPipelines.vue │ │ │ │ ├── RepoPullRequest.vue │ │ │ │ ├── RepoPullRequests.vue │ │ │ │ ├── RepoWrapper.vue │ │ │ │ ├── pipeline/ │ │ │ │ │ ├── Pipeline.vue │ │ │ │ │ ├── PipelineChangedFiles.vue │ │ │ │ │ ├── PipelineConfig.vue │ │ │ │ │ ├── PipelineDebug.vue │ │ │ │ │ ├── PipelineErrors.vue │ │ │ │ │ └── PipelineWrapper.vue │ │ │ │ └── settings/ │ │ │ │ ├── Actions.vue │ │ │ │ ├── Badge.vue │ │ │ │ ├── Crons.vue │ │ │ │ ├── Extensions.vue │ │ │ │ ├── General.vue │ │ │ │ ├── Registries.vue │ │ │ │ ├── RepoSettings.vue │ │ │ │ └── Secrets.vue │ │ │ └── user/ │ │ │ ├── UserAgents.vue │ │ │ ├── UserCLIAndAPI.vue │ │ │ ├── UserGeneral.vue │ │ │ ├── UserRegistries.vue │ │ │ ├── UserSecrets.vue │ │ │ └── UserWrapper.vue │ │ └── vite-env.d.ts │ ├── tsconfig.json │ ├── vite.config.ts │ ├── web.go │ └── web_external.go └── woodpecker-go/ ├── LICENSE ├── README.md └── woodpecker/ ├── agent.go ├── agent_test.go ├── client.go ├── client_test.go ├── const.go ├── global_registry.go ├── global_secret.go ├── httputil/ │ ├── useragent.go │ └── useragent_test.go ├── interface.go ├── list_options.go ├── list_options_test.go ├── mocks/ │ └── mock_Client.go ├── org.go ├── pipeline.go ├── queue.go ├── queue_test.go ├── repo.go ├── repo_test.go ├── types.go ├── user.go └── user_test.go