Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/comtihon/enot_auto_builder
- Owner: comtihon
- License: apache-2.0
- Created: 2017-09-10T19:30:53.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2021-07-23T04:23:16.000Z (over 3 years ago)
- Last Synced: 2024-10-08T15:23:52.157Z (about 1 month ago)
- Topics: build-tool, deployment, erlang
- Language: Java
- Size: 696 KB
- Stars: 0
- Watchers: 3
- Forks: 2
- Open Issues: 11
-
Metadata Files:
- Readme: Readme.md
- License: LICENSE
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 rebuildPOST __/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" :
}
...
]
}
## DownloadGET __/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