You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
1.8 KiB
Markdown
85 lines
1.8 KiB
Markdown
# phCD
|
|
|
|
Continuous Deployment for PHC projects.
|
|
|
|
## Development
|
|
|
|
```bash
|
|
# First install the dependencies
|
|
$ pnpm install
|
|
|
|
# Run the local server
|
|
$ pnpm dev
|
|
|
|
# Build all
|
|
$ pnpm build
|
|
```
|
|
|
|
## Bootstrapping
|
|
|
|
Run the following command to bootstrap a **phCD** instance. As this service doesn't have auth for now, it's strongly recommended to publish only on a local ip like `127.0.0.1` and then access directly or via an ssh tunnel (something like `ssh -L 8080:127.0.0.1:8080 server`).
|
|
|
|
```bash
|
|
$ git clone https://git.phc.dm.unipi.it/phc/phcd
|
|
$ docker built . -t phcd
|
|
|
|
$ echo 'deploys: []' > config.yaml
|
|
$ cp .env.sample .env
|
|
|
|
$ docker run -d \
|
|
--name phcd \
|
|
--restart unless-stopped \
|
|
-p 127.0.0.1:8080:4321 \
|
|
-v ./data.local:./data.local \
|
|
-v ./config.yaml:./config.yaml \
|
|
phcd
|
|
```
|
|
|
|
### Updating
|
|
|
|
```bash
|
|
$ git pull
|
|
$ docker stop phcd
|
|
$ docker built . -t phcd
|
|
$ docker run -d \
|
|
--name phcd \
|
|
--restart unless-stopped \
|
|
-p 127.0.0.1:8080:4321 \
|
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
|
-v ./config.yaml:/app/config.yaml \
|
|
phcd
|
|
```
|
|
|
|
## Architecture
|
|
|
|
Everything is stored in the `config.yaml` file. This file contains a list of projects to deploy and the configuration for each one.
|
|
|
|
```yaml
|
|
deploys:
|
|
- name: project1
|
|
url: https://github.com/username/project1
|
|
ref:
|
|
type: branch
|
|
value: main
|
|
type: dockerfile
|
|
options:
|
|
ports:
|
|
- 80:8080
|
|
volumes:
|
|
- /var/www/html:/var/www/html
|
|
- name: project2
|
|
url: ssh://example.org/username/project2.git
|
|
ref:
|
|
type: commit
|
|
value: '1234567'
|
|
type: docker-compose
|
|
options:
|
|
path: ./docker-compose.yml # already the default
|
|
- name: project3
|
|
url: https://github.com/username/project3
|
|
type: shell
|
|
options:
|
|
path: ./deploy.sh # already the default
|
|
```
|
|
|