harness/harness

GitHub: harness/harness

一站式开源 DevOps 平台,整合代码托管、CI/CD 流水线、云端开发环境和制品仓库四大核心能力,支持私有化部署。

Stars: 34181 | Forks: 2918

# Harness Harness Open Source 是一个开源开发平台,集成了代码托管、自动化 DevOps 流水线、托管开发环境 和 artifact registries 的强大功能。 ## 概述 Harness Open Source 是一个开源开发平台,集成了代码托管、自动化 DevOps 流水线、Gitspaces 和 artifact registries 的强大功能。 ## 本地运行 Harness 要自行安装 Harness,只需运行以下命令。容器启动后,您可以在浏览器中访问 http://localhost:3000。 ``` docker run -d \ -p 3000:3000 \ -p 3022:3022 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /tmp/harness:/data \ --name harness \ --restart always \ harness/harness ``` 请参阅 [developer.harness.io](https://developer.harness.io/docs/open-source) 以了解如何充分利用 Harness。 ## Drone 在哪里? Harness Open Source 代表了对下一代 Drone 的巨大投入。Drone 仅专注于持续集成,而 Harness 增加了源代码托管、开发环境 和 artifact registries,为团队提供了一个端到端的开源 DevOps 平台。 我们的目标是让 Harness 在流水线能力上最终与 Drone 完全对等,从而允许用户从 Drone 无缝迁移到 Harness。 但是,我们预计这需要一些时间,这也是我们将 Drone 的快照作为一个功能分支 [drone](https://github.com/harness/harness/tree/drone) ([README](https://github.com/harness/harness/blob/drone/.github/readme.md)) 保留的原因,以便其能够继续开发。 至于 Harness,开发工作正在 [main](https://github.com/harness/harness/tree/main) 分支上进行。 有关 Harness 的更多信息,请访问 [developer.harness.io](https://developer.harness.io/)。 有关 Drone 的更多信息,请访问 [drone.io](https://www.drone.io/)。 ## Harness Open Source 开发 ### 前置条件 安装最新稳定版本的 Node 和 Go 1.20 或更高版本,然后安装以下 Go 程序。确保 GOPATH [bin 目录](https://go.dev/doc/gopath_code#GOPATH) 已添加到您的 PATH 中。 安装 protobuf - 检查您是否已安装 protobuf ```protoc --version``` - 如果您的版本不是 v3.21.11,请运行 ```brew unlink protobuf``` - 获取 v3.21.11 ```curl -s https://raw.githubusercontent.com/Homebrew/homebrew-core/9de8de7a533609ebfded833480c1f7c05a3448cb/Formula/protobuf.rb > /tmp/protobuf.rb``` - 安装它 ```brew install /tmp/protobuf.rb``` - 检查您的版本 ```protoc --version``` 安装 protoc-gen-go 和 protoc-gen-go-rpc: - 安装 protoc-gen-go v1.28.1 ```go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1``` (请注意,这将在 $GOBIN 中安装二进制文件,因此请确保 $GOBIN 在您的 $PATH 中) - 安装 protoc-gen-go-grpc v1.2.0 ```go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2.0``` ``` $ make dep $ make tools ``` ### 构建 第一步是构建用户界面 artifacts: ``` $ pushd web $ yarn install $ yarn build $ popd ``` 之后,您可以构建 Harness 二进制文件: ``` $ make build ``` ### 运行 该项目支持 Go 支持的所有操作系统和架构。这意味着您可以在您的机器上构建和运行系统;本地开发和测试不需要 Docker 容器。 要在 `localhost:3000` 启动服务器,只需运行以下命令: ``` ./gitness server .local.env ``` ### 用于流水线的 Docker 配置 Harness 流水线在 Docker 容器内运行。应用程序会自动与您的 Docker 守护进程协商 Docker API 版本,因此它适用于各种 Docker 版本,包括 Docker Desktop、Rancher Desktop、Colima 和 Linux 上的原生 Docker。 **Docker Socket 位置** 默认情况下,Harness 期望 Docker socket 位于 `/var/run/docker.sock`。如果您使用的是替代 Docker 运行时,可能需要配置 socket 位置: | 运行时 | Socket 位置 | 配置 | |---------|-----------------|---------------| | Docker Desktop | `/var/run/docker.sock` | 默认即可工作 | | Rancher Desktop | `~/.rd/docker.sock` | 创建符号链接或设置 `GITNESS_DOCKER_HOST` | | Colima | `~/.colima/default/docker.sock` | 创建符号链接或设置 `GITNESS_DOCKER_HOST` | | Linux (native) | `/var/run/docker.sock` | 默认即可工作 | **选项 1:创建符号链接(推荐)** ``` # For Rancher Desktop sudo ln -sf ~/.rd/docker.sock /var/run/docker.sock # For Colima sudo ln -sf ~/.colima/default/docker.sock /var/run/docker.sock ``` **选项 2:设置环境变量** 添加到您的 `.local.env`: ``` # For Rancher Desktop GITNESS_DOCKER_HOST=unix:///Users//.rd/docker.sock # For Colima GITNESS_DOCKER_HOST=unix:///Users//.colima/default/docker.sock ``` **固定 Docker API 版本** 应用程序会自动与您的 Docker 守护进程协商 API 版本。如果您需要固定特定版本(例如,用于兼容性测试),您可以设置: ``` GITNESS_DOCKER_API_VERSION=1.45 ``` ### 使用 Swagger 自动生成 UI 使用的 Harness API 客户端 在添加新的 REST API 时,请务必更新 UI 使用的自动生成客户端代码。 要重新生成代码,请执行以下步骤: - 使用最新的 Harness 二进制文件重新生成 swagger `./gitness swagger > web/src/services/code/swagger.yaml` - 导航到 `web` 文件夹并运行 `yarn services` 最新的 API 更改现在应该反映在 `web/src/services/code/index.tsx` 中 # 运行 Registry 一致性测试 ``` make conformance-test ``` 要对现有运行服务运行一致性测试,请使用: ``` make hot-conformance-test ``` ## 用户界面 该项目包含一个用于与系统交互的完整用户界面。运行应用程序时,您可以通过在浏览器中导航到 `http://localhost:3000` 来访问用户界面。 ## REST API 该项目包含一个 swagger 规范。运行应用程序时,您可以通过在浏览器中导航到 `http://localhost:3000/swagger` 来访问 swagger 规范(原始 yaml 请参见 `http://localhost:3000/openapi.yaml`)。 对于 registry 端点,当前 swagger 位于不同的端点 `http://localhost:3000/registry/swagger/`(原始 json 请参见 `http://localhost:3000/registry/swagger.json`)。这些稍后将移至主 swagger 端点。 为了进行测试,最简单的方法是直接使用 CLI 创建令牌(这需要 Harness 服务器运行): ``` # LOGIN (user: admin, pw: changeit) $ ./gitness login # GENERATE PAT (1 YEAR VALIDITY) $ ./gitness user pat "my-pat-uid" 2592000 ``` 该命令输出一个已被授予用户完全访问权限的有效 PAT。 然后可以将该令牌作为 `Authorization` 标头的一部分通过 Postman 或 curl 发送: ``` $ curl http://localhost:3000/api/v1/user \ -H "Authorization: Bearer $TOKEN" ``` ## CLI 该项目包含用于开发和运行服务的非常基础的命令行工具。请记住,在执行命令之前必须启动服务器。 有关支持的操作的完整列表,请参阅 ``` $ ./gitness --help ``` ## 贡献 请参阅 [CONTRIBUTING.md](https://github.com/harness/harness/blob/main/CONTRIBUTING.md) ## 许可证 Apache License 2.0,请参阅 [LICENSE](https://github.com/harness/harness/blob/main/LICENSE)。
标签:Artifact Registries, CICD, Cloud Native, DevOps平台, Docker, Drone, EVTX分析, Git, Gitspaces, MITM代理, NIDS, Python工具, SCM, Software Engineering, 代码托管, 制品库, 威胁情报, 安全防御评估, 容器化, 开发环境, 开发者工具, 开源, 开源框架, 持续部署, 持续集成, 文档安全, 日志审计, 流水线, 源代码管理, 端到端平台, 网络测绘, 网络调试, 自动化, 请求拦截