A very simple dashboard for managing Continuous Deployment for PHC projects based on docker, dockerfiles, docker-compose or even shell scripts
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.
 
 
 
 
 
Antonio De Lucreziis 9229342177 chore: thoughts about self updating 10 months ago
public intial commit 11 months ago
scripts feat: working jobs page with sse 11 months ago
src chore: deploy styles 10 months ago
.dockerignore feat: dockerfiles 10 months ago
.env.sample chore: deploy styles 10 months ago
.gitignore feat: working jobs page with sse 11 months ago
.prettierrc prototype of the deploys page using the inspect component 11 months ago
Dockerfile chore: working dockerfile 10 months ago
README.md chore: thoughts about self updating 10 months ago
astro.config.mjs intial commit 11 months ago
package.json chore: working dockerfile 10 months ago
pnpm-lock.yaml chore: working dockerfile 10 months ago
tsconfig.json feat: working jobs page with sse 11 months ago

README.md

phCD

Continuous Deployment for PHC projects.

Development

# First install the dependencies
$ pnpm install

# Run the local server
$ pnpm dev

# Build all
$ pnpm build

Production Setup

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).

# Clone this repo
$ git clone https://git.phc.dm.unipi.it/phc/phcd

# Create config files and data folder
$ mkdir data.local
$ cp .env.sample .env
$ echo 'deploys: []' > config.yaml

# Built docker image
$ docker built . -t phcd

# Start container
$ 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 ./data.local:/app/data.local \
  -v ./.env:/app/.env \
  -v ./config.yaml:/app/config.yaml \
  phcd

Updating

Just pull changes and update the docker image, then use the command from before to restart the main container.

git pull
docker stop phcd
docker rm phcd
docker built . -t phcd

TODO: Self-Updating

It should be possible to deploy itself using a git+dockerfile deployment. For now this is more complicated as this requires to stop itself and spawn a new docker container of itself.

Idea 1. Create another self-update.Dockerfile that also gets mounted /var/run/docker.sock, this new container will then run the previous commands [...] if we want the volume to be a folder this cannot be easily done

Architecture

Everything is stored in the config.yaml file. This file contains a list of projects to deploy and the configuration for each one.

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