Skip to content
This repository has been archived by the owner on Dec 13, 2023. It is now read-only.

Commit

Permalink
Update logo in README and Swagger UI (#2990)
Browse files Browse the repository at this point in the history
Also remove duplicated content in README.
  • Loading branch information
peterlau authored May 17, 2022
1 parent 4fc986d commit b78ce49
Show file tree
Hide file tree
Showing 11 changed files with 91 additions and 217 deletions.
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[Code of Conduct](docs/docs/resources/contributing.md)
[Contributing](docs/docs/resources/contributing.md)
49 changes: 12 additions & 37 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
![Conductor](docs/docs/img/conductor-vector-x.png)
![Conductor](docs/docs/img/logo.png)


## Conductor
Conductor is a _workflow orchestration_ engine that runs in the cloud.
# Conductor
Conductor is a platform created by Netflix to orchestrate workflows that span across microservices.

[![Github release](https://img.shields.io/github/v/release/Netflix/conductor.svg)](https://GitHub.com/Netflix/conductor/releases)
[![CI](https://github.com/Netflix/conductor/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/Netflix/conductor/actions/workflows/ci.yml)
[![License](https://img.shields.io/github/license/Netflix/conductor.svg)](http://www.apache.org/licenses/LICENSE-2.0)
[![NetflixOSS Lifecycle](https://img.shields.io/osslifecycle/Netflix/conductor.svg)]()


## Documentation
[Main Documentation Site](http://conductor.netflix.com/)

## Releases
The latest version is [![Github release](https://img.shields.io/github/v/release/Netflix/conductor.svg)](https://GitHub.com/Netflix/conductor/releases)

Expand All @@ -19,43 +22,15 @@ The modules contributed by the community are housed at [conductor-community](htt

[Discussion Forum](https://github.com/Netflix/conductor/discussions) Please use the forum for questions and discussing ideas and join the community.

[Access here other Conductor related projects made by the community!](/RELATED.md) - Backup tool, Cron like workflow starter, Docker containers...
[List of Conductor community projects](/docs/docs/resources/related.md) - Backup tool, Cron like workflow starter, Docker containers...

## Getting Started - Building & Running Conductor
### Docker
The easiest way to get started is with Docker containers. Please follow the instructions [here](https://github.com/Netflix/conductor/tree/main/docker). The server and UI can also be built from source separately.

### Conductor Server From Source
Conductor Server is a [Spring Boot](https://spring.io/projects/spring-boot) project and follows all applicable conventions. First, ensure that Java JDK 11+ is installed.

#### Development
The server can be started locally by running `./gradlew bootRun` from the project root. This will start up Conductor with an in-memory persistence and queue implementation. It is not recommended for production use but can come in handy for quickly evaluating what Conductor's all about. For actual production use-cases, please use one of the supported persistence and queue implementations.

You can verify the development server is up by navigating to `http://localhost:8080` in a browser.

#### Production Build
Running `./gradlew build` from the project root builds the project into the `/build` directory. Note that Docker is a requirement for tests to run, and thus a requirement to build even if you are building
outside of a Docker container. If you do not have Docker installed you can run `./gradlew build -x test` to skip tests.
The easiest way to get started is with Docker containers. Please follow the instructions [here](https://conductor.netflix.com/gettingstarted/docker.html).

### From Source
Conductor Server is a [Spring Boot](https://spring.io/projects/spring-boot) project and follows all applicable conventions. See instructions [here](http://conductor.netflix.com/gettingstarted/source.html).

#### Pre-built JAR
A [pre-built](https://artifacts.netflix.net/netflixoss/com/netflix/conductor/conductor-server/) executable jar is available that can be downloaded and run using:

`java -jar conductor-server-*-boot.jar`

### Conductor UI from Source

The UI is a standard `create-react-app` React Single Page Application (SPA). To get started, with Node 14 and `yarn` installed, first run `yarn install` from within the `/ui` directory to retrieve package dependencies.

There is no need to "build" the project unless you require compiled assets to host on a production web server. If the latter is true, the project can be built with the command `yarn build`.

To run the UI on the bundled development server, run `yarn run start`. Navigate your browser to `http://localhost:5000`. The server must already be running on port 8080.


## Documentation
[Documentation](http://netflix.github.io/conductor/)
[Roadmap](https://github.com/Netflix/conductor/wiki/Roadmap)
[Getting Started Guide](https://netflix.github.io/conductor/gettingstarted/basicconcepts/).

## Published Artifacts
Binaries are available from [Netflix OSS Maven](https://artifacts.netflix.net/netflixoss/com/netflix/conductor/) repository, or the [Maven Central Repository](https://search.maven.org/search?q=g:com.netflix.conductor).
Expand Down Expand Up @@ -93,7 +68,7 @@ Binaries are available from [Netflix OSS Maven](https://artifacts.netflix.net/ne
* UI requires Node 14 to build. Earlier Node versions may work but is untested.

## Get Support
Conductor is maintained by Media Workflow Infrastructure team at Netflix. Use github issue tracking for filing issues and [Discussion Forum](https://github.com/Netflix/conductor/discussions) for any other questions, ideas or support requests.
Conductor is maintained by Media Workflow Infrastructure team at Netflix. Use Github issue tracking for filing issues and [Discussion Forum](https://github.com/Netflix/conductor/discussions) for any other questions, ideas or support requests.

## Contributions
Whether it is a small documentation correction, bug fix or new features, contributions are highly appreciated. We just ask to follow standard oss guidelines. [Discussion Forum](https://github.com/Netflix/conductor/discussions) is a good place to ask questions, discuss new features and explore ideas. Please check with us before spending too much time, only to find later that someone else is already working on a similar feature.
Expand Down
34 changes: 1 addition & 33 deletions annotations-processor/README.md
Original file line number Diff line number Diff line change
@@ -1,33 +1 @@
# Annotation Processor for Code Gen

- Original Author: Vicent Martí - https://github.com/vmg
- Original Repo: https://github.com/vmg/protogen

This module is strictly for code generation tasks during builds based on annotations.
Currently supports `protogen`

### Usage

See example below

### Example

This is an actual example of this module which is implemented in common/build.gradle

```groovy
task protogen(dependsOn: jar, type: JavaExec) {
classpath configurations.annotationsProcessorCodegen
main = 'com.netflix.conductor.annotationsprocessor.protogen.ProtoGenTask'
args(
"conductor.proto",
"com.netflix.conductor.proto",
"github.com/netflix/conductor/client/gogrpc/conductor/model",
"${rootDir}/grpc/src/main/proto",
"${rootDir}/grpc/src/main/java/com/netflix/conductor/grpc",
"com.netflix.conductor.grpc",
jar.archivePath,
"com.netflix.conductor.common",
)
}
```

[Annotations Processor](docs/docs/reference-docs/annotations-processor.md)
97 changes: 1 addition & 96 deletions docker/README.md
Original file line number Diff line number Diff line change
@@ -1,96 +1 @@
# Docker
## Getting Started with Docker Compose
The easiest way to start experimenting with Conductor is via `docker-compose`.
```
cd docker
docker-compose build
docker-compose up
```

This default docker compose build establishes 3 services each running in its own container
* Elasticsearch
* Conductor Server
* Conductor UI

The UI can be accessed by pointing your browser to `http://localhost:5000/`
The Server API is accessible at `http://localhost:8080/`

### Alternative Persistence Engines
By default `docker-compose.yaml` uses `config-local.properties`. This configures the `memory` database, where data is lost when the server terminates. This configuration is useful for testing or demo only.

A selection of `docker-compose-*.yaml` and `config-*.properties` files are provided demonstrating the use of alternative persistence engines.

For example this will start the server instance backed by a PostgreSQL DB.
```
docker-compose -f docker-compose.yaml -f docker-compose-postgres.yaml up
```

### Exiting Compose
`Ctrl+c` will exit docker compose.

To ensure images are stopped execute: `docker-compose down`.

## Standalone Server Image
To build and run the server image, without using `docker-compose`, from the `docker` directory execute:
```
docker build -t conductor:server -f server/Dockerfile ../
docker run -p 8080:8080 -d --name conductor_server conductor:server
```
This builds the image `conductor:server` and runs it in a container named `conductor_server`. The API should now be accessible at `localhost:8080`.

To 'login' to the running container, use the command:
```
docker exec -it conductor_server /bin/sh
```

## Standalone UI Image
From the `docker` directory,
```
docker build -t conductor:ui -f ui/Dockerfile ../
docker run -p 5000:5000 -d --name conductor_ui conductor:ui
```
This builds the image `conductor:ui` and runs it in a container named `conductor_ui`. The UI should now be accessible at `localhost:5000`.

### Note
* In order for the UI to do anything useful the Conductor Server must already be running on port 8080, either in a Docker container (see above), or running directly in the local JRE.
* Additionally, significant parts of the UI will not be functional without Elastisearch being available. Using the `docker-compose` approach alleviates these considerations.

## Monitoring with Prometheus

Start Prometheus with:
`docker-compose -f docker-compose-prometheus.yaml up -d`

Go to [http://127.0.0.1:9090](http://127.0.0.1:9090).


## Potential problem when using Docker Images

#### Elasticsearch timeout
Standalone(single node) elasticsearch has a yellow status which will cause timeout for conductor server (Required: Green).
Spin up a cluster (more than one) to prevent timeout or use config option `conductor.elasticsearch.clusteHealthColor=yellow`.

See issue: https://github.com/Netflix/conductor/issues/2262

#### Changes in config-*.properties do not take effect
Config is copy into image during docker build. You have to rebuild the image or better, link a volume to it to reflect new changes.

#### To troubleshoot a failed startup
Check the log of the server, which is located at `/app/logs` (default directory in dockerfile)

#### Unable to access to conductor:server API on port 8080
It may takes some time for conductor server to start. Please check server log for potential error.

#### Elasticsearch
Elasticsearch is optional, please be aware that disable it will make most of the conductor UI not functional.

##### How to enable Elasticsearch
* Set `workflow.indexing.enabled=true` in your_config.properties
* Add config related to elasticsearch
E.g.: `conductor.elasticsearch.url=http://es:9200`

##### How to disable Elasticsearch
* Set `workflow.indexing.enabled=false` in your_config.properties
* Comment out all the config related to elasticsearch
E.g.: `conductor.elasticsearch.url=http://es:9200`


[Docker Instructions](/docs/docs/gettingstarted/docker.md)
7 changes: 0 additions & 7 deletions docs/custom_theme/main.html

This file was deleted.

55 changes: 39 additions & 16 deletions docs/docs/gettingstarted/docker.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@

# Running via Docker Compose
# Running Conductor using Docker

In this article we will explore how you can set up Netflix Conductor on your local machine using Docker compose.
The docker compose will bring up the following:

1. Conductor API Server
2. Conductor UI
3. Elasticsearch for searching workflows
Expand All @@ -13,29 +14,21 @@ The docker compose will bring up the following:

## Steps

#### 1. Clone the Conductor Code
### 1. Clone the Conductor Code

```shell
$ git clone https://github.com/Netflix/conductor.git
```

#### 2. Build the Docker Compose
### 2. Build the Docker Compose

```shell
$ cd conductor
conductor $ cd docker
docker $ docker-compose build
```
#### Note: Conductor supplies multiple docker compose templates that can be used with different configurations:

| File | Containers |
|--------------------------------|-----------------------------------------------------------------------------------------|
| docker-compose.yaml | 1. In Memory Conductor Server 2. Elasticsearch 3. UI |
| docker-compose-dynomite.yaml | 1. In Memory Conductor Server 2. Elasticsearch 3. UI 4. Dynomite Redis for persistence |
| docker-compose-postgres.yaml | 1. In Memory Conductor Server 2. Elasticsearch 3. UI 4. Postgres persistence |
| docker-compose-prometheus.yaml | Brings up Prometheus server |

#### 3. Run Docker Compose
### 3. Run Docker Compose

```shell
docker $ docker-compose up
Expand All @@ -47,22 +40,41 @@ Once up and running, you will see the following in your Docker dashboard:
2. Conductor UI
3. Conductor Server

You can access all three on your browser to verify that it is running correctly:
You can access the UI & Server on your browser to verify that they are running correctly:

Conductor Server URL: [http://localhost:8080/swagger-ui/index.html?configUrl=/api-docs/swagger-config](http://localhost:8080/swagger-ui/index.html?configUrl=/api-docs/swagger-config)
#### Conductor Server URL
[http://localhost:8080](http://localhost:8080)

<img src="/img/tutorial/swagger.png" style="width: 100%"/>

Conductor UI URL: [http://localhost:5000/](http://localhost:5000/)
#### Conductor UI URL
[http://localhost:5000/](http://localhost:5000)

<img src="/img/tutorial/conductorUI.png" style="width: 100%" />


### Exiting Compose
### 4. Exiting Compose
`Ctrl+c` will exit docker compose.

To ensure images are stopped execute: `docker-compose down`.

## Alternative Persistence Engines
By default `docker-compose.yaml` uses `config-local.properties`. This configures the `memory` database, where data is lost when the server terminates. This configuration is useful for testing or demo only.

A selection of `docker-compose-*.yaml` and `config-*.properties` files are provided demonstrating the use of alternative persistence engines.

| File | Containers |
|--------------------------------|-----------------------------------------------------------------------------------------|
| docker-compose.yaml | <ol><li>In Memory Conductor Server</li><li>Elasticsearch</li><li>UI</li></ol> |
| docker-compose-dynomite.yaml | <ol><li>Conductor Server</li><li>Elasticsearch</li><li>UI</li><li>Dynomite Redis for persistence</li></ol> |
| docker-compose-postgres.yaml | <ol><li>Conductor Server</li><li>Elasticsearch</li><li>UI</li><li>Postgres persistence</li></ol> |
| docker-compose-prometheus.yaml | Brings up Prometheus server |

For example this will start the server instance backed by a PostgreSQL DB.
```
docker-compose -f docker-compose.yaml -f docker-compose-postgres.yaml up
```

## Standalone Server Image
To build and run the server image, without using `docker-compose`, from the `docker` directory execute:
```
Expand Down Expand Up @@ -95,6 +107,17 @@ Start Prometheus with:

Go to [http://127.0.0.1:9090](http://127.0.0.1:9090).

## Combined Server & UI Docker Image
This image at `/docker/serverAndUI` is provided to illustrate starting both the server & UI within the same container. The UI is hosted using nginx.

### Building the image
`docker build -t conductor:serverAndUI .`

##$ Running the conductor server
- Standalone server (interal DB): `docker run -p 8080:8080 -p 80:5000 -d -t conductor:serverAndUI`
- Server (external DB required): `docker run -p 8080:8080 -p 80:5000 -d -t -e "CONFIG_PROP=config.properties" conductor:serverAndUI`



## Potential problem when using Docker Images

Expand Down
Loading

0 comments on commit b78ce49

Please sign in to comment.