Skip to content
Snippets Groups Projects
Unverified Commit d7b9643b authored by Bekerle, Patrizio's avatar Bekerle, Patrizio :fire:
Browse files

Add deployment configuration (VPU/Middleware/API#40)

parent c4cbda44
No related branches found
No related tags found
No related merge requests found
Pipeline #9507 failed
image: registry.gitlab.tugraz.at/vpu/apps/signature/main:v1
before_script:
- "sed -i 's|git@gitlab.tugraz.at:VPU|../..|g' .gitmodules"
- git submodule sync
- git submodule update --init
stages:
- test
- deploy
test:
stage: test
script:
- npm install
- npm run build-dev
- npm run build
- npm test
linting:
stage: test
allow_failure: true
script:
- npm install
- npm run lint
.deploy_defaults: &deploy_defaults
stage: deploy
script:
# Add ssh key
- mkdir -p ~/.ssh
- echo "${DEPLOY_KEY}" | tr -d '\r' > ~/.ssh/id_rsa
- chmod 700 ~/.ssh && chmod 600 ~/.ssh/id_rsa
- ssh-keyscan -t rsa "${DEPLOY_HOST}" >> ~/.ssh/known_hosts
# Deploy
- dep deploy "${CI_ENVIRONMENT_NAME}"
- echo "Deployed to ${CI_ENVIRONMENT_URL}"
deploy_demo:
only:
refs:
- demo
environment:
name: demo
url: https://frontend-demo.tugraz.at
variables:
DEPLOY_HOST: mw01-dev.tugraz.at
DEPLOY_KEY: "$DEPLOY_SSH_KEY"
<<: *deploy_defaults
deploy_development:
only:
refs:
- master
environment:
name: development
url: https://mw-frontend-dev.tugraz.at
variables:
DEPLOY_HOST: mw01-dev.tugraz.at
DEPLOY_KEY: "$DEPLOY_SSH_KEY"
<<: *deploy_defaults
deploy_production:
only:
refs:
- production
environment:
name: production
url: https://signature.tugraz.at
variables:
DEPLOY_HOST: mw01-prod.tugraz.at
DEPLOY_KEY: "$DEPLOY_SSH_KEY"
<<: *deploy_defaults
FROM debian:buster
ENV LANG C.UTF-8
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y \
git \
curl \
&& rm -rf /var/lib/apt/lists/*
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash - \
&& rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y \
nodejs \
chromium \
firefox-esr \
composer \
php-zip \
rsync \
sudo \
&& rm -rf /var/lib/apt/lists/*
RUN useradd -u 1000 -ms /bin/bash user
RUN echo 'user ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
USER user
WORKDIR /home/user
# Install deployer globally and add it to PATH
ENV COMPOSER_HOME="/home/user/.composer"
RUN mkdir -p "${COMPOSER_HOME}"
ADD composer.lock "${COMPOSER_HOME}"
ADD composer.json "${COMPOSER_HOME}"
RUN composer global install
ENV PATH "${COMPOSER_HOME}/vendor/bin:${PATH}"
\ No newline at end of file
* In case of an incompatible change increase the tag version number in build.sh
* ./build.sh
* (first time) sudo docker login registry.gitlab.tugraz.at
* sudo docker push registry.gitlab.tugraz.at/vpu/apps/signature/main:v1
\ No newline at end of file
#!/bin/bash
set -e
TAG="registry.gitlab.tugraz.at/vpu/apps/signature/main:v1"
sudo docker build --tag "${TAG}" --file "Dockerfile" .
sudo docker run --rm --security-opt label=disable \
--volume "$(pwd)/..:/home/user/app" --workdir "/home/user/app" \
--tty --interactive "${TAG}" bash
echo "Now run: sudo docker push '$TAG'"
{
"require": {
"symfony/process": " ^4.4",
"symfony/console": " ^4.4",
"symfony/yaml": " ^4.4",
"deployer/deployer": " ^6.4",
"deployer/recipes": " ^6.2"
}
}
This diff is collapsed.
<?php
namespace Deployer;
require 'recipe/common.php';
require 'recipe/rsync.php';
// Global config
set('allow_anonymous_stats', false);
// Hosts
host('demo')
->stage('demo')
->hostname('mw@mw01-dev.tugraz.at')
->set('deploy_path', '/home/mw/demo/deploy/apps/signature')
-> set('rsync',[
'exclude' => [
'.git',
'deploy.php',
],
'exclude-file' => false,
'include' => [],
'include-file' => false,
'filter' => [],
'filter-file' => false,
'filter-perdir'=> false,
'flags' => 'rz',
'options' => ['delete'],
'timeout' => 60,
])
-> set('rsync_src', __DIR__ . '/dist')
-> set('rsync_dest','{{release_path}}');
host('development')
->stage('development')
->hostname('mw@mw01-dev.tugraz.at')
->set('deploy_path', '/home/mw/dev/deploy/apps/signature')
-> set('rsync',[
'exclude' => [
'.git',
'deploy.php',
],
'exclude-file' => false,
'include' => [],
'include-file' => false,
'filter' => [],
'filter-file' => false,
'filter-perdir'=> false,
'flags' => 'rz',
'options' => ['delete'],
'timeout' => 60,
])
-> set('rsync_src', __DIR__ . '/dist')
-> set('rsync_dest','{{release_path}}');
host('production')
->stage('production')
->hostname('mw@mw01-prod.tugraz.at')
->set('deploy_path', '/home/mw/prod_signature/deploy')
-> set('rsync',[
'exclude' => [
'.git',
'deploy.php',
],
'exclude-file' => false,
'include' => [],
'include-file' => false,
'filter' => [],
'filter-file' => false,
'filter-perdir'=> false,
'flags' => 'rz',
'options' => ['delete'],
'timeout' => 60,
])
-> set('rsync_src', __DIR__ . '/dist')
-> set('rsync_dest','{{release_path}}');
// Demo build task
task('build-demo', function () {
runLocally("npm install");
runLocally("npm run build-demo");
})->onStage('demo');
// Demo dev task
task('build-development', function () {
runLocally("npm install");
runLocally("npm run build-dev");
})->onStage('development');
//Production task
task('build-production', function () {
runLocally("npm install");
runLocally("npm run build-prod");
})->onStage('production');
// Deploy task
task('deploy', [
'deploy:info',
'build-demo',
'build-development',
'build-production',
'deploy:prepare',
'deploy:lock',
'deploy:release',
'rsync',
'deploy:shared',
'deploy:symlink',
'deploy:unlock',
'cleanup',
'success',
]);
after('deploy:failed', 'deploy:unlock');
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment