134 lines
5.2 KiB
Markdown
134 lines
5.2 KiB
Markdown
# Gitness
|
|
Gitness is an open source development platform packed with the power of code hosting and automated DevOps pipelines.
|
|
|
|
## Overview
|
|
Gitness is an open source development platform packed with the power of code hosting and automated continuous integration pipelines.
|
|
|
|
## Running Gitness locally
|
|
> The latest publicly released docker image can be found on [harness/gitness](https://hub.docker.com/r/harness/gitness).
|
|
|
|
To install Gitness yourself, simply run the command below. Once the container is up, you can visit http://localhost:3000 in your browser.
|
|
|
|
```bash
|
|
docker run -d \
|
|
-p 3000:3000 \
|
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
|
-v /tmp/gitness:/data \
|
|
--name gitness \
|
|
--restart always \
|
|
harness/gitness
|
|
```
|
|
> The Gitness image uses a volume to store the database and repositories. It is highly recommended to use a bind mount or named volume as otherwise all data will be lost once the container is stopped.
|
|
|
|
See [docs.gitness.com](https://docs.gitness.com) to learn how to get the most out of Gitness.
|
|
|
|
## Where is Drone?
|
|
|
|
Gitness represents a massive investment in the next generation of Drone. Where Drone focused on continuous integration, Gitness adds source code hosting, bringing code management and pipelines closer together.
|
|
|
|
The goal is for Gitness to eventually be at full parity with Drone in terms of pipeline capabilities, allowing users to seemlessly migrate from Drone to Gitness.
|
|
|
|
But, we expect this to take some time, which is why we took a snapshot of Drone as a feature branch [drone](https://github.com/harness/gitness/tree/drone) ([README](https://github.com/harness/gitness/blob/drone/.github/readme.md)) so it can continue development.
|
|
|
|
As for Gitness, the development is taking place on the [main](https://github.com/harness/gitness/tree/main) branch.
|
|
|
|
For more information on Gitness, please visit [gitness.com](https://gitness.com/).
|
|
|
|
For more information on Drone, please visit [drone.io](https://www.drone.io/).
|
|
|
|
## Gitness Development
|
|
### Pre-Requisites
|
|
|
|
Install the latest stable version of Node and Go version 1.20 or higher, and then install the below Go programs. Ensure the GOPATH [bin directory](https://go.dev/doc/gopath_code#GOPATH) is added to your PATH.
|
|
|
|
Install protobuf
|
|
- Check if you've already installed protobuf ```protoc --version```
|
|
- If your version is different than v3.21.11, run ```brew unlink protobuf```
|
|
- Get v3.21.11 ```curl -s https://raw.githubusercontent.com/Homebrew/homebrew-core/9de8de7a533609ebfded833480c1f7c05a3448cb/Formula/protobuf.rb > /tmp/protobuf.rb```
|
|
- Install it ```brew install /tmp/protobuf.rb```
|
|
- Check out your version ```protoc --version```
|
|
|
|
Install protoc-gen-go and protoc-gen-go-rpc:
|
|
|
|
- Install protoc-gen-go v1.28.1 ```go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1```
|
|
(Note that this will install a binary in $GOBIN so make sure $GOBIN is in your $PATH)
|
|
|
|
- Install protoc-gen-go-grpc v1.2.0 ```go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2.0```
|
|
|
|
```bash
|
|
$ make dep
|
|
$ make tools
|
|
```
|
|
|
|
### Build
|
|
|
|
First step is to build the user interface artifacts:
|
|
|
|
```bash
|
|
$ pushd web
|
|
$ yarn install
|
|
$ yarn build
|
|
$ popd
|
|
```
|
|
|
|
After that, you can build the gitness binary:
|
|
|
|
```bash
|
|
$ make build
|
|
```
|
|
|
|
### Run
|
|
|
|
This project supports all operating systems and architectures supported by Go. This means you can build and run the system on your machine; docker containers are not required for local development and testing.
|
|
|
|
To start the server at `localhost:3000`, simply run the following command:
|
|
|
|
```bash
|
|
./gitness server .local.env
|
|
```
|
|
|
|
### Auto-Generate Gitness API Client used by UI using Swagger
|
|
Please make sure to update the autogenerated client code used by the UI when adding new rest APIs.
|
|
|
|
To regenerate the code, please execute the following steps:
|
|
- Run local gitness instance with latest changes
|
|
- Get latest OpenAPI specs from `http://localhost:3000/openapi.yaml` and store it in `web/src/services/code/swagger.yaml`
|
|
- navigate into the `web` folder and run `yarn services`
|
|
|
|
The latest API changes should now be reflected in `web/src/services/code/index.tsx`
|
|
|
|
|
|
## User Interface
|
|
|
|
This project includes a full user interface for interacting with the system. When you run the application, you can access the user interface by navigating to `http://localhost:3000` in your browser.
|
|
|
|
## REST API
|
|
|
|
This project includes a swagger specification. When you run the application, you can access the swagger specification by navigating to `http://localhost:3000/swagger` in your browser (for raw yaml see `http://localhost:3000/openapi.yaml`).
|
|
|
|
|
|
For testing, it's simplest to just use the cli to create a token (this requires gitness server to run):
|
|
```bash
|
|
# LOGIN (user: admin, pw: changeit)
|
|
$ ./gitness login
|
|
|
|
# GENERATE PAT (1 YEAR VALIDITY)
|
|
$ ./gitness user pat "my-pat-uid" 2592000
|
|
```
|
|
|
|
The command outputs a valid PAT that has been granted full access as the user.
|
|
The token can then be send as part of the `Authorization` header with Postman or curl:
|
|
|
|
```bash
|
|
$ curl http://localhost:3000/api/v1/user \
|
|
-H "Authorization: Bearer $TOKEN"
|
|
```
|
|
|
|
|
|
## CLI
|
|
This project includes VERY basic command line tools for development and running the service. Please remember that you must start the server before you can execute commands.
|
|
|
|
For a full list of supported operations, please see
|
|
```bash
|
|
$ ./gitness --help
|
|
``` |