mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2026-01-05 13:02:54 +00:00
refactor: move node and builder images
This commit is contained in:
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
|
||||
Reference in New Issue
Block a user