Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/plurid/performer
Cloud Service for Continuous Integration/Continuous Deployment Builder
https://github.com/plurid/performer
build-pipelines cloud continuous-delivery continuous-integration plurid
Last synced: about 7 hours ago
JSON representation
Cloud Service for Continuous Integration/Continuous Deployment Builder
- Host: GitHub
- URL: https://github.com/plurid/performer
- Owner: plurid
- License: other
- Created: 2020-07-25T17:33:41.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-05-07T14:08:30.000Z (over 1 year ago)
- Last Synced: 2024-11-04T11:03:46.080Z (3 days ago)
- Topics: build-pipelines, cloud, continuous-delivery, continuous-integration, plurid
- Language: TypeScript
- Homepage: https://plurid.com/performer
- Size: 8.96 MB
- Stars: 0
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
performer
Cloud Service for Continuous Integration/Continuous Delivery Builder
`performer` is a [service](https://performer.plurid.cloud) or self-hosted system task-runner/builder based on GitOps.
Specialized support for the runtimes
+ `NodeJS`
`performer` uses [plurid](https://github.com/plurid/plurid) to explore information as a 3D structure.
### Contents
+ [Install](#install)
+ [Usage](#usage)
+ [Building](#building)
+ [Packages](#packages)
+ [Codeophon](#codeophon)## Install
run
``` bash
npm install @plurid/performer
```or
``` bash
yarn add @plurid/performer
```create a `server.js` file
``` typescript
import Performer from '@plurid/performer';const performer = new Performer();
performer.start();
```and run it
``` bash
node server.js
```performer starts a server listening on port `56065` serving the performer UI on `/`, or which can receive GraphQL API requests on `/perform`.
## Usage
In order to use performer, once the installation setup is finished, launch the performer UI and
`Phase 0.⠀` — add `provider(s)`;
`Phase 1a.` — link `repositories`;
`Phase 1b.` — add `imagene(s)`;
`Phase 2.⠀` — setup `webhook(s)`;
`Phase 3.⠀` — generate `project(s)`;
`Phase 4.⠀` — store `secret(s)`;
`Phase 5.⠀` — generate `trigger(s)`;
`Phase 6.⠀` — generate `deployer(s)`;
——— `performer` setup finished ———
`Phase 7.⠀` — code in the local repositories (linked at `Phase 1a`);
`Phase 8.⠀` — push to branch listened by trigger (`Phase 5`);
`Phase 9.⠀` — `performer` will automatically handle the builds and deploys based on the specified repositories, webhooks, triggers, and deployers;
`Phase 10.` — once `performer` finishes the build and deploy, run `git fetch origin` and `git pull` to update the local repositories.
### Trigger example
``` yaml
stages:
- name: 'Name of the Stage'
directory: '/path/of/the/directory/to/work/in'
imagene: 'image-name-to-run-in-the-container'
command: 'run a command'
environment:
- 'LIST=of-environment-variables'
secretsEnvironment:
- 'SECRET'- name: 'Deploy'
imagene: 'deployer'
id: 'deployer-id'timeout: 720s
secrets:
- 'SECRET'nodejs:
cacheModulesActive: true # cache node_modules and .lock files for faster container creation
cacheModulesTime: 5h # interger + 'h' for hours or 'forever'
```### Deployer example
``` yaml
- name: 'Generate Latest Deployment'
directory: '/path/of/the/directory/to/work/in'
imagene: 'ubuntu'
command: [
'/bin/bash',
'-c',
'sed "s/COMMIT_SHA/${SHORT_SHA}/g" Deployment.template.yaml > Deployment.latest.yaml'
]- name: 'Deploy Latest Imagene'
directory: '/path/of/the/directory/to/work/in'
imagene: 'kubectl'
command: [
'apply',
'-f',
'Deployment.latest.yaml'
]
```## Building
``` bash
docker build --file ./configurations/production.dockerfile \
--tag performer \
--build-arg PORT= \
--build-arg PERFORMER_QUIET= \
--build-arg PERFORMER_LOG_LEVEL= \
--build-arg DOCKER_AUTH_USERNAME= \
--build-arg DOCKER_AUTH_PASSWORD= \
--build-arg DOCKER_AUTH_SERVER_ADDRESS= \
--build-arg PERFORMER_DATABASE_TYPE= \
--build-arg PERFORMER_STORAGE_TYPE= \
--build-arg PERFORMER_STORAGE_BUCKET= \
--build-arg PERFORMER_STORAGE_ROOT_PATH= \
--build-arg PERFORMER_BASE_PATH= \
--build-arg PERFORMER_AWS_API_VERSION= \
--build-arg PERFORMER_AWS_REGION= \
--build-arg PERFORMER_AWS_ACCESS_KEY_ID= \
--build-arg PERFORMER_AWS_SECRET_ACCESS_KEY= \
--build-arg GOOGLE_APPLICATION_CREDENTIALS= \
--build-arg PERFORMER_CUSTOM_LOGIC= \
--build-arg PERFORMER_PRIVATE_USAGE= \
--build-arg PERFORMER_PRIVATE_OWNER_IDENTONYM= \
--build-arg PERFORMER_PRIVATE_OWNER_KEY= \
--build-arg PERFORMER_PRIVATE_TOKEN= \
--build-arg PERFORMER_IN_CONTAINER_USAGE= \
--build-arg PERFORMER_IN_CONTAINER_HOST_BIND= \
.
````performer` uses by default [`delog`](https://github.com/plurid/delog) for logging purposes.
In order to configure `performer` with `delog` pass the following required build arguments
```
--build-arg USE_DELOG=true \
--build-arg DELOG_ENDPOINT= \
--build-arg DELOG_TOKEN= \
```or customize the `delog` through any other build arguments
```
--build-arg DELOG_GROUND_LEVEL= \
--build-arg DELOG_FORMAT= \
--build-arg DELOG_PROJECT= \
--build-arg DELOG_SPACE= \
```## Packages
[@plurid/performer][performer-server] • the server application
[performer-server]: https://github.com/plurid/performer/tree/master/packages/performer-server
[@plurid/performer-cli][performer-cli] • the command-line interface
[performer-cli]: https://github.com/plurid/performer/tree/master/packages/performer-cli
[@plurid/performer-requests][performer-requests] • the API requests
[performer-requests]: https://github.com/plurid/performer/tree/master/packages/performer-requests
## [Codeophon](https://github.com/ly3xqhl8g9/codeophon)
+ licensing: [delicense](https://github.com/ly3xqhl8g9/delicense)
+ versioning: [αver](https://github.com/ly3xqhl8g9/alpha-versioning)