harness

Harness Open Source is an end-to-end developer platform with Source Control Management, CI/CD Pipelines, Hosted Developer Environments, and Artifact Registries.

CI/CDCircleCIの代替Travis CIの代替Apache-2.0
34,201 スター2,922 フォーク
AIによる要約
ひとことで言うと

コードの管理から自動化された開発作業、成果物の保管まで、ソフトウェア開発に必要な機能をひとつにまとめたオープンソースの開発基盤プラットフォームです。

こんな方におすすめ

・企業:社内の開発環境を自社サーバーで一元管理したい場合に、コード管理・自動テスト・ビルド・成果物の保管をひとつのツールで完結でき、システム管理コストの削減と情報漏洩リスクの低減が期待できます。 ・スタートアップ:少人数チームで開発を立ち上げる際に、複数のツールを契約・連携する手間なく、一つのプラットフォームで開発フロー全体を素早く整備でき、初期コストを大幅に抑えられます。 ・個人事業主・フリーランス:クライアントへ納品するシステムの開発環境を自分で用意したい場合に、無料で本格的な開発管理環境を手元のパソコン上に構築でき、月額費用ゼロで品質の高い開発体制を整えられます。

有料サービスとの違い

GitHubやGitLabなどの有料クラウドサービスと異なり、自分のサーバー上で完全に運用できるため、データを外部に預けることなく利用でき、ユーザー数や利用量に応じた追加費用も発生しません。コマンド一行で起動できるシンプルさも、導入のハードルを下げる大きな利点です。

ハーネス

Harness Open Sourceは、コードホスティング、自動化されたDevOpsパイプライン、ホストされた開発環境(Gitspaces)、アーティファクトレジストリのパワーを詰め込んだオープンソースの開発プラットフォームです。

概要

Harness Open Sourceは、コードホスティング、自動化されたDevOpsパイプライン、Gitspaces、アーティファクトレジストリのパワーを詰め込んだオープンソースの開発プラットフォームです。

ローカルで Harness を動かす

最新の公開 docker イメージは harness/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 ┣ -v /tmp/harness:/data --ハーネス --restart always ハーネス/ハーネス

> Harnessイメージは、データベースとリポジトリを格納するボリュームを使用します。バインドマウントまたは名前付きボリュームを使用することを強く推奨します。そうしないと、コンテナを停止した時点ですべてのデータが失われるためです。

