Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/elixir-cloud-aai/pubgrade
Pubgrade is a decoupled, publish-subscribe-based continuous integration (CI) and continuous delivery (CD) microservice that allows developers to notify deploments of available updates
https://github.com/elixir-cloud-aai/pubgrade
cicd docker flask mongodb python
Last synced: 1 day ago
JSON representation
Pubgrade is a decoupled, publish-subscribe-based continuous integration (CI) and continuous delivery (CD) microservice that allows developers to notify deploments of available updates
- Host: GitHub
- URL: https://github.com/elixir-cloud-aai/pubgrade
- Owner: elixir-cloud-aai
- License: apache-2.0
- Created: 2021-06-02T11:18:48.000Z (over 3 years ago)
- Default Branch: dev
- Last Pushed: 2025-01-13T07:19:39.000Z (13 days ago)
- Last Synced: 2025-01-13T08:26:52.902Z (13 days ago)
- Topics: cicd, docker, flask, mongodb, python
- Language: Python
- Homepage:
- Size: 2.04 MB
- Stars: 3
- Watchers: 26
- Forks: 3
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Pubgrade
[![License][badge-license]][badge-url-license]
[![Build_status][badge-build-status]][badge-url-build-status]
[![Coverage Status][coverage-badge-svg]][badge-url-coverage]## Description
**Pubgrade** (**Pub**lish-Up**grade**) is a decoupled, publish-subscribe-based
continuous integration (CI) and continuous delivery (CD) service that allows
developers to notify deployments of available updates. These can can then
autonomously decide what to do with them. Pubgrade has an optional link with
the [ELIXIR Cloud Service Registry][elixir-cloud-registry].Currently supported features:
- Register git repository.
- Create and publish builds.
- Register subscriptions.
- Notify subscriptions on build updates.![app-schema][anim-schema]
## Installation
1. Install and setup [kubernetes][kubernetes-install].
2. Install [Helm][helm-install].
3. Modify deployment/values.yaml.
4. Create a namespace. `kubectl create namespace pubgrade`
5. Create deployment using helm. `helm install pubgrade deployment/ -n pubgrade`## Usage
1. Register git repository.
```bash
curl --location --request POST 'http://:/repositories' \
--header 'Content-Type: application/json' \
--data-raw '{
"url": ""
}'
```2. Create a user (System administrator).
```bash
curl --location --request POST 'http://:/users/register' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": ""
}'
```3. Ask pubgrade admin to verify created user. (Only Admin)
```bash
curl --location --request PUT 'http://:/users//verify' \
--header 'X-Super-User-Access-Token: ' \
--header 'X-Super-User-Id: '
```4. Subscribe to `repository`. (Use admin user)
```bash
curl --location --request POST 'http://:/subscriptions' \
--header 'X-User-Access-Token: ' \
--header 'X-User-Id: ' \
--header 'Content-Type: application/json' \
--data-raw '{
"repository_id": "",
"callback_url": "",
"access_token": "",
"type": "",
"value": ""
}'
```5. Register build. (CI should be configured to call this automatically)
```bash
curl --location --request POST 'http://:/repositories/{repo_id}/builds' \
--header 'X-Project-Access-Token: ' \
--header 'Content-Type: application/json' \
--data-raw '{
"images": [
{
"name": "",
"location": ""
}
],
"head_commit": {
"branch": ""
},
"dockerhub_token": ""
}'
```List available repositories.
```bash
curl --location --request GET 'http://:/repositories'
```List available builds for the repository.
```bash
curl --location --request GET 'http://:/repositories/{repo_id}/builds'
```List subscribed repositories
```bash
curl --location --request GET 'http://:/subscriptions' \
--header 'X-User-Access-Token: ' \
--header 'X-User-Id: '
```## Contributing
This project is a community effort and lives off your contributions, be it in
the form of bug reports, feature requests, discussions, or fixes and other code
changes. Please refer to our organization's [contribution guidelines][contributing] if you are interested to
contribute. Please mind the [code of conduct][coc] for all interactions with
the community.## Versioning
The project adopts the [semantic versioning][semver] scheme for versioning.
Currently the service is in beta stage, so the API may change without further
notice.## License
This project is covered by the [Apache License 2.0][license-apache]
also [shipped with this repository][license].## Contact
The project is a collaborative effort under the umbrella
of [ELIXIR Cloud & AAI][elixir-cloud]. Follow the link to get in touch with us
via chat or email. Please mention the name of this service for any inquiry,
proposal, question etc.[anim-schema]: images/app-schema-animation.gif
[badge-build-status]: https://travis-ci.com/elixir-cloud-aai/Pubgrade.svg?branch=dev
[badge-coverage]: https://coveralls.io/repos/github/elixir-cloud-aai/Pubgrade/badge.svg?branch=dev
[badge-license]: https://img.shields.io/badge/license-Apache%202.0-blue.svg
[badge-url-build-status]: https://travis-ci.com/elixir-cloud-aai/Pubgrade
[badge-url-coverage]: https://coveralls.io/github/elixir-cloud-aai/Pubgrade?branch=dev
[coverage-badge-svg]: https://coveralls.io/repos/github/elixir-cloud-aai/Pubgrade/badge.svg?branch=dev
[contributing]: https://github.com/elixir-cloud-aai/elixir-cloud-aai/blob/dev/CONTRIBUTING.md
[elixir-cloud]: https://github.com/elixir-cloud-aai/elixir-cloud-aai
[elixir-cloud-registry]: https://cloud-registry.rahtiapp.fi/ga4gh/registry/v1/ui/
[helm-install]: https://helm.sh/docs/intro/install/
[kubernetes-install]: https://kubernetes.io/docs/tasks/tools/
[semver]: https://semver.org/
[license-apache]: https://www.apache.org/licenses/LICENSE-2.0
[license]: LICENSE
[badge-license]: https://img.shields.io/badge/license-Apache%202.0-blue.svg
[badge-url-license]: http://www.apache.org/licenses/LICENSE-2.0
[ga4gh]: https://www.ga4gh.org/
[coc]: https://github.com/elixir-cloud-aai/elixir-cloud-aai/blob/dev/CODE_OF_CONDUCT.md