mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2026-01-03 20:12:51 +00:00
refactor: move node and builder images
This commit is contained in:
7
.changeset/pretty-timers-complain.md
Normal file
7
.changeset/pretty-timers-complain.md
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@openstapps/projectmanagement': major
|
||||
'@openstapps/builder-image': major
|
||||
'@openstapps/node-image': major
|
||||
---
|
||||
|
||||
Move images to separate packages
|
||||
@@ -12,7 +12,7 @@ include:
|
||||
- local: /frontend/app/.gitlab-ci.yml
|
||||
- local: /.gitlab/publishing.gitlab-ci.yml
|
||||
rules:
|
||||
- if: $CI_COMMIT_TAG
|
||||
- if: '$CI_COMMIT_MESSAGE =~ /ci: publish release$/'
|
||||
when: always
|
||||
|
||||
variables:
|
||||
@@ -76,10 +76,10 @@ build:
|
||||
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
||||
variables:
|
||||
DEPLOY_ID: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
|
||||
- if: $CI_COMMIT_BRANCH == 'main' || $CI_COMMIT_TAG =~ /\d+\.\d+\.\d+$/
|
||||
- if: $CI_COMMIT_BRANCH == 'main'
|
||||
variables:
|
||||
DEPLOY_ID: production
|
||||
- if: $CI_COMMIT_BRANCH == 'develop' || $CI_COMMIT_TAG =~ /-next\.\d+$/
|
||||
- if: $CI_COMMIT_BRANCH == 'develop'
|
||||
variables:
|
||||
DEPLOY_ID: staging
|
||||
|
||||
@@ -116,7 +116,7 @@ unit:
|
||||
coverage_format: cobertura
|
||||
path: coverage.xml
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == 'merge_request_event' || $CI_COMMIT_BRANCH == 'main' || $CI_COMMIT_BRANCH == 'develop' || $CI_COMMIT_TAG
|
||||
- if: $CI_PIPELINE_SOURCE == 'merge_request_event' || $CI_COMMIT_BRANCH == 'main' || $CI_COMMIT_BRANCH == 'develop'
|
||||
|
||||
audit:
|
||||
stage: audit
|
||||
@@ -124,7 +124,7 @@ audit:
|
||||
script:
|
||||
- pnpm audit --prod
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == 'merge_request_event' || $CI_COMMIT_BRANCH == 'develop' || $CI_COMMIT_TAG
|
||||
- if: $CI_PIPELINE_SOURCE == 'merge_request_event' || $CI_COMMIT_BRANCH == 'develop'
|
||||
allow_failure: true
|
||||
- if: $CI_COMMIT_BRANCH == 'main'
|
||||
allow_failure: false
|
||||
|
||||
@@ -35,6 +35,20 @@ publish image:
|
||||
DEPLOY_DIR: .deploy/backend
|
||||
- IMAGE_NAME: proxy
|
||||
DEPLOY_DIR: .deploy/proxy
|
||||
- IMAGE_NAME: api
|
||||
DEPLOY_DIR: .deploy/api-cli
|
||||
- IMAGE_NAME: minimal-connector
|
||||
DEPLOY_DIR: .deploy/minimal-connector
|
||||
- IMAGE_NAME: minimal-plugin
|
||||
DEPLOY_DIR: .deploy/minimal-plugin
|
||||
- IMAGE_NAME: node
|
||||
DEPLOY_DIR: configuration/node-image
|
||||
- IMAGE_NAME: builder
|
||||
DEPLOY_DIR: configuration/builder-image
|
||||
- IMAGE_NAME: app-builder
|
||||
DEPLOY_DIR: configuration/app-builder-image
|
||||
- IMAGE_NAME: app
|
||||
DEPLOY_DIR: frontend/app
|
||||
|
||||
publish packages:
|
||||
stage: publish
|
||||
|
||||
@@ -19,4 +19,4 @@ integration:
|
||||
junit:
|
||||
- backend/backend/coverage/integration-report-junit.xml
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == 'merge_request_event' || $CI_COMMIT_BRANCH == 'main' || $CI_COMMIT_BRANCH == 'develop' || $CI_COMMIT_TAG
|
||||
- if: $CI_PIPELINE_SOURCE == 'merge_request_event' || $CI_COMMIT_BRANCH == 'main' || $CI_COMMIT_BRANCH == 'develop'
|
||||
|
||||
114
configuration/app-builder-image/Dockerfile
Normal file
114
configuration/app-builder-image/Dockerfile
Normal file
@@ -0,0 +1,114 @@
|
||||
### Set base image
|
||||
FROM ubuntu:20.04
|
||||
|
||||
LABEL version="2.0.0" \
|
||||
description="Build environment for the StApps app." \
|
||||
maintainer="Jovan Krunić <krunic@uni-frankfurt.de>"
|
||||
|
||||
### Configure versions to install
|
||||
ENV ANDROID_APIS="android-30" \
|
||||
ANDROID_BUILD_TOOLS_VERSION="30.0.2" \
|
||||
NPM_VERSION="^6.0.0" \
|
||||
IONIC_VERSION="^6.0.0" \
|
||||
CORDOVA_RES_VERSION="latest" \
|
||||
### Configure download URLs
|
||||
ANDROID_SDK_TOOLS_DOWNLOAD_URL="https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip" \
|
||||
GOOGLE_SIGNING_KEY_URL="https://dl-ssl.google.com/linux/linux_signing_key.pub" \
|
||||
GOOGLE_CHROME_REPOSITORY_URL="http://dl.google.com/linux/chrome/deb/" \
|
||||
### Android SDK path
|
||||
ANDROID_SDK_ROOT="/opt/android-sdk" \
|
||||
### Installation files
|
||||
SCRIPTS_DIRECTORY="scripts" \
|
||||
NODE_SETUP_SCRIPT="node_setup.sh" \
|
||||
TMP_PROJECT_NAME="tmp-project"
|
||||
|
||||
### Set $PATH
|
||||
#ENV PATH=$ANDROID_SDK_ROOT/cmdline-tools/:$ANDROID_SDK_ROOT/cmdline-tools/bin:$ANDROID_SDK_ROOT/platform-tools:$ANDROID_SDK_ROOT/build-tools/$ANDROID_BUILD_TOOLS_VERSION:$PATH
|
||||
ENV PATH=$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/cmdline-tools/tools/bin:$ANDROID_SDK_ROOT/platform-tools:$ANDROID_SDK_ROOT/build-tools/$ANDROID_BUILD_TOOLS_VERSION:$PATH
|
||||
|
||||
### Replace shell with bash
|
||||
RUN rm /bin/sh && ln -s /bin/bash /bin/sh && \
|
||||
### Set debconf to run non-interactively
|
||||
echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
|
||||
|
||||
### Install locales and base dependencies
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
locales \
|
||||
apt-transport-https \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
curl \
|
||||
libssl-dev \
|
||||
git \
|
||||
gradle \
|
||||
ca-certificates-java \
|
||||
python \
|
||||
python3-pip \
|
||||
software-properties-common \
|
||||
ssh \
|
||||
unzip \
|
||||
wget \
|
||||
gpg-agent \
|
||||
jq \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
### Install Java Development Kit 11
|
||||
RUN add-apt-repository -y ppa:openjdk-r/ppa && apt-get update && \
|
||||
apt-get install --no-install-recommends -y openjdk-11-jdk \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
### Setup the locale
|
||||
RUN sed -i 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
|
||||
locale-gen en_US.UTF-8
|
||||
ENV LANG=en_US.UTF-8 \
|
||||
LANGUAGE=en_US \
|
||||
LC_ALL=en_US.UTF-8
|
||||
RUN dpkg-reconfigure --frontend noninteractive locales
|
||||
|
||||
### add chrome repository
|
||||
RUN wget -q -O - $GOOGLE_SIGNING_KEY_URL | apt-key add -
|
||||
RUN echo "deb $GOOGLE_CHROME_REPOSITORY_URL stable main" >> /etc/apt/sources.list.d/google.list
|
||||
|
||||
### Install Chrome
|
||||
RUN apt-get update -y && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
### Install chrome and virtual frame buffer
|
||||
google-chrome-stable xvfb && \
|
||||
### Clear apt cache
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
### Workaround to fix cacerts problem (Ubuntu):
|
||||
### https://stackoverflow.com/questions/6784463/error-trustanchors-parameter-must-be-non-empty
|
||||
RUN rm /etc/ssl/certs/java/cacerts && \
|
||||
update-ca-certificates -f
|
||||
|
||||
### Install android
|
||||
RUN curl $ANDROID_SDK_TOOLS_DOWNLOAD_URL > /tmp/android-sdk.zip && \
|
||||
unzip /tmp/android-sdk.zip && \
|
||||
mkdir -p $ANDROID_SDK_ROOT/cmdline-tools && \
|
||||
mv cmdline-tools $ANDROID_SDK_ROOT/cmdline-tools/tools && \
|
||||
### Add licences (for "auto-accept licenses")
|
||||
yes | sdkmanager --licenses && \
|
||||
### Install platform tools
|
||||
sdkmanager "platforms;$ANDROID_APIS" "build-tools;$ANDROID_BUILD_TOOLS_VERSION"
|
||||
|
||||
### Copy scripts directory into the tmp folder, so it's available to the following commands
|
||||
COPY $SCRIPTS_DIRECTORY/$NODE_SETUP_SCRIPT /tmp/
|
||||
|
||||
RUN bash /tmp/$NODE_SETUP_SCRIPT && apt-get install -y nodejs && \
|
||||
### Install wanted npm version
|
||||
npm install -g --unsafe-perm npm@$NPM_VERSION && \
|
||||
### Install needed global npm packages
|
||||
npm install -g --unsafe-perm @ionic/cli@$IONIC_VERSION cordova-res@$CORDOVA_RES_VERSION
|
||||
|
||||
RUN cd / && ionic start $TMP_PROJECT_NAME blank --type=angular --capacitor --no-git --no-interactive && \
|
||||
cd $TMP_PROJECT_NAME && ionic capacitor add android && export NG_CLI_ANALYTICS=ci && ionic capacitor build android --no-open && \
|
||||
cd android && ./gradlew assembleDebug && \
|
||||
cd / && rm -rf $TMP_PROJECT_NAME
|
||||
|
||||
### Set working directory
|
||||
WORKDIR /app
|
||||
|
||||
CMD [""]
|
||||
20
configuration/app-builder-image/package.json
Normal file
20
configuration/app-builder-image/package.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "@openstapps/app-builder-image",
|
||||
"version": "3.0.0-next.3",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "GPL-3.0-only",
|
||||
"author": "Karl-Philipp Wulfert <krlwlfrt@gmail.com>",
|
||||
"contributors": [
|
||||
"Anselm Stordeur <anselmstordeur@gmail.com>",
|
||||
"Jovan Krunić <jovan.krunic@gmail.com>",
|
||||
"Michel Jonathan Schmitz",
|
||||
"Rainer Killinger <mail-openstapps@killinger.co>",
|
||||
"Thea Schöbl <dev@theaninova.de>"
|
||||
],
|
||||
"files": [
|
||||
"Dockerfile",
|
||||
"README.md",
|
||||
"CHANGELOG.md"
|
||||
]
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
FROM docker/compose
|
||||
|
||||
ARG NODE_VERSION="14"
|
||||
ARG NODE_VERSION="18"
|
||||
|
||||
RUN apk update && apk add nodejs npm git jq curl
|
||||
|
||||
20
configuration/builder-image/package.json
Normal file
20
configuration/builder-image/package.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "@openstapps/builder-image",
|
||||
"version": "3.0.0-next.3",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "GPL-3.0-only",
|
||||
"author": "Karl-Philipp Wulfert <krlwlfrt@gmail.com>",
|
||||
"contributors": [
|
||||
"Anselm Stordeur <anselmstordeur@gmail.com>",
|
||||
"Jovan Krunić <jovan.krunic@gmail.com>",
|
||||
"Michel Jonathan Schmitz",
|
||||
"Rainer Killinger <mail-openstapps@killinger.co>",
|
||||
"Thea Schöbl <dev@theaninova.de>"
|
||||
],
|
||||
"files": [
|
||||
"Dockerfile",
|
||||
"README.md",
|
||||
"CHANGELOG.md"
|
||||
]
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM node:14-alpine
|
||||
FROM node:18-alpine
|
||||
|
||||
RUN apk update && apk add git curl jq && mkdir -p /opt
|
||||
|
||||
20
configuration/node-image/package.json
Normal file
20
configuration/node-image/package.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "@openstapps/node-image",
|
||||
"version": "3.0.0-next.3",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "GPL-3.0-only",
|
||||
"author": "Karl-Philipp Wulfert <krlwlfrt@gmail.com>",
|
||||
"contributors": [
|
||||
"Anselm Stordeur <anselmstordeur@gmail.com>",
|
||||
"Jovan Krunić <jovan.krunic@gmail.com>",
|
||||
"Michel Jonathan Schmitz",
|
||||
"Rainer Killinger <mail-openstapps@killinger.co>",
|
||||
"Thea Schöbl <dev@theaninova.de>"
|
||||
],
|
||||
"files": [
|
||||
"Dockerfile",
|
||||
"README.md",
|
||||
"CHANGELOG.md"
|
||||
]
|
||||
}
|
||||
@@ -1,105 +1,3 @@
|
||||
image: registry.gitlab.com/openstapps/projectmanagement/node
|
||||
|
||||
before_script:
|
||||
- npm ci
|
||||
|
||||
default:
|
||||
tags:
|
||||
- performance
|
||||
|
||||
stages:
|
||||
- build
|
||||
- test
|
||||
- maintenance
|
||||
- audit
|
||||
- publish
|
||||
- deploy
|
||||
|
||||
npm build:
|
||||
stage: build
|
||||
script:
|
||||
- npm run build
|
||||
artifacts:
|
||||
paths:
|
||||
- lib
|
||||
|
||||
npm test:
|
||||
script:
|
||||
- npm run test
|
||||
stage: test
|
||||
|
||||
docker image builder:
|
||||
image: registry.gitlab.com/openstapps/projectmanagement/builder
|
||||
stage: build
|
||||
only:
|
||||
variables:
|
||||
- $BUILD_IMAGES == "true"
|
||||
variables:
|
||||
DOCKER_DRIVER: overlay2
|
||||
services:
|
||||
- docker:dind
|
||||
script:
|
||||
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
|
||||
- docker build -t registry.gitlab.com/openstapps/projectmanagement/builder -f images/builder/Dockerfile .
|
||||
- docker push registry.gitlab.com/openstapps/projectmanagement/builder
|
||||
tags:
|
||||
- secrecy
|
||||
|
||||
docker image node:
|
||||
image: registry.gitlab.com/openstapps/projectmanagement/builder
|
||||
stage: build
|
||||
only:
|
||||
variables:
|
||||
- $BUILD_IMAGES == "true"
|
||||
variables:
|
||||
DOCKER_DRIVER: overlay2
|
||||
services:
|
||||
- docker:dind
|
||||
script:
|
||||
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com/openstapps/projectmanagement/
|
||||
- docker build -t registry.gitlab.com/openstapps/projectmanagement/node -f images/node/Dockerfile images/node
|
||||
- docker push registry.gitlab.com/openstapps/projectmanagement/node
|
||||
tags:
|
||||
- secrecy
|
||||
|
||||
docker image cypress:
|
||||
image: registry.gitlab.com/openstapps/projectmanagement/builder
|
||||
stage: build
|
||||
only:
|
||||
variables:
|
||||
- $BUILD_IMAGES == "true"
|
||||
variables:
|
||||
DOCKER_DRIVER: overlay2
|
||||
services:
|
||||
- docker:dind
|
||||
script:
|
||||
- export CHROME_VERSION=$(curl -fsSL https://versionhistory.googleapis.com/v1/chrome/platforms/linux/channels/stable/versions | jq -r '.versions[0].version')
|
||||
- export FIREFOX_VERSION=$(curl -fsSL https://product-details.mozilla.org/1.0/firefox_versions.json | jq -r '.LATEST_FIREFOX_VERSION')
|
||||
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com/openstapps/projectmanagement/
|
||||
- docker build --build-arg CHROME_VERSION=$CHROME_VERSION --build-arg FIREFOX_VERSION=$FIREFOX_VERSION -t registry.gitlab.com/openstapps/projectmanagement/cypress -f images/cypress/Dockerfile images/cypress
|
||||
- docker push registry.gitlab.com/openstapps/projectmanagement/cypress
|
||||
tags:
|
||||
- secrecy
|
||||
|
||||
npm audit:
|
||||
allow_failure: true
|
||||
except:
|
||||
- schedules
|
||||
script:
|
||||
- npm audit
|
||||
stage: audit
|
||||
|
||||
scheduled npm audit:
|
||||
only:
|
||||
- schedules
|
||||
except:
|
||||
variables:
|
||||
- $MAINTENANCE_MODE
|
||||
- $RENOVATE
|
||||
script:
|
||||
- npm audit --production
|
||||
stage: audit
|
||||
|
||||
tidy:
|
||||
script:
|
||||
- node lib/cli tidy
|
||||
@@ -131,32 +29,6 @@ unlabel:
|
||||
tags:
|
||||
- secrecy
|
||||
|
||||
pages:
|
||||
stage: deploy
|
||||
script:
|
||||
- npm run documentation
|
||||
- mv docs public
|
||||
only:
|
||||
- /^v[0-9]+\.[0-9]+\.[0-9]+$/
|
||||
artifacts:
|
||||
paths:
|
||||
- public
|
||||
|
||||
npm package:
|
||||
dependencies:
|
||||
- npm build
|
||||
tags:
|
||||
- secrecy
|
||||
stage: publish
|
||||
script:
|
||||
- echo "//registry.npmjs.org/:_authToken=$NPM_AUTH_TOKEN" > ~/.npmrc
|
||||
- npm publish
|
||||
only:
|
||||
- /^v[0-9]+.[0-9]+.[0-9]+$/
|
||||
artifacts:
|
||||
paths:
|
||||
- lib
|
||||
|
||||
renovate:
|
||||
image: renovate/renovate:slim
|
||||
services:
|
||||
|
||||
@@ -1,101 +0,0 @@
|
||||
# WARNING: this file was autogenerated by generate-browser-image.js
|
||||
# using
|
||||
# yarn add:browser -- 14.19.0 --chrome=100.0.4896.88 --firefox=99.0.1 --edge
|
||||
#
|
||||
# build args added afterwards
|
||||
#
|
||||
FROM cypress/base:14.21.1
|
||||
|
||||
ARG CHROME_VERSION="unknown"
|
||||
ARG FIREFOX_VERSION="unknown"
|
||||
|
||||
USER root
|
||||
|
||||
RUN node --version
|
||||
|
||||
# Install dependencies
|
||||
RUN apt-get update && \
|
||||
apt-get install -y \
|
||||
fonts-liberation \
|
||||
git \
|
||||
libcurl4 \
|
||||
libcurl3-gnutls \
|
||||
libcurl3-nss \
|
||||
xdg-utils \
|
||||
wget \
|
||||
curl \
|
||||
# firefox dependencies
|
||||
bzip2 \
|
||||
# add codecs needed for video playback in firefox
|
||||
# https://github.com/cypress-io/cypress-docker-images/issues/150
|
||||
mplayer \
|
||||
# edge dependencies
|
||||
gnupg \
|
||||
dirmngr \
|
||||
# clean up
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& apt-get clean
|
||||
|
||||
# install libappindicator3-1 - not included with Debian 11
|
||||
RUN wget --no-verbose -O /usr/src/libappindicator3-1_0.4.92-7_amd64.deb "http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-7_amd64.deb" && \
|
||||
dpkg -i /usr/src/libappindicator3-1_0.4.92-7_amd64.deb ; \
|
||||
apt update && \
|
||||
apt --fix-broken install -y && \
|
||||
rm -rf /var/lib/apt/lists/* && \
|
||||
apt-get clean && \
|
||||
rm -f /usr/src/libappindicator3-1_0.4.92-7_amd64.deb
|
||||
|
||||
# install Chrome browser
|
||||
RUN wget --no-verbose -O /usr/src/google-chrome-stable_current_amd64.deb "http://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_${CHROME_VERSION}-1_amd64.deb" && \
|
||||
dpkg -i /usr/src/google-chrome-stable_current_amd64.deb ; \
|
||||
apt update && \
|
||||
apt --fix-broken install -y && \
|
||||
rm -rf /var/lib/apt/lists/* && \
|
||||
apt-get clean && \
|
||||
rm -f /usr/src/google-chrome-stable_current_amd64.deb
|
||||
|
||||
# "fake" dbus address to prevent errors
|
||||
# https://github.com/SeleniumHQ/docker-selenium/issues/87
|
||||
ENV DBUS_SESSION_BUS_ADDRESS=/dev/null
|
||||
|
||||
# install Firefox browser
|
||||
RUN wget --no-verbose -O /tmp/firefox.tar.bz2 "https://download-installer.cdn.mozilla.net/pub/firefox/releases/${FIREFOX_VERSION}/linux-x86_64/en-US/firefox-${FIREFOX_VERSION}.tar.bz2" && \
|
||||
tar -C /opt -xjf /tmp/firefox.tar.bz2 && \
|
||||
rm /tmp/firefox.tar.bz2 && \
|
||||
ln -fs /opt/firefox/firefox /usr/bin/firefox
|
||||
|
||||
RUN echo "Downloading Latest Edge version..."
|
||||
|
||||
## Setup Edge
|
||||
RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
|
||||
RUN install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/
|
||||
RUN sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-dev.list'
|
||||
RUN rm microsoft.gpg
|
||||
|
||||
## Install Edge
|
||||
RUN apt-get update && \
|
||||
apt-get install -y microsoft-edge-dev \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& apt-get clean
|
||||
|
||||
# Add a link to the browser that allows Cypress to find it
|
||||
RUN ln -s /usr/bin/microsoft-edge /usr/bin/edge
|
||||
|
||||
# versions of local tools
|
||||
RUN echo " node version: $(node -v) \n" \
|
||||
"npm version: $(npm -v) \n" \
|
||||
"yarn version: $(yarn -v) \n" \
|
||||
"debian version: $(cat /etc/debian_version) \n" \
|
||||
"Chrome version: $(google-chrome --version) \n" \
|
||||
"Firefox version: $(firefox --version) \n" \
|
||||
"Edge version: $(edge --version) \n" \
|
||||
"git version: $(git --version) \n" \
|
||||
"whoami: $(whoami) \n"
|
||||
|
||||
# a few environment variables to make NPM installs easier
|
||||
# good colors for most applications
|
||||
ENV TERM=xterm
|
||||
# avoid million NPM install messages
|
||||
ENV npm_config_loglevel=warn
|
||||
# allow installing when the main user is root
|
||||
ENV npm_config_unsafe_perm=true
|
||||
@@ -1,8 +1,8 @@
|
||||
FROM registry.gitlab.com/openstapps/projectmanagement/node
|
||||
FROM registry.gitlab.com/openstapps/projectmanagement/node:v18
|
||||
|
||||
WORKDIR /minimal-connector
|
||||
ENTRYPOINT ["node", "lib/cli.js", "run", "--"]
|
||||
CMD [""]
|
||||
|
||||
# Add connector as last step to reuse layers effectively
|
||||
ADD . /minimal-connector
|
||||
ADD . /minimal-connector
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
],
|
||||
"scripts": {
|
||||
"build": "tsup-node --dts",
|
||||
"deploy": "pnpm --prod --filter=@openstapps/minimal-connector deploy ../../.deploy/minimal-connector",
|
||||
"format": "prettier . -c --ignore-path ../../.gitignore",
|
||||
"format:fix": "prettier --write . --ignore-path ../../.gitignore",
|
||||
"lint": "eslint --ext .ts src/",
|
||||
|
||||
@@ -1 +1 @@
|
||||
nodes/
|
||||
*
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
version: '3.7'
|
||||
services:
|
||||
database:
|
||||
image: registry.gitlab.com/openstapps/database:master
|
||||
image: registry.gitlab.com/openstapps/openstapps/database:2.0.0
|
||||
volumes:
|
||||
- ./database:/usr/share/elasticsearch/data
|
||||
expose:
|
||||
@@ -9,12 +9,12 @@ services:
|
||||
restart: unless-stopped
|
||||
|
||||
backend:
|
||||
image: registry.gitlab.com/openstapps/backend/default:core-0.31
|
||||
image: registry.gitlab.com/openstapps/openstapps/backend:3.0.0-next.0
|
||||
environment:
|
||||
ES_ADDR: "http://database:9200"
|
||||
NODE_CONFIG_ENV: "elasticsearch"
|
||||
ALLOW_NO_TRANSPORT: "true"
|
||||
expose:
|
||||
expose:
|
||||
- 3000
|
||||
ports:
|
||||
- 3000:3000
|
||||
@@ -27,7 +27,7 @@ services:
|
||||
- database
|
||||
|
||||
api:
|
||||
image: registry.gitlab.com/openstapps/api/copy:core-0.23
|
||||
image: registry.gitlab.com/openstapps/openstapps/api:3.0.0-next.0
|
||||
links:
|
||||
- "backend"
|
||||
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
image: registry.gitlab.com/openstapps/projectmanagement/node
|
||||
|
||||
stages:
|
||||
- build
|
||||
- audit
|
||||
- publish
|
||||
- deploy
|
||||
|
||||
before_script:
|
||||
- npm ci
|
||||
|
||||
npm build:
|
||||
stage: build
|
||||
script:
|
||||
- npm run build
|
||||
artifacts:
|
||||
paths:
|
||||
- lib
|
||||
|
||||
audit:
|
||||
allow_failure: true
|
||||
except:
|
||||
- schedules
|
||||
script:
|
||||
- npm audit
|
||||
stage: audit
|
||||
|
||||
scheduled-audit:
|
||||
only:
|
||||
- schedules
|
||||
script:
|
||||
- npm audit --audit-level=high
|
||||
stage: audit
|
||||
|
||||
docker image:
|
||||
image: registry.gitlab.com/openstapps/projectmanagement/builder:latest
|
||||
dependencies:
|
||||
- npm build
|
||||
stage: publish
|
||||
variables:
|
||||
DOCKER_DRIVER: overlay2
|
||||
services:
|
||||
- docker:dind
|
||||
script:
|
||||
- export CORE_VERSION=$(openstapps-projectmanagement get-used-version @openstapps/core)
|
||||
- export VERSION=$(echo -n "$CI_BUILD_REF_NAME" | cut -c 2-)
|
||||
- export IMAGETAG_BASE=$CI_REGISTRY_IMAGE
|
||||
- export IMAGETAG_CORE_VERSION=$IMAGETAG_BASE:core-$CORE_VERSION
|
||||
- export IMAGETAG_VERSION=$IMAGETAG_BASE:$VERSION
|
||||
- export IMAGETAG_LATEST=$IMAGETAG_BASE:latest
|
||||
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
|
||||
- docker build -t $IMAGETAG_LATEST -t $IMAGETAG_VERSION -t $IMAGETAG_CORE_VERSION .
|
||||
- docker push $IMAGETAG_BASE
|
||||
only:
|
||||
- /^v[0-9]+\.[0-9]+\.[0-9]+$/
|
||||
except:
|
||||
- branches
|
||||
tags:
|
||||
- docker
|
||||
|
||||
pages:
|
||||
artifacts:
|
||||
paths:
|
||||
- public
|
||||
only:
|
||||
- /^v[0-9]+\.[0-9]+\.[0-9]+$/
|
||||
script:
|
||||
- npm run documentation
|
||||
- mv docs public
|
||||
stage: deploy
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM registry.gitlab.com/openstapps/projectmanagement/node
|
||||
FROM registry.gitlab.com/openstapps/projectmanagement/node:v18
|
||||
|
||||
WORKDIR /app
|
||||
ENTRYPOINT ["node", "lib/cli.js"]
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
],
|
||||
"scripts": {
|
||||
"build": "tsup-node --dts",
|
||||
"deploy": "pnpm --prod --filter=@openstapps/minimal-plugin deploy ../../.deploy/minimal-plugin",
|
||||
"format": "prettier . -c --ignore-path ../../.gitignore",
|
||||
"format:fix": "prettier --write . --ignore-path ../../.gitignore",
|
||||
"lint": "eslint --ext .ts src/",
|
||||
|
||||
@@ -19,4 +19,4 @@ e2e:
|
||||
- BROWSER: chrome
|
||||
- BROWSER: firefox
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == 'merge_request_event' || $CI_COMMIT_BRANCH == 'main' || $CI_COMMIT_BRANCH == 'develop' || $CI_COMMIT_TAG
|
||||
- if: $CI_PIPELINE_SOURCE == 'merge_request_event' || $CI_COMMIT_BRANCH == 'main' || $CI_COMMIT_BRANCH == 'develop'
|
||||
|
||||
@@ -1,114 +1,13 @@
|
||||
### Set base image
|
||||
FROM ubuntu:20.04
|
||||
# Creates a docker image with only the app as an executable unit
|
||||
# Dependencies need to be installed beforehand
|
||||
# Needs to be build beforehand
|
||||
FROM node:18-alpine
|
||||
|
||||
LABEL version="2.0.0" \
|
||||
description="Build environment for the StApps app." \
|
||||
maintainer="Jovan Krunić <krunic@uni-frankfurt.de>"
|
||||
|
||||
### Configure versions to install
|
||||
ENV ANDROID_APIS="android-30" \
|
||||
ANDROID_BUILD_TOOLS_VERSION="30.0.2" \
|
||||
NPM_VERSION="^6.0.0" \
|
||||
IONIC_VERSION="^6.0.0" \
|
||||
CORDOVA_RES_VERSION="latest" \
|
||||
### Configure download URLs
|
||||
ANDROID_SDK_TOOLS_DOWNLOAD_URL="https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip" \
|
||||
GOOGLE_SIGNING_KEY_URL="https://dl-ssl.google.com/linux/linux_signing_key.pub" \
|
||||
GOOGLE_CHROME_REPOSITORY_URL="http://dl.google.com/linux/chrome/deb/" \
|
||||
### Android SDK path
|
||||
ANDROID_SDK_ROOT="/opt/android-sdk" \
|
||||
### Installation files
|
||||
SCRIPTS_DIRECTORY="scripts" \
|
||||
NODE_SETUP_SCRIPT="node_setup.sh" \
|
||||
TMP_PROJECT_NAME="tmp-project"
|
||||
|
||||
### Set $PATH
|
||||
#ENV PATH=$ANDROID_SDK_ROOT/cmdline-tools/:$ANDROID_SDK_ROOT/cmdline-tools/bin:$ANDROID_SDK_ROOT/platform-tools:$ANDROID_SDK_ROOT/build-tools/$ANDROID_BUILD_TOOLS_VERSION:$PATH
|
||||
ENV PATH=$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/cmdline-tools/tools/bin:$ANDROID_SDK_ROOT/platform-tools:$ANDROID_SDK_ROOT/build-tools/$ANDROID_BUILD_TOOLS_VERSION:$PATH
|
||||
|
||||
### Replace shell with bash
|
||||
RUN rm /bin/sh && ln -s /bin/bash /bin/sh && \
|
||||
### Set debconf to run non-interactively
|
||||
echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
|
||||
|
||||
### Install locales and base dependencies
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
locales \
|
||||
apt-transport-https \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
curl \
|
||||
libssl-dev \
|
||||
git \
|
||||
gradle \
|
||||
ca-certificates-java \
|
||||
python \
|
||||
python3-pip \
|
||||
software-properties-common \
|
||||
ssh \
|
||||
unzip \
|
||||
wget \
|
||||
gpg-agent \
|
||||
jq \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
### Install Java Development Kit 11
|
||||
RUN add-apt-repository -y ppa:openjdk-r/ppa && apt-get update && \
|
||||
apt-get install --no-install-recommends -y openjdk-11-jdk \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
### Setup the locale
|
||||
RUN sed -i 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
|
||||
locale-gen en_US.UTF-8
|
||||
ENV LANG=en_US.UTF-8 \
|
||||
LANGUAGE=en_US \
|
||||
LC_ALL=en_US.UTF-8
|
||||
RUN dpkg-reconfigure --frontend noninteractive locales
|
||||
|
||||
### add chrome repository
|
||||
RUN wget -q -O - $GOOGLE_SIGNING_KEY_URL | apt-key add -
|
||||
RUN echo "deb $GOOGLE_CHROME_REPOSITORY_URL stable main" >> /etc/apt/sources.list.d/google.list
|
||||
|
||||
### Install Chrome
|
||||
RUN apt-get update -y && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
### Install chrome and virtual frame buffer
|
||||
google-chrome-stable xvfb && \
|
||||
### Clear apt cache
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
### Workaround to fix cacerts problem (Ubuntu):
|
||||
### https://stackoverflow.com/questions/6784463/error-trustanchors-parameter-must-be-non-empty
|
||||
RUN rm /etc/ssl/certs/java/cacerts && \
|
||||
update-ca-certificates -f
|
||||
|
||||
### Install android
|
||||
RUN curl $ANDROID_SDK_TOOLS_DOWNLOAD_URL > /tmp/android-sdk.zip && \
|
||||
unzip /tmp/android-sdk.zip && \
|
||||
mkdir -p $ANDROID_SDK_ROOT/cmdline-tools && \
|
||||
mv cmdline-tools $ANDROID_SDK_ROOT/cmdline-tools/tools && \
|
||||
### Add licences (for "auto-accept licenses")
|
||||
yes | sdkmanager --licenses && \
|
||||
### Install platform tools
|
||||
sdkmanager "platforms;$ANDROID_APIS" "build-tools;$ANDROID_BUILD_TOOLS_VERSION"
|
||||
|
||||
### Copy scripts directory into the tmp folder, so it's available to the following commands
|
||||
COPY $SCRIPTS_DIRECTORY/$NODE_SETUP_SCRIPT /tmp/
|
||||
|
||||
RUN bash /tmp/$NODE_SETUP_SCRIPT && apt-get install -y nodejs && \
|
||||
### Install wanted npm version
|
||||
npm install -g --unsafe-perm npm@$NPM_VERSION && \
|
||||
### Install needed global npm packages
|
||||
npm install -g --unsafe-perm @ionic/cli@$IONIC_VERSION cordova-res@$CORDOVA_RES_VERSION
|
||||
|
||||
RUN cd / && ionic start $TMP_PROJECT_NAME blank --type=angular --capacitor --no-git --no-interactive && \
|
||||
cd $TMP_PROJECT_NAME && ionic capacitor add android && export NG_CLI_ANALYTICS=ci && ionic capacitor build android --no-open && \
|
||||
cd android && ./gradlew assembleDebug && \
|
||||
cd / && rm -rf $TMP_PROJECT_NAME
|
||||
|
||||
### Set working directory
|
||||
WORKDIR /app
|
||||
COPY www/ /app/www
|
||||
COPY package.json /app
|
||||
|
||||
CMD [""]
|
||||
EXPOSE 8100
|
||||
|
||||
RUN npm install -g http-server
|
||||
CMD http-server www --p 8100
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
# Creates a docker image with only the app as an executable unit
|
||||
# Dependencies need to be installed beforehand
|
||||
# Needs to be build beforehand
|
||||
# docker build -t registry.gitlab.com/openstapps/app/executable:core-x.y -f Dockerfile.Executable .
|
||||
FROM node:14-alpine
|
||||
|
||||
WORKDIR /app
|
||||
COPY . /app
|
||||
|
||||
# To use ng directly
|
||||
ENV PATH /app/node_modules/.bin:$PATH
|
||||
|
||||
EXPOSE 8100
|
||||
|
||||
# Because the dependencies were installed from the builder-Image,
|
||||
# or locally, we need to rebuild node-sass library
|
||||
RUN npm rebuild node-sass
|
||||
|
||||
# Starts the app
|
||||
CMD ng run app:serve --host=0.0.0.0 --port=8100
|
||||
@@ -17,7 +17,7 @@
|
||||
"format:fix": "dotenv -c -- turbo run format:fix",
|
||||
"lint": "dotenv -c -- turbo run lint",
|
||||
"lint:fix": "dotenv -c -- turbo run lint:fix",
|
||||
"publish-packages": "pnpm changeset version && pnpm syncpack:fix && pnpm install && git add . && git commit -m \"refactor: update changelog\" && git push && pnpm changeset tag && git push --follow-tags",
|
||||
"publish-packages": "pnpm changeset version && pnpm syncpack:fix && pnpm install && git add . && git commit -m \"refactor: update changelog\n\nci: publish release\" && git push && pnpm changeset tag && git push --follow-tags",
|
||||
"syncpack": "syncpack list-mismatches && syncpack lint-semver-ranges --types dev,peer,prod",
|
||||
"syncpack:fix": "syncpack format && syncpack fix-mismatches",
|
||||
"test": "trap 'node coverage.mjs' EXIT && dotenv -c -- turbo run test --filter=!@openstapps/app",
|
||||
|
||||
12
packages/api-cli/Dockerfile
Normal file
12
packages/api-cli/Dockerfile
Normal file
@@ -0,0 +1,12 @@
|
||||
FROM registry.gitlab.com/openstapps/projectmanagement/node:v18
|
||||
|
||||
USER root
|
||||
RUN apk add --update python3 py3-pip make g++ gcompat
|
||||
|
||||
USER node
|
||||
ADD --chown=node:node . /app
|
||||
ENV NODE_ENV=production
|
||||
WORKDIR /app
|
||||
|
||||
EXPOSE 3000
|
||||
ENTRYPOINT ["node", "app.js"]
|
||||
@@ -21,11 +21,13 @@
|
||||
"files": [
|
||||
"app.js",
|
||||
"lib",
|
||||
"Dockerfile",
|
||||
"README.md",
|
||||
"CHANGELOG.md"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "tsup-node",
|
||||
"deploy": "pnpm --prod --filter=@openstapps/api-cli deploy ../../.deploy/api-cli",
|
||||
"format": "prettier . -c --ignore-path ../../.gitignore",
|
||||
"format:fix": "prettier --write . --ignore-path ../../.gitignore",
|
||||
"lint": "tsc --noEmit && eslint --ext .ts src/",
|
||||
|
||||
Reference in New Issue
Block a user