Harnessを最大限に活用する方法については[developer.harness.io](https://developer.harness.io/docs/open-source)を参照。

## Droneはどこにある?

Harness Open Sourceは、次世代のDroneへの大規模な投資を意味する。Droneが継続的インテグレーションのみにフォーカスしていたのに対し、Harnessはソースコードホスティング、開発者環境(gitspaces)、成果物レジストリを追加し、チームにエンドツーエンドのオープンソース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 オープンソース開発
### 前提条件

最新の安定版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
ツールを作る

ビルド

最初のステップは、ユーザーインターフェースの成果物をビルドすることだ:

``bash $ pushd web yarn install yarn build $ popd


これでHarnessのバイナリをビルドできる:

bash
make build

実行する

このプロジェクトは、Goがサポートするすべてのオペレーティング・システムとアーキテクチャをサポートしています。 つまり、あなたのマシン上でシステムをビルドして実行することができます。ローカルでの開発やテストには docker コンテナは必要ありません。

localhost:3000`でサーバーを起動するには、以下のコマンドを実行するだけです:

bash ./gitness server .local.env


### パイプライン用のDocker構成

HarnessパイプラインはDockerコンテナ内で実行されます。このアプリケーションはDocker APIバージョンをDockerデーモンと自動的にネゴシエートするため、Docker Desktop、Rancher Desktop、Colima、Linux上のネイティブDockerなど、様々なDockerバージョンで動作します。

**Dockerソケットの場所

デフォルトでは、Harnessは`/var/run/docker.sock`にDockerソケットを想定しています。他のDockerランタイムを使用している場合は、ソケットの場所を設定する必要があります:

| ランタイム│ソケットの場所│設定│」を参照してください。
|---------|-----------------|---------------|
| Docker Desktop | `/var/run/docker.sock` | デフォルトで動作します。
| Rancher Desktop | `~/.rd/docker.sock` | シンボリックリンクを作成するか `GITNESS_DOCKER_HOST` を設定する。
| Colima | `~/.colima/default/docker.sock` | シンボリックリンクを作成するか `GITNESS_DOCKER_HOST` を設定する。
| Linux (ネイティブ) | `/var/run/docker.sock` | デフォルトで動作する。

**オプション1: シンボリックリンクを作成する(推奨)***| ``bash_docker.sock`` を実行する。
``bash
# Rancher デスクトップの場合
sudo ln -sf ~/.rd/docker.sock /var/run/docker.sock

# コリマの場合
sudo ln -sf ~/.colima/default/docker.sock /var/run/docker.sock

**オプション2:環境変数を設定する。

.local.env`に追加します: bash

Rancherデスクトップの場合

GITNESS_DOCKER_HOST=unix:///Users//.rd/docker.sock

Colima の場合

GITNESS_DOCKER_HOST=unix:///Users//.colima/default/docker.sock


**Docker API バージョンをピン留めする**。

アプリケーションは自動的にDockerデーモンとAPIバージョンをネゴシエートします。特定のバージョンをピン留めする必要がある場合(互換性テストのためなど)は、以下のように設定します:
bash
gitness_docker_api_version=1.45

Swaggerを使用してUIで使用するハーネスAPIクライアントを自動生成する

新しいレストAPIを追加する際は、UIが使用する自動生成クライアントコードを必ず更新してください。

コードを再生成するには、以下の手順を実行してください:

  • 最新のHarnessバイナリ./gitness swagger > web/src/services/code/swagger.yamlでswaggerを再生成します。
  • web フォルダに移動し、yarn services` を実行します。

最新のAPIの変更が web/src/services/code/index.tsx に反映されているはずです。

レジストリの適合性テストを実行する

適合性テストを行う

既存の実行中のサービスでコンフォーマンステストを実行するには、次のようにする:

make hot-conformance-test

ユーザーインターフェース

このプロジェクトには、システムと対話するための完全なユーザーインターフェースが含まれています。アプリケーションを実行すると、ブラウザで http://localhost:3000 に移動することでユーザーインターフェースにアクセスできます。

REST API

このプロジェクトにはswagger仕様が含まれています。アプリケーションを実行する際には、ブラウザでhttp://localhost:3000/swaggerに移動することでswagger仕様にアクセスすることができます(生のyamlについてはhttp://localhost:3000/openapi.yamlを参照してください)。 レジストリのエンドポイントについては、現在swaggerは別のエンドポイントhttp://localhost:3000/registry/swagger/に配置されている(生のjsonについてはhttp://localhost:3000/registry/swagger.jsonを参照)。これらは後にメインのswaggerエンドポイントに移動する予定です。

テストには、cliを使用してトークンを作成するのが最も簡単です(これにはHarnessサーバの実行が必要です): バッシュ

LOGIN (user: admin, pw: changeit)

./gitness ログイン

patを生成する(1年間有効)

./gitness user pat "my-pat-uid" 2592000


このコマンドは、ユーザーとしてフルアクセスを許可された有効なPATを出力します。
このトークンはPostmanやcurlで`Authorization`ヘッダーの一部として送信することができます:

bash
$ curl http://localhost:3000/api/v1/user
-H "Authorization:ベアラ $TOKEN"

CLI

このプロジェクトには、サービスの開発と実行のための基本的なコマンドラインツールが含まれています。コマンドを実行する前にサーバーを起動する必要があることを覚えておいてください。

サポートされている操作の完全なリストについては、以下を参照してください。 バッシュ ./gitness --help


## 貢献する

[CONTRIBUTING.md](https://github.com/harness/harness/blob/main/CONTRIBUTING.md)を参照してください。

## ライセンス

Apacheライセンス2.0, [LICENSE](https://github.com/harness/harness/blob/main/LICENSE)を参照。