Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/comtihon/enot_auto_builder

Replacemet for octocoon build service
https://github.com/comtihon/enot_auto_builder

build-tool deployment erlang

Last synced: 28 days ago
JSON representation

Replacemet for octocoon build service

Awesome Lists containing this project

README

        

# Enot build and load server [![Build Status](https://travis-ci.org/comtihon/enot_auto_builder.svg?branch=master)](https://travis-ci.org/comtihon/enot_auto_builder)[![Docker Automated build](https://img.shields.io/docker/build/comtihon/enot_auto_builder.svg)](https://hub.docker.com/r/comtihon/enot_auto_builder)
Build once, use everywhere.
Automated service for building, storing and deploying Erlang packages with [Enot](https://github.com/comtihon/enot).
Can be treat as a maven/pip for Erlang.

# Adding your package to Enot
Read [howto](https://github.com/comtihon/enot_auto_builder/blob/master/docs/Add.md).

# Running your own Enot build server
## Standalone
Requirements:
- postgres
- EMAIL_USER env var set up
- EMAIL_PASSWORD env var set up
- GIT_SECRET is Enot's git application secret
- kerl installed
- enot installed

## Monitoring
Monitoring is made via [collectd](https://collectd.org/) and `/metrics` endpoint.

## Docker
You can run all services with docker-compose. See `docker-compose.yml` for details.

# Protocol
## Build
POST __/buildAsync__ - build request
BODY:

{
"full_name": ,
"clone_url": ,
"versions":
[
{
"ref": ,
"erl_version":
}
]
}
Where:
`fullName` is a fullname of a repository, containing namespace and repo name. Ex. "comtihon/enot"
`cloneUrl` is a url for repository clone.
`ref` is a version to be built. Ex: "1.0.0".
`erl_version` _(optional)_ is an Erlang version used for build. Ex: "19".

POST __/rebuild__ - request a specific build to be rebuilt
BODY:

{
"build_id" :
}
Where:
`buildId` is an id of a build for rebuild

POST __/callback__ - build request from Github.
Header: `x-hub-signature` with request signature.
BODY:

{
"repository":
{
"full_name":
"clone_url":
},
"ref": ,
"ref_type":
}
Where:
`refType` is a type of reference. Only `tag` is supported.
## Search
GET __/search__ - search for packages.
PARAMETERS:
`name` - package name
`namespace` - package's namespace (GitHub fork name)
`version` - package's version
`erl_version` - Erlang version
RESPONSE:

{
"result" : ,
"response" :
[
{
"build_id" : ,
"namespace" : ,
"name" : ,
"success" : ,
"path" : ,
"build_date" : ,
"version" : ,
"erl_version" :
}
...
]
}

POST __/builds__ - get a list of builds, available for download. Skip errored builds.
BODY:

{
"full_name": ,
"versions":
[
{
"ref": ,
"erl_version":
}
]
}
Where:
`ref` and `erlVersion` and `versions` are optional.
RESPONSE:

{
"result": ,
"response":
[
{"build_id" : , "result" : true, "message" : "", "artifact_path" : , "created_date" : }
...
]
}
Where:
`response` will be just string error message in case of `result` is not __true__.

POST __/versions__ - get a list of versions, available for download. Skip versions without successful builds.
BODY: same as `/builds`
RESPONSE:

{
"result": ,
"response":
[
{"versionId" : , "ref" : , "erl_version" : }
...
]
}

GET __/last_builds__ - get last n built packages.
PARAMETERS:
`n` - N packages to return
RESPONSE:

{
"result" : ,
"response" :
[
{
"build_id" : ,
"namespace" : ,
"name" : ,
"success" : ,
"path" : ,
"build_date" : ,
"version" : ,
"erl_version" :
}
...
]
}
## Download

GET __/download/{id}__ - download artifact by id.

GET __/download_erts/{version}__ - download erts for erlang version. `version` - is an Erlang version, not erts!

POST __/get__ - try to download artifact by name, ref and version. If there is multiple - the last built
will be fetched.
BODY:

{
"full_name": ,
"versions":
[
{
"ref": ,
"erl_version":
}
]
}

GET __/build_log/__ - get build's log.
PARAMETERS:
`build_id` - id of a build.
RESPONSE:

raw txt log