mirror of
https://github.com/openziti/ziti.git
synced 2026-10-11 23:12:35 +00:00
81 lines
2.7 KiB
Markdown
81 lines
2.7 KiB
Markdown
# Overview
|
|
|
|
This local development README guides you to install the Ziti stack built from the currently checked out source branch in this repo without any downloads, containers, scripts, or magic.
|
|
|
|
## Minimum Go Version
|
|
|
|
You will need to [install a version of Go](https://go.dev/) that is as recent as the version used by this project. Find the current minimum version by running this command to inspect `go.mod`.
|
|
|
|
```bash
|
|
grep -Po '^go\s+\K\d+\.\d+(\.\d+)?$' go.mod
|
|
```
|
|
|
|
## Build and Install All Applications
|
|
|
|
This repo contains several Go applications, e.g. ziti-controller, ziti-router. These applications were reorganized as subcommands of the `ziti` CLI application, so it's no longer necessary to build the discrete binaries. Only the `ziti` CLI is necessary. The easiest way to build and install `ziti` in `${GOPATH}/bin` is:
|
|
|
|
```bash
|
|
# build and install ziti CLI
|
|
go install ./ziti
|
|
```
|
|
|
|
If you add `${GOPATH}/bin` to your executable search `${PATH}` then you may immediately run the newly-built binaries. For example,
|
|
|
|
```bash
|
|
$ ziti version
|
|
NAME VERSION
|
|
ziti v0.0.0
|
|
ziti-controller not installed
|
|
ziti-prox-c not installed
|
|
ziti-router not installed
|
|
ziti-tunnel not installed
|
|
ziti-edge-tunnel v0.20.18-local
|
|
```
|
|
|
|
## Build ziti CLI
|
|
|
|
```bash
|
|
# build the binary without installing in GOPATH
|
|
go build -o ./build/ziti ./ziti/
|
|
# execute the binary
|
|
./build/ziti version
|
|
```
|
|
|
|
## Run a Local Ziti Stack
|
|
|
|
Let's get a local Ziti stack up and running now that you have built and installed all the Ziti apps in this repo.
|
|
|
|
### Initialize the Go Workspace
|
|
|
|
This is optional. You may skip initializing a Go workspace if you use release builds from other Go modules that this project depends upon e.g. `openziti/edge`, `openziti/fabric`.
|
|
|
|
A Go workspace is the best way to use the checked out copy of other modules' source instead of downloading releases from GitHub.
|
|
|
|
For each Ziti module you wish to develop (modify) you will need to add it to your workspace.
|
|
|
|
For this example, we'll only add the `edge` module.
|
|
|
|
```bash
|
|
go work init
|
|
go work use .
|
|
go work use ../edge # assumes openziti/edge is checked out in sibling dir "edge"
|
|
```
|
|
|
|
This produces a `go.work` file.
|
|
|
|
```bash
|
|
$ cat go.work
|
|
go 1.19
|
|
|
|
use (
|
|
.
|
|
../edge
|
|
)
|
|
```
|
|
|
|
You will need to be aware of the checked out revision in each module because it is used to satisfy imports at a higher precedence than pinned versions in `go.mod`. That is, you may change the version of `edge` that is imported by this module at build time by checking out a different version in the adjacent `edge` repo.
|
|
|
|
## Further Exploration
|
|
|
|
Continue your OpenZiti exploration in [the next article about running an OpenZiti stack locally for development](./003-local-deploy.md).
|