penpot/pipeline.yml
2025-04-29 17:54:21 +02:00

163 lines
5.3 KiB
YAML

---
resource_types:
- name: aptly-resource
type: docker-image
source:
repository: git.datentonne.net/docker-public/aptly-resource
tag: latest
resources:
- name: penpot
type: github-release
source:
owner: penpot
repository: penpot
access_token: ((github.access_token))
- name: penpot-deb
type: aptly-resource
source:
api_uri: https://apt-api.datentonne.net/
repo_uri: https://apt.datentonne.net/
repo: datentonne
distribution: debian
component: main
architecture: amd64
package: penpot
username: ((aptly.username))
password: ((aptly.password))
timeout: 1801
keep_versions: 5
jobs:
- name: build
plan:
- get: penpot
trigger: true
params:
globs:
- '*.tar.gz'
- task: build
config:
platform: linux
image_resource:
type: registry-image
source:
repository: git.datentonne.net/docker-public/fpm-docker
tag: latest
inputs:
- name: penpot
outputs:
- name: deb
run:
path: /bin/bash
args:
- -c
- |
export VERSION="$(cat penpot/version)"
export VERSION_OUT="$(cat penpot/version)-$(date +%s)"
cd penpot
mkdir -p etc/penpot
mkdir -p opt/penpot
cat <<- EOF > penpot.service
[Unit]
Description=penpot service with docker compose
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=true
WorkingDirectory=/opt/penpot
ExecStart=docker compose up -d --remove-orphans
ExecStop=docker compose down
[Install]
WantedBy=multi-user.target
EOF
cat <<- EOF > after-install
EOF
chmod +x after-install
#cat <<- EOF > opt/penpot/env
# TAG=${VERSION}
# EOF
#ln -s env opt/penpot/.env
mkdir -p opt
cat <<- EOF > opt/penpot/docker-compose.yml
---
version: "3.5"
networks:
penpot:
volumes:
penpot_postgres_data:
penpot_assets_data:
services:
penpot-frontend:
image: "penpotapp/frontend:${VERSION}"
ports:
- 9001:8080
volumes:
- penpot_assets_data:/opt/data
env_file:
- config.env
depends_on:
- penpot-backend
- penpot-exporter
networks:
- penpot
penpot-backend:
image: "penpotapp/backend:${VERSION}"
volumes:
- penpot_assets_data:/opt/data
depends_on:
- penpot-postgres
- penpot-redis
env_file:
- config.env
networks:
- penpot
penpot-exporter:
image: "penpotapp/exporter:${VERSION}"
env_file:
- config.env
environment:
# Don't touch it; this uses internal docker network to
# communicate with the frontend.
- PENPOT_PUBLIC_URI=http://penpot-frontend
networks:
- penpot
penpot-postgres:
image: "postgres:14"
restart: always
stop_signal: SIGINT
environment:
- POSTGRES_INITDB_ARGS=--data-checksums
- POSTGRES_DB=penpot
- POSTGRES_USER=penpot
- POSTGRES_PASSWORD=penpot
volumes:
- penpot_postgres_data:/var/lib/postgresql/data
networks:
- penpot
penpot-redis:
image: redis:7
restart: always
networks:
- penpot
EOF
fpm \
--verbose \
-f \
-n penpot \
-s dir \
-t deb \
-v $VERSION_OUT \
--after-install after-install \
--config-files opt/penpot/docker-compose.yml \
--deb-systemd penpot.service \
opt/penpot/=/opt/penpot/
dpkg-deb -c penpot_*.deb
cd ..
mv -v penpot/penpot_${VERSION_OUT}_amd64.deb deb/
echo "deb/penpot_${VERSION_OUT}_amd64.deb" > deb/filename
- put: penpot-deb
params:
archive_file: deb/filename