presentator/pipeline.yml

178 lines
7.3 KiB
YAML

---
resource_types:
- name: aptly-resource
type: docker-image
source:
repository: docker.datentonne.net/concourse/aptly-resource
tag: latest
resources:
- name: presentator
type: github-release
source:
owner: presentator
repository: presentator
access_token: ((github.access_token))
- name: presentator-docker
type: git
source:
uri: https://github.com/presentator/presentator-docker.git
- name: presentator-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: presentator-docker
username: ((aptly.username))
password: ((aptly.password))
timeout: 1801
keep_versions: 5
jobs:
- name: build
plan:
- get: presentator
trigger: true
params:
globs:
- dummy-*-linux-amd64
- get: presentator-docker
trigger: true
params:
globs:
- dummy-*-linux-amd64
- task: build
config:
platform: linux
image_resource:
type: registry-image
source: { repository: ruby }
inputs:
- name: presentator
- name: presentator-docker
outputs:
- name: deb
run:
path: /bin/bash
args:
- -c
- |
export VERSION="$(cat presentator/version)"
export VERSION_OUT="$(cat presentator/version)-$(date +%s)"
gem install fpm
cd presentator
mkdir -p etc/presentator
mkdir -p opt/presentator
cp ../presentator-docker/docker-compose-example/php.ini opt/presentator/
cp ../presentator-docker/docker-compose-example/vhosts.conf opt/presentator/
cp ../presentator-docker/docker-compose-example/spa.json opt/presentator/
cp ../presentator-docker/docker-compose-example/base-local.php opt/presentator/
cp ../presentator-docker/docker-compose-example/base-local.php opt/presentator/
cp ../presentator-docker/docker-compose-example/init.sql opt/presentator/
mkdir opt/presentator/db
mkdir opt/presentator/storage
cat <<- EOF > presentator.service
[Unit]
Description=presentator service with docker compose
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=true
WorkingDirectory=/opt/presentator
ExecStart=docker compose up -d --remove-orphans
ExecStop=docker compose down
[Install]
WantedBy=multi-user.target
EOF
cat <<- EOF > opt/presentator/domain.php
<?php
return 'example.com';
EOF
cat <<- EOF > opt/presentator/params-local.php
<?php
\$domain = require(__DIR__ . '/domain.php');
return [
'baseStorageUrl' => 'https://' . \$domain . '/storage',
'appUrl' => 'https://' . \$domain . '/#/',
'authClientRedirectUri' => 'https://' . \$domain . '/#/auth-callback',
'activationUrl' => 'https://' . \$domain . '/#/activate/{token}',
'passwordResetUrl' => 'https://' . \$domain . '/#/reset-password/{token}',
'emailChangeUrl' => 'https://' . \$domain . '/#/change-email/{token}',
'projectLinkUrl' => 'https://' . \$domain . '/#/{slug}',
'projectLinkCommentViewUrl' => 'https://' . \$domain . '/#/{slug}/prototypes/{prototypeId}/screens/{screenId}?mode=comments&commentId={commentId}',
'commentViewUrl' => 'https://' . \$domain . '/#/projects/{projectId}/prototypes/{prototypeId}/screens/{screenId}?mode=comments&commentId={commentId}',
'noreplyEmail' => 'noreply@example.com',
'supportEmail' => 'support@example.com',
];
EOF
cat <<- EOF > after-install
EOF
chmod +x after-install
mkdir -p opt
cat <<- EOF > opt/presentator/docker-compose.yml
version: '3'
services:
nginx-proxy:
image: jwilder/nginx-proxy
restart: always
ports:
- 9002:80
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
mariadb:
image: mariadb:10
restart: always
ports:
- 3306:3306
volumes:
- ./db:/var/lib/mysql
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
environment:
- MYSQL_ROOT_PASSWORD=presentator
- MYSQL_USER=presentator
- MYSQL_PASSWORD=presentator
presentator:
image: ganigeorgiev/presentator:${VERSION}
depends_on:
- mariadb
restart: always
environment:
- VIRTUAL_HOST=\${DOMAIN}
volumes:
- ./php.ini:/usr/local/etc/php/php.ini
- ./vhosts.conf:/etc/apache2/sites-enabled/000-default.conf
- ./base-local.php:/var/www/html/config/base-local.php
- ./domain.php:/var/www/html/config/domain.php
- ./params-local.php:/var/www/html/config/params-local.php
- ./spa.json:/var/www/html/config/spa.json
- ./storage:/var/www/html/web/storage
EOF
fpm \
--verbose \
-f \
-n presentator-docker \
-s dir \
-t deb \
-v $VERSION_OUT \
--after-install after-install \
--config-files opt/presentator/docker-compose.yml \
--config-files opt/presentator/domain.php \
--config-files opt/presentator/base-local.php \
--deb-systemd presentator.service \
--deb-systemd-auto-start \
--deb-systemd-enable \
--deb-systemd-restart-after-upgrade \
opt/presentator/=/opt/presentator/
dpkg-deb -c presentator-docker_*.deb
cd ..
mv -v presentator/presentator-docker_${VERSION_OUT}_amd64.deb deb/
echo "deb/presentator-docker_${VERSION_OUT}_amd64.deb" > deb/filename
- put: presentator-deb
params:
archive_file: deb/filename