Builder-CI Installation » History » Version 4
Olivier Bitsch, 04/23/2025 02:23 PM
1 | 4 | Olivier Bitsch | # Builder CI |
---|---|---|---|
2 | 1 | Olivier Bitsch | |
3 | 4 | Olivier Bitsch | Builder CI is an automated build system designed to support Continuous Integration (CI) across various types of development projects. It was created with the goal of simplifying and automating build pipelines in a more efficient way than traditional tools like Jenkins. |
4 | 1 | Olivier Bitsch | |
5 | 4 | Olivier Bitsch | It’s designed to optionally integrate with [Redmine](https://www.redmine.org/) via a [dedicated plugin](https://github.com/iabsis/redmine-builder-ci), allowing better visibility into builds directly within project management workflows. |
6 | 1 | Olivier Bitsch | |
7 | 4 | Olivier Bitsch | [Screenshot](https://raw.githubusercontent.com/iabsis/builder-ci/master/doc/builder-ci.png) |
8 | 1 | Olivier Bitsch | |
9 | 4 | Olivier Bitsch | --- |
10 | 1 | Olivier Bitsch | |
11 | 4 | Olivier Bitsch | ## Features |
12 | 1 | Olivier Bitsch | |
13 | 4 | Olivier Bitsch | - Create any script to create your package (e.g., `.deb`, `.rpm`) |
14 | - Exposes a REST API to trigger builds |
||
15 | - Modular and extensible — build your own flow |
||
16 | - Lightweight: built with Python and minimal dependencies |
||
17 | - Easy to install and update with a single command on Debian Bookworm |
||
18 | - Uses PostGreSQL, Django and Podman. |
||
19 | - Commands are run in container for more safety. |
||
20 | - "Build as Code": configure builds using a `builder.yml` file |
||
21 | - Trigger multiple flow in one commit |
||
22 | - Automatic podman container build, based on advance rules |
||
23 | 1 | Olivier Bitsch | |
24 | 4 | Olivier Bitsch | --- |
25 | 1 | Olivier Bitsch | |
26 | 4 | Olivier Bitsch | ## Installation Guide (Takes ~2 Minutes) |
27 | 1 | Olivier Bitsch | |
28 | 4 | Olivier Bitsch | > Note: All commands should be run as `root`. |
29 | 1 | Olivier Bitsch | |
30 | 4 | Olivier Bitsch | --- |
31 | 1 | Olivier Bitsch | |
32 | 4 | Olivier Bitsch | ### Install Builder CI (Debian Bookworm) |
33 | 1 | Olivier Bitsch | |
34 | 4 | Olivier Bitsch | ```bash |
35 | echo "deb [trusted=yes] https://projects.iabsis.com/repository/builder-ci/debian bookworm main" > /etc/apt/sources.list.d/iabsis.list |
||
36 | apt update && apt install builder-ci postgresql redis nginx |
||
37 | ``` |
||
38 | 1 | Olivier Bitsch | |
39 | 4 | Olivier Bitsch | This will return error since database is not yet configured, ignore for now and go to next step |
40 | 1 | Olivier Bitsch | |
41 | 4 | Olivier Bitsch | --- |
42 | 1 | Olivier Bitsch | |
43 | 4 | Olivier Bitsch | ### Configure database |
44 | 1 | Olivier Bitsch | |
45 | 4 | Olivier Bitsch | ```bash |
46 | su - postgres |
||
47 | createuser --pwprompt builder |
||
48 | createdb -O builder builder |
||
49 | ``` |
||
50 | 1 | Olivier Bitsch | |
51 | 4 | Olivier Bitsch | ### Configure Builder CI |
52 | |||
53 | Now edit `/etc/builder-ci/builder-ci.conf` and change the following lines. |
||
54 | |||
55 | ``` |
||
56 | DATABASE_NAME=builder |
||
57 | DATABASE_USER=builder |
||
58 | DATABASE_PASSWORD=builder |
||
59 | ALLOWED_HOSTS=mybuilder.com |
||
60 | ``` |
||
61 | |||
62 | Now fix the previous error with `apt -f install` |
||
63 | |||
64 | ### Configure Nginx |
||
65 | |||
66 | Create a simple nginx configuration that will be used also serve static files. |
||
67 | |||
68 | ``` |
||
69 | server { |
||
70 | listen 80; |
||
71 | server_name mybuilder.com; |
||
72 | |||
73 | location /static/ { |
||
74 | alias /usr/share/builder-ci/statics/; |
||
75 | } |
||
76 | |||
77 | location / { |
||
78 | proxy_set_header Host $host; |
||
79 | proxy_pass http://127.0.0.1:8000; |
||
80 | proxy_http_version 1.1; |
||
81 | proxy_set_header Upgrade $http_upgrade; |
||
82 | proxy_set_header Connection "upgrade"; |
||
83 | } |
||
84 | } |
||
85 | ``` |
||
86 | |||
87 | If you need to setup letsencrypt certificate, install `python3-certbot-nginx` and run `certbot --nginx`. |
||
88 | |||
89 | ### Create first django user |
||
90 | |||
91 | ``` |
||
92 | set -a ; . /etc/builder-ci/builder-ci.conf |
||
93 | cd /usr/share/builder-ci/ |
||
94 | . ./venv/bin/activate # Dont forgot the first dot |
||
95 | python3 manage.py createsuperuser |
||
96 | ``` |
||
97 | |||
98 | ### Now open |
||
99 | |||
100 | > https://mybuilder.com |
||
101 | |||
102 | And login with your super user. |
||
103 | |||
104 | ## Frequently Asked Questions |
||
105 | |||
106 | ### Is Builder CI stable for production use? |
||
107 | |||
108 | Yes. It's used in production with frameworks like Laravel, Symfony, Ionic, Flutter, NestJS, Angular, and React across platforms such as Android, Debian, Ubuntu, Red Hat, and CentOS. |
||
109 | |||
110 | ## I'm using redmine, can I have build status inside? |
||
111 | |||
112 | Yes, we did a [Redmine plugin](https://github.com/iabsis/redmine-builder-ci). Once installed, create API key and configure |
||
113 | |||
114 | ``` |
||
115 | REDMINE_URL=https://<your redmine host> |
||
116 | REDMINE_KEY=<your redmine key> |
||
117 | ``` |
||
118 | |||
119 | ## Does Builder support SSO |
||
120 | |||
121 | Yes, you can configure SSO like Keycloak by configuring OpenID in configuration. |
||
122 | |||
123 | ``` |
||
124 | OPENID_ID=sso |
||
125 | OPENID_NAME="<display name on login page>" |
||
126 | OPENID_CLIENT_ID=<your keycloak client ID> |
||
127 | OPENID_SECRET=<your keycloak secret> |
||
128 | OPENID_CONFIGURATION_URL="https://<your keycloak url>/realms/<your keycloak realm>/.well-known/openid-configuration" |
||
129 | ``` |
||
130 | |||
131 | |||
132 | ## Contributing |
||
133 | |||
134 | We welcome contributions of all kinds — including code, documentation, bug reports, and feature suggestions. |
||
135 | |||
136 | While formal contributing guidelines are coming soon, you can: |
||
137 | |||
138 | - Fork the repository |
||
139 | - Create a new branch for your changes |
||
140 | - Open a pull request |
||
141 | - Share feedback via comments or discussions |
||
142 | |||
143 | --- |
||
144 | |||
145 | ## License |
||
146 | |||
147 | Builder CI is licensed under the [GPL-3.0 License](LICENSE). |