commit 145690f8ba769cc6f7730edb51b8d0a621defa28 Author: Philipp Dieter Date: Tue Dec 20 03:26:13 2022 +0100 [TASK] Initial commit diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..4ce5440 --- /dev/null +++ b/Makefile @@ -0,0 +1,2 @@ +set_pipeline: + fly -t datentonne sp -p presentator -c pipeline.yml diff --git a/pipeline.yml b/pipeline.yml new file mode 100644 index 0000000..4151de1 --- /dev/null +++ b/pipeline.yml @@ -0,0 +1,177 @@ +--- +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 + opt/presentator/params-local.php + '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