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