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 cca7433e60 chore: updated readme 2 years ago
public intial commit 2 years ago
scripts feat: working jobs page with sse 2 years ago
src chore: deploy styles 2 years ago
.dockerignore feat: dockerfiles 2 years ago
.env.sample chore: deploy styles 2 years ago
.gitignore feat: working jobs page with sse 2 years ago
.prettierrc prototype of the deploys page using the inspect component 2 years ago
Dockerfile chore: working dockerfile 2 years ago
README.md chore: updated readme 2 years ago
astro.config.mjs intial commit 2 years ago
package.json chore: working dockerfile 2 years ago
pnpm-lock.yaml chore: working dockerfile 2 years ago
tsconfig.json feat: working jobs page with sse 2 years 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