96 lines
3.2 KiB
Markdown
96 lines
3.2 KiB
Markdown
# Description
|
|
|
|
This is a minimal REST API intended for use with a Continuous Integration system for managing comments on GitHub.
|
|
|
|
The problem this solves is posting comments in a PR from multiple builds without spamming the comment section. Instead we post just one comment with a table and continue to update it.
|
|
|
|
# Example Comment
|
|
|
|
---
|
|
### Jenkins Builds
|
|
| :grey_question: | Commit | :hash: | Finished | Duration | Platform | Result |
|
|
|-|-|-|-|-|-|-|
|
|
| | | | | | | |
|
|
| :x: | a088572b | [#3](https://google.pl) | 12:12:55 AM | ~12 min | `android` | [:page_facing_up: build log](https://google.plconsoleText) |
|
|
| :x: | a088572b | [#3](https://google.pl) | 12:13:18 AM | ~12 min | `android` | [:page_facing_up: build log](https://google.plconsoleText) |
|
|
| :heavy_check_mark: | a088572b | [#3](https://google.pl) | 12:13:53 AM | ~12 min | `ios` | [:package: package](https://google.pl) |
|
|
| :heavy_check_mark: | a088572b | [#3](https://google.pl) | 12:13:34 AM | ~12 min | `ios` | [:package: package](https://google.pl) |
|
|
| :heavy_check_mark: | a088572b | [#3](https://google.pl) | 12:14:44 AM | ~12 min | `ios` | [:package: package](https://google.pl) |
|
|
---
|
|
|
|
# API
|
|
|
|
It exposes just 1 call:
|
|
|
|
* `POST /builds/:id` - Post a comment for PR with given ID.
|
|
* `POST /builds/:id/refresh` - Update the comment for PR with given ID.
|
|
* `POST /comments` - Show currently managed comments in PRs.
|
|
|
|
By default it listens on `localhost:8080`.
|
|
|
|
# Usage
|
|
|
|
```
|
|
$ cat << EOF
|
|
{
|
|
"id": 1,
|
|
"commit": "7367f3d5",
|
|
"success": true,
|
|
"platform": "linux",
|
|
"duration": "~15 min",
|
|
"url": "https://ci.status.im/job/status-react/job/prs/job/linux/job/PR-7123/1/",
|
|
"pkg_url": "https://status-im-prs.ams3.digitaloceanspaces.com/StatusIm-181212-211210-5157d2-pr.AppImage"
|
|
}
|
|
EOF >> /tmp/body/json
|
|
|
|
$ curl -s -XPOST https://localhost:8000/builds/7123 -d@/tmp/body.json -H 'Content-Type: application/json'
|
|
{
|
|
"status": "ok"
|
|
} sochan@lilim: infra-misc% curl https://clicks.status.im/click [10/17/18 11:22:50]
|
|
$ curl -s -XPOST https://localhost:8000/builds/7123/refresh
|
|
{
|
|
"status": "ok"
|
|
} sochan@lilim: infra-misc% curl https://clicks.status.im/click [10/17/18 11:22:50]
|
|
```
|
|
You can also check all PRs the application knows about:
|
|
```
|
|
$ curl -s http://localhost:8000/comments
|
|
{
|
|
"count": 2,
|
|
"comments": [
|
|
{
|
|
"pr": "7000",
|
|
"comment_id": 446940840
|
|
},
|
|
{
|
|
"pr": "7084",
|
|
"comment_id": 446779864
|
|
}
|
|
]
|
|
}
|
|
```
|
|
# Configuration
|
|
|
|
There are few environment variables you can set:
|
|
|
|
* `LISTEN_PORT` - Default: `8000`
|
|
|
|
# Building
|
|
|
|
For development use:
|
|
```
|
|
npm run start
|
|
```
|
|
For building use:
|
|
```
|
|
npm run build
|
|
```
|
|
To create the docker image use:
|
|
```
|
|
npm run image
|
|
```
|
|
To push the image use:
|
|
```
|
|
npm run push
|
|
```
|