refactor docker image creation to use base image
Squashed commits: - initial work - make base image use all the versions - make desktop images use the base image - update ci to use new images - use new toolversion script - update android image tag - add missing android-26 platform - fix installing packages with sdkmanager - fix installation of react-native-cli - specify prefix path for npm install -g Signed-off-by: Jakub Sokołowski <jakub@status.im>
This commit is contained in:
parent
9daef17f11
commit
e87464e5ba
|
@ -1,12 +1,17 @@
|
||||||
ANDROID_BUILD_TOOLS_VERSION;28.0.1;
|
android-ndk;r10e;070be287539e3e7706f8dabfb6bf9879
|
||||||
ANDROID_NDK_VERSION;r10e;
|
android-sdk-build-tools;28.0.1;
|
||||||
ANDROID_PLATFORM_VERSION;android-27;
|
android-sdk-platform;android-27;
|
||||||
|
android-sdk;4333796;aa190cfd7299cd6a1c687355bb2764e4
|
||||||
clojure_cli;1.9.0.381;
|
clojure_cli;1.9.0.381;
|
||||||
|
cmake;3.12.2;
|
||||||
conan;1.9.0;
|
conan;1.9.0;
|
||||||
leiningen;2.8.1;
|
leiningen;2.8.1;
|
||||||
maven;3.5.2;
|
maven;3.5.2;
|
||||||
node;10.12.0;
|
node;10.12.0;
|
||||||
nvm;0.33.11;
|
nvm;0.33.11;
|
||||||
|
qt;5.11.2;974fda61267cfb6e45984ee5f0a285f8
|
||||||
|
qtci;55ffd9f225708b3aa1443851cfa8dead2c1f9959;
|
||||||
react_native_cli;2.0.1;
|
react_native_cli;2.0.1;
|
||||||
|
react_native_desktop;v0.56.1_4;
|
||||||
watchman;4.9.0;
|
watchman;4.9.0;
|
||||||
yarn;1.13.0;
|
yarn;1.13.0;
|
||||||
|
|
|
@ -66,8 +66,10 @@ index.desktop.js
|
||||||
|
|
||||||
# Docker
|
# Docker
|
||||||
#
|
#
|
||||||
|
docker/*/scripts/
|
||||||
docker/*/*.zip
|
docker/*/*.zip
|
||||||
docker/*/*.run
|
docker/*/*.run
|
||||||
|
docker/*/nvm_install.sh
|
||||||
|
|
||||||
# Generated by lein voom
|
# Generated by lein voom
|
||||||
#
|
#
|
||||||
|
@ -153,7 +155,6 @@ Status-Windows-x86_64.exe
|
||||||
/desktop/CMakeFiles/
|
/desktop/CMakeFiles/
|
||||||
/desktop/reportApp/Makefile
|
/desktop/reportApp/Makefile
|
||||||
/deployment/windows/Status.rc
|
/deployment/windows/Status.rc
|
||||||
/docker/*/scripts/
|
|
||||||
*_autogen/
|
*_autogen/
|
||||||
CompleteBundleWin.cmake
|
CompleteBundleWin.cmake
|
||||||
logger_settings.ini
|
logger_settings.ini
|
||||||
|
|
|
@ -2,7 +2,7 @@ pipeline {
|
||||||
agent {
|
agent {
|
||||||
docker {
|
docker {
|
||||||
label 'linux'
|
label 'linux'
|
||||||
image 'statusteam/status-build-android:1.0.1'
|
image 'statusteam/status-build-android:1.1.0'
|
||||||
args (
|
args (
|
||||||
"-v /home/jenkins/tmp:/var/tmp:rw "+
|
"-v /home/jenkins/tmp:/var/tmp:rw "+
|
||||||
"-v /home/jenkins/status-im.keystore:/tmp/status-im.keystore:ro"
|
"-v /home/jenkins/status-im.keystore:/tmp/status-im.keystore:ro"
|
||||||
|
@ -59,34 +59,30 @@ pipeline {
|
||||||
cmn = load 'ci/common.groovy'
|
cmn = load 'ci/common.groovy'
|
||||||
print "Running ${cmn.getBuildType()} build!"
|
print "Running ${cmn.getBuildType()} build!"
|
||||||
cmn.abortPreviousRunningBuilds()
|
cmn.abortPreviousRunningBuilds()
|
||||||
/* Read the valid NodeJS version */
|
|
||||||
env.NODE_VERSION = cmn.getToolVersion('node')
|
|
||||||
/* Cleanup and Prep */
|
/* Cleanup and Prep */
|
||||||
nvm(env.NODE_VERSION) {
|
|
||||||
mobile.prep(cmn.getBuildType())
|
mobile.prep(cmn.getBuildType())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
stage('Lint') {
|
stage('Lint') {
|
||||||
steps { nvm(env.NODE_VERSION) {
|
steps {
|
||||||
script { cmn.runLint() }
|
script { cmn.runLint() }
|
||||||
} }
|
}
|
||||||
}
|
}
|
||||||
stage('Tests') {
|
stage('Tests') {
|
||||||
steps { nvm(env.NODE_VERSION) {
|
steps {
|
||||||
script { cmn.runTests() }
|
script { cmn.runTests() }
|
||||||
} }
|
}
|
||||||
}
|
}
|
||||||
stage('Build') {
|
stage('Build') {
|
||||||
steps { nvm(env.NODE_VERSION) {
|
steps {
|
||||||
script { mobile.leinBuild('android') }
|
script { mobile.leinBuild('android') }
|
||||||
} }
|
}
|
||||||
}
|
}
|
||||||
stage('Bundle') {
|
stage('Bundle') {
|
||||||
steps { nvm(env.NODE_VERSION) {
|
steps {
|
||||||
script { apk = mobile.android.bundle(cmn.getBuildType()) }
|
script { apk = mobile.android.bundle(cmn.getBuildType()) }
|
||||||
} }
|
}
|
||||||
}
|
}
|
||||||
stage('Archive') {
|
stage('Archive') {
|
||||||
steps {
|
steps {
|
||||||
|
|
|
@ -3,7 +3,7 @@ pipeline {
|
||||||
/* privileged mode is necessary for fuse */
|
/* privileged mode is necessary for fuse */
|
||||||
docker {
|
docker {
|
||||||
label 'linux-new'
|
label 'linux-new'
|
||||||
image 'statusteam/linux-desktop-ubuntu:1.1.1'
|
image 'statusteam/status-build-linux:1.1.0'
|
||||||
args (
|
args (
|
||||||
"--privileged "+
|
"--privileged "+
|
||||||
"-v /dev/fuse:/dev/fuse "+
|
"-v /dev/fuse:/dev/fuse "+
|
||||||
|
@ -59,34 +59,30 @@ pipeline {
|
||||||
cmn = load 'ci/common.groovy'
|
cmn = load 'ci/common.groovy'
|
||||||
print "Running ${cmn.getBuildType()} build!"
|
print "Running ${cmn.getBuildType()} build!"
|
||||||
cmn.abortPreviousRunningBuilds()
|
cmn.abortPreviousRunningBuilds()
|
||||||
/* Read the valid NodeJS version */
|
|
||||||
env.NODE_VERSION = cmn.getToolVersion('node')
|
|
||||||
/* Cleanup and Prep */
|
/* Cleanup and Prep */
|
||||||
nvm(env.NODE_VERSION) {
|
|
||||||
desktop.prepDeps()
|
desktop.prepDeps()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
stage('Lint') {
|
stage('Lint') {
|
||||||
steps { nvm(env.NODE_VERSION) {
|
steps {
|
||||||
script { cmn.runLint() }
|
script { cmn.runLint() }
|
||||||
} }
|
}
|
||||||
}
|
}
|
||||||
stage('Tests') {
|
stage('Tests') {
|
||||||
steps { nvm(env.NODE_VERSION) {
|
steps {
|
||||||
script { cmn.runTests() }
|
script { cmn.runTests() }
|
||||||
} }
|
}
|
||||||
}
|
}
|
||||||
stage('Build') {
|
stage('Build') {
|
||||||
steps { nvm(env.NODE_VERSION) {
|
steps {
|
||||||
script { desktop.buildClojureScript() }
|
script { desktop.buildClojureScript() }
|
||||||
} }
|
}
|
||||||
}
|
}
|
||||||
stage('Compile') {
|
stage('Compile') {
|
||||||
steps { nvm(env.NODE_VERSION) {
|
steps {
|
||||||
script { desktop.compile() }
|
script { desktop.compile() }
|
||||||
} }
|
}
|
||||||
}
|
}
|
||||||
stage('Bundle') {
|
stage('Bundle') {
|
||||||
steps {
|
steps {
|
||||||
|
|
|
@ -3,7 +3,7 @@ pipeline {
|
||||||
/* privileged mode is necessary for fuse */
|
/* privileged mode is necessary for fuse */
|
||||||
docker {
|
docker {
|
||||||
label 'linux-new'
|
label 'linux-new'
|
||||||
image 'statusteam/windows-desktop-ubuntu:1.1.1'
|
image 'statusteam/status-build-windows:1.1.0'
|
||||||
args (
|
args (
|
||||||
"--privileged "+
|
"--privileged "+
|
||||||
"-v /dev/fuse:/dev/fuse "+
|
"-v /dev/fuse:/dev/fuse "+
|
||||||
|
@ -62,34 +62,30 @@ pipeline {
|
||||||
cmn = load 'ci/common.groovy'
|
cmn = load 'ci/common.groovy'
|
||||||
print "Running ${cmn.getBuildType()} build!"
|
print "Running ${cmn.getBuildType()} build!"
|
||||||
cmn.abortPreviousRunningBuilds()
|
cmn.abortPreviousRunningBuilds()
|
||||||
/* Read the valid NodeJS version */
|
|
||||||
env.NODE_VERSION = cmn.getToolVersion('node')
|
|
||||||
/* Cleanup and Prep */
|
/* Cleanup and Prep */
|
||||||
nvm(env.NODE_VERSION) {
|
|
||||||
desktop.prepDeps()
|
desktop.prepDeps()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
stage('Lint') {
|
stage('Lint') {
|
||||||
steps { nvm(env.NODE_VERSION) {
|
steps {
|
||||||
script { cmn.runLint() }
|
script { cmn.runLint() }
|
||||||
} }
|
}
|
||||||
}
|
}
|
||||||
stage('Tests') {
|
stage('Tests') {
|
||||||
steps { nvm(env.NODE_VERSION) {
|
steps {
|
||||||
script { cmn.runTests() }
|
script { cmn.runTests() }
|
||||||
} }
|
}
|
||||||
}
|
}
|
||||||
stage('Build') {
|
stage('Build') {
|
||||||
steps { nvm(env.NODE_VERSION) {
|
steps {
|
||||||
script { desktop.buildClojureScript() }
|
script { desktop.buildClojureScript() }
|
||||||
} }
|
}
|
||||||
}
|
}
|
||||||
stage('Compile') {
|
stage('Compile') {
|
||||||
steps { nvm(env.NODE_VERSION) {
|
steps {
|
||||||
script { desktop.compile() }
|
script { desktop.compile() }
|
||||||
} }
|
}
|
||||||
}
|
}
|
||||||
stage('Bundle') {
|
stage('Bundle') {
|
||||||
steps {
|
steps {
|
||||||
|
|
|
@ -1,11 +1,17 @@
|
||||||
# This image is only for extracting and cleaning up NDK and SDK
|
# This image is only for extracting and cleaning up NDK and SDK
|
||||||
FROM statusteam/status-build-base:1.0.0 AS sdk_and_ndk
|
FROM statusteam/status-build-base:1.1.0 AS sdk_and_ndk
|
||||||
|
|
||||||
ARG ANDROID_NDK_VERSION
|
ARG ANDROID_NDK_VERSION
|
||||||
ARG ANDROID_SDK_VERSION
|
ARG ANDROID_SDK_VERSION
|
||||||
|
ARG SDK_PLATFORM_VERSION
|
||||||
|
ARG SDK_BUILD_TOOLS_VERSION
|
||||||
|
|
||||||
# names of packages to install with sdkmanager
|
# names of packages to install with sdkmanager
|
||||||
ENV SDK_PACKAGES emulator patcher;v4 build-tools;26.0.2 platforms;android-26 platforms;android-27 platforms;android-28 extras;android;m2repository extras;google;m2repository
|
ENV SDK_PACKAGES emulator patcher;v4 \
|
||||||
|
platforms;android-26 \
|
||||||
|
platforms;${SDK_PLATFORM_VERSION} \
|
||||||
|
build-tools;${SDK_BUILD_TOOLS_VERSION} \
|
||||||
|
extras;android;m2repository extras;google;m2repository
|
||||||
|
|
||||||
# install SDK
|
# install SDK
|
||||||
COPY sdk-tools-linux-${ANDROID_SDK_VERSION}.zip /tmp/sdk-tools-linux.zip
|
COPY sdk-tools-linux-${ANDROID_SDK_VERSION}.zip /tmp/sdk-tools-linux.zip
|
||||||
|
@ -32,7 +38,7 @@ RUN cd /usr/lib/android-ndk && rm -fr docs tests samples \
|
||||||
&& find sources -mindepth 2 -maxdepth 2 | grep -v 'gnu-libstdc' | xargs rm -fr
|
&& find sources -mindepth 2 -maxdepth 2 | grep -v 'gnu-libstdc' | xargs rm -fr
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
FROM statusteam/status-build-base:1.0.0
|
FROM statusteam/status-build-base:1.1.0
|
||||||
|
|
||||||
ARG ANDROID_NDK_VERSION
|
ARG ANDROID_NDK_VERSION
|
||||||
ARG ANDROID_SDK_VERSION
|
ARG ANDROID_SDK_VERSION
|
||||||
|
|
|
@ -1,24 +1,31 @@
|
||||||
|
__toolversion = $(shell $(GIT_ROOT)/scripts/toolversion $(1))
|
||||||
|
|
||||||
GIT_COMMIT = $(shell git rev-parse --short HEAD)
|
GIT_COMMIT = $(shell git rev-parse --short HEAD)
|
||||||
GIT_ROOT = $(shell git rev-parse --show-toplevel)
|
GIT_ROOT = $(shell git rev-parse --show-toplevel)
|
||||||
|
|
||||||
ANDROID_NDK_VERSION = r10e
|
ANDROID_NDK_VERSION = $(call __toolversion, android-ndk)
|
||||||
ANDROID_NDK_CHECKSUM = 070be287539e3e7706f8dabfb6bf9879
|
ANDROID_NDK_CHECKSUM = $(call __toolversion, android-ndk_md5)
|
||||||
ANDROID_NDK_ARCHIVE = android-ndk-$(ANDROID_NDK_VERSION)-linux-x86_64.zip
|
ANDROID_NDK_ARCHIVE = android-ndk-$(ANDROID_NDK_VERSION)-linux-x86_64.zip
|
||||||
ANDROID_NDK_URL = https://dl.google.com/android/repository/$(ANDROID_NDK_ARCHIVE)
|
ANDROID_NDK_URL = https://dl.google.com/android/repository/$(ANDROID_NDK_ARCHIVE)
|
||||||
|
|
||||||
ANDROID_SDK_VERSION = 4333796
|
ANDROID_SDK_VERSION = $(call __toolversion, android-sdk)
|
||||||
ANDROID_SDK_CHECKSUM = aa190cfd7299cd6a1c687355bb2764e4
|
ANDROID_SDK_CHECKSUM = $(call __toolversion, android-sdk_md5)
|
||||||
ANDROID_SDK_URL = https://dl.google.com/android/repository/sdk-tools-linux-$(ANDROID_SDK_VERSION).zip
|
ANDROID_SDK_URL = https://dl.google.com/android/repository/sdk-tools-linux-$(ANDROID_SDK_VERSION).zip
|
||||||
ANDROID_SDK_ARCHIVE = sdk-tools-linux-$(ANDROID_SDK_VERSION).zip
|
ANDROID_SDK_ARCHIVE = sdk-tools-linux-$(ANDROID_SDK_VERSION).zip
|
||||||
|
|
||||||
|
SDK_PLATFORM_VERSION=$(call __toolversion, android-sdk-platform)
|
||||||
|
SDK_BUILD_TOOLS_VERSION=$(call __toolversion, android-sdk-build-tools)
|
||||||
|
|
||||||
# WARNING: Remember to change the tag when updating the image
|
# WARNING: Remember to change the tag when updating the image
|
||||||
IMAGE_TAG = 1.0.1
|
IMAGE_TAG = 1.1.0
|
||||||
IMAGE_NAME = statusteam/status-build-android:$(IMAGE_TAG)
|
IMAGE_NAME = statusteam/status-build-android:$(IMAGE_TAG)
|
||||||
|
|
||||||
build: $(ANDROID_NDK_ARCHIVE) $(ANDROID_SDK_ARCHIVE)
|
build: $(ANDROID_NDK_ARCHIVE) $(ANDROID_SDK_ARCHIVE)
|
||||||
docker build \
|
docker build \
|
||||||
--build-arg="ANDROID_NDK_VERSION=$(ANDROID_NDK_VERSION)" \
|
--build-arg="ANDROID_NDK_VERSION=$(ANDROID_NDK_VERSION)" \
|
||||||
--build-arg="ANDROID_SDK_VERSION=$(ANDROID_SDK_VERSION)" \
|
--build-arg="ANDROID_SDK_VERSION=$(ANDROID_SDK_VERSION)" \
|
||||||
|
--build-arg="SDK_PLATFORM_VERSION=$(SDK_PLATFORM_VERSION)" \
|
||||||
|
--build-arg="SDK_BUILD_TOOLS_VERSION=$(SDK_BUILD_TOOLS_VERSION)" \
|
||||||
--label="commit=$(GIT_COMMIT)" \
|
--label="commit=$(GIT_COMMIT)" \
|
||||||
-t $(IMAGE_NAME) .
|
-t $(IMAGE_NAME) .
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,19 @@
|
||||||
FROM ubuntu:16.04
|
FROM ubuntu:16.04
|
||||||
|
|
||||||
ARG NVM_VERSION
|
ARG NODE_VERSION
|
||||||
ARG NVM_NODE_VERSION
|
ARG YARN_VERSION
|
||||||
ARG LEIN_VERSION
|
ARG LEIN_VERSION
|
||||||
|
|
||||||
# We have to do this because Jenkins doesn't let us
|
# We have to do this because Jenkins doesn't let us
|
||||||
# https://issues.jenkins-ci.org/browse/JENKINS-49076
|
# https://issues.jenkins-ci.org/browse/JENKINS-49076
|
||||||
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
|
ENV PATH=/home/jenkins/.nvm/versions/node/v${NODE_VERSION}/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
|
||||||
LANG=en_US.UTF-8 \
|
LANG=en_US.UTF-8 \
|
||||||
LC_ALL=en_US.UTF-8 \
|
LC_ALL=en_US.UTF-8 \
|
||||||
LANGUAGE=en_US.UTF-8 \
|
LANGUAGE=en_US.UTF-8 \
|
||||||
LEIN_HOME=/var/tmp/lein \
|
LEIN_HOME=/var/tmp/lein \
|
||||||
YARN_CACHE_FOLDER=/var/tmp/yarn
|
LEIN_URL=https://raw.githubusercontent.com/technomancy/leiningen/${LEIN_VERSION}/bin/lein \
|
||||||
|
YARN_CACHE_FOLDER=/var/tmp/yarn \
|
||||||
|
NVM_DIR=/home/jenkins/.nvm
|
||||||
|
|
||||||
RUN mkdir /var/tmp/npm /var/tmp/lein \
|
RUN mkdir /var/tmp/npm /var/tmp/lein \
|
||||||
&& chmod 777 /var/tmp/npm /var/tmp/lein \
|
&& chmod 777 /var/tmp/npm /var/tmp/lein \
|
||||||
|
@ -20,13 +22,12 @@ RUN mkdir /var/tmp/npm /var/tmp/lein \
|
||||||
&& echo debconf shared/accepted-oracle-license-v1-1 select true | debconf-set-selections \
|
&& echo debconf shared/accepted-oracle-license-v1-1 select true | debconf-set-selections \
|
||||||
&& echo debconf shared/accepted-oracle-license-v1-1 seen true | debconf-set-selections \
|
&& echo debconf shared/accepted-oracle-license-v1-1 seen true | debconf-set-selections \
|
||||||
&& curl -sL https://deb.nodesource.com/setup_10.x | bash - \
|
&& curl -sL https://deb.nodesource.com/setup_10.x | bash - \
|
||||||
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
|
|
||||||
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
|
|
||||||
&& apt-get update \
|
&& apt-get update \
|
||||||
&& DEBIAN_FRONTEND=noninteractive apt-get -q -y --no-install-recommends install \
|
&& DEBIAN_FRONTEND=noninteractive apt-get -q -y --no-install-recommends install \
|
||||||
file git wget zip unzip s3cmd build-essential nodejs yarn locales \
|
file jq git wget zip unzip s3cmd build-essential nodejs locales \
|
||||||
ca-certificates oracle-java8-installer oracle-java8-set-default \
|
ca-certificates oracle-java8-installer oracle-java8-set-default \
|
||||||
&& locale-gen ${LANG} \
|
&& locale-gen ${LANG} \
|
||||||
|
&& npm install -g yarn@${YARN_VERSION} \
|
||||||
&& apt-get clean \
|
&& apt-get clean \
|
||||||
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/man
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/man
|
||||||
|
|
||||||
|
@ -39,14 +40,17 @@ RUN addgroup --gid 1002 jenkins \
|
||||||
&& su jenkins -c "git config --global user.name 'jenkins@status.im'"
|
&& su jenkins -c "git config --global user.name 'jenkins@status.im'"
|
||||||
|
|
||||||
# Leiningen setup
|
# Leiningen setup
|
||||||
RUN wget -q https://raw.githubusercontent.com/technomancy/leiningen/${LEIN_VERSION}/bin/lein -O /usr/local/bin/lein \
|
RUN wget ${LEIN_URL} -O /usr/local/bin/lein \
|
||||||
&& chmod 755 /usr/local/bin/lein \
|
&& chmod 755 /usr/local/bin/lein \
|
||||||
&& lein version
|
&& lein version
|
||||||
|
|
||||||
# Install NVM for Jenkins
|
# Install NVM for Jenkins
|
||||||
RUN su jenkins -c "\
|
ADD nvm_install.sh /tmp/nvm_install.sh
|
||||||
curl -s -o- https://raw.githubusercontent.com/creationix/nvm/${NVM_VERSION}/install.sh | bash && \
|
RUN su -l jenkins -c \
|
||||||
source ~/.nvm/nvm.sh && nvm install ${NVM_NODE_VERSION} && nvm alias default ${NVM_NODE_VERSION}"
|
"bash /tmp/nvm_install.sh && \
|
||||||
|
. ${NVM_DIR}/nvm.sh && \
|
||||||
|
nvm install ${NODE_VERSION} && \
|
||||||
|
nvm alias default ${NODE_VERSION}"
|
||||||
|
|
||||||
LABEL source="https://github.com/status-im/status-react/tree/develop/docker/base" \
|
LABEL source="https://github.com/status-im/status-react/tree/develop/docker/base" \
|
||||||
description="Base Image used for building Status app." \
|
description="Base Image used for building Status app." \
|
||||||
|
|
|
@ -1,23 +1,22 @@
|
||||||
|
__toolversion = $(shell $(GIT_ROOT)/scripts/toolversion $(1))
|
||||||
|
|
||||||
GIT_COMMIT = $(shell git rev-parse --short HEAD)
|
GIT_COMMIT = $(shell git rev-parse --short HEAD)
|
||||||
GIT_ROOT = $(shell git rev-parse --show-toplevel)
|
GIT_ROOT = $(shell git rev-parse --show-toplevel)
|
||||||
|
|
||||||
# Software Versions, URLs, and Checksums
|
|
||||||
NVM_VERSION = v0.33.11
|
|
||||||
NVM_INSTALL_SCRIPT = nvm_$(NVM_VERSION)_install.sh
|
|
||||||
NVM_NODE_VERSION = v10.14.0
|
|
||||||
LEIN_VERSION = stable
|
|
||||||
|
|
||||||
# WARNING: Remember to change the tag when updating the image
|
# WARNING: Remember to change the tag when updating the image
|
||||||
IMAGE_TAG = 1.0.0
|
IMAGE_TAG = 1.1.0
|
||||||
IMAGE_NAME = statusteam/status-build-base:$(IMAGE_TAG)
|
IMAGE_NAME = statusteam/status-build-base:$(IMAGE_TAG)
|
||||||
|
|
||||||
build:
|
build: nvm_install.sh
|
||||||
docker build \
|
docker build \
|
||||||
--build-arg="LEIN_VERSION=$(LEIN_VERSION)" \
|
--build-arg="LEIN_VERSION=$(call __toolversion, leiningen)" \
|
||||||
--build-arg="NVM_VERSION=$(NVM_VERSION)" \
|
--build-arg="NODE_VERSION=$(call __toolversion, node)" \
|
||||||
--build-arg="NVM_NODE_VERSION=$(NVM_NODE_VERSION)" \
|
--build-arg="YARN_VERSION=$(call __toolversion, yarn)" \
|
||||||
--label="commit=$(GIT_COMMIT)" \
|
--label="commit=$(GIT_COMMIT)" \
|
||||||
-t $(IMAGE_NAME) .
|
-t $(IMAGE_NAME) .
|
||||||
|
|
||||||
|
nvm_install.sh:
|
||||||
|
cp $(GIT_ROOT)/scripts/3rd-party/nvm/$(call __toolversion, nvm)/install.sh nvm_install.sh
|
||||||
|
|
||||||
push: build
|
push: build
|
||||||
docker push $(IMAGE_NAME)
|
docker push $(IMAGE_NAME)
|
||||||
|
|
|
@ -1,14 +1,17 @@
|
||||||
FROM ubuntu:16.04 AS qt_build
|
FROM statusteam/status-build-base:1.1.0 AS qt_build
|
||||||
|
|
||||||
ARG QT_VERSION
|
ARG QT_VERSION
|
||||||
ARG REACT_NATIVE_DESKTOP_COMMIT_SHA
|
ARG RNATIVE_VERSION
|
||||||
ARG QT_CI_COMMIT_SHA
|
ARG QT_CI_COMMIT
|
||||||
|
|
||||||
RUN apt-get update && apt-get -q -y --no-install-recommends install software-properties-common && \
|
ENV XDG_RUNTIME_DIR=/tmp/runtime-root
|
||||||
add-apt-repository -y ppa:git-core/ppa && \
|
|
||||||
apt-get update && apt-get -y install \
|
RUN apt-get update \
|
||||||
git libx11-xcb1 libxss1 libasound2 libfontconfig1 libdbus-1-3 && \
|
&& add-apt-repository -y ppa:git-core/ppa \
|
||||||
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
&& apt-get update \
|
||||||
|
&& apt-get -y install git libx11-xcb1 libxss1 libasound2 libfontconfig1 libdbus-1-3 \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
# This variable defines which parts of QT will be extracted from the .run file.
|
# This variable defines which parts of QT will be extracted from the .run file.
|
||||||
# You can list available packages in a Qt .run file by using:
|
# You can list available packages in a Qt .run file by using:
|
||||||
|
@ -21,93 +24,63 @@ ENV QT_CI_PACKAGES qt.qt5.5112.gcc_64,qt.qt5.5112.qtwebengine.gcc_64
|
||||||
# NOTE: Unfortunately GitHub doesn't support cloning a specific SHA1, so we need to
|
# NOTE: Unfortunately GitHub doesn't support cloning a specific SHA1, so we need to
|
||||||
# resort to git fetch (https://stackoverflow.com/questions/3489173/how-to-clone-git-repository-with-specific-revision-changeset)
|
# resort to git fetch (https://stackoverflow.com/questions/3489173/how-to-clone-git-repository-with-specific-revision-changeset)
|
||||||
ADD qt-opensource-linux-x64-${QT_VERSION}.run /tmp/
|
ADD qt-opensource-linux-x64-${QT_VERSION}.run /tmp/
|
||||||
RUN mkdir -p /tmp/qtci && cd /tmp/qtci && \
|
RUN mkdir -p /tmp/qtci \
|
||||||
git init && git remote add origin https://github.com/benlau/qtci.git && \
|
&& cd /tmp/qtci \
|
||||||
git fetch --depth=1 origin ${QT_CI_COMMIT_SHA} && \
|
&& git init \
|
||||||
git reset --hard FETCH_HEAD && \
|
&& git remote add origin https://github.com/benlau/qtci.git \
|
||||||
/tmp/qtci/bin/extract-qt-installer --disable-progress-report \
|
&& git fetch --depth=1 origin ${QT_CI_COMMIT} \
|
||||||
/tmp/qt-opensource-linux-x64-${QT_VERSION}.run /opt/qt-all && \
|
&& git reset --hard FETCH_HEAD \
|
||||||
find /opt/qt-all/${QT_VERSION}/gcc_64/bin -type f -regextype posix-egrep -regex \
|
&& /tmp/qtci/bin/extract-qt-installer --disable-progress-report \
|
||||||
'.*\/(qdoc|qgltf|linguist|designer|assistant|qhelpconverter|qmlprofiler)$' -delete
|
/tmp/qt-opensource-linux-x64-${QT_VERSION}.run /opt/qt-all \
|
||||||
|
&& find /opt/qt-all/${QT_VERSION}/gcc_64/bin -type f -regextype posix-egrep -regex \
|
||||||
|
'.*\/(qdoc|qgltf|linguist|designer|assistant|qhelpconverter|qmlprofiler)$' -delete \
|
||||||
|
&& rm -fr ${XDG_RUNTIME_DIR}
|
||||||
|
|
||||||
FROM ubuntu:16.04
|
FROM statusteam/status-build-base:1.1.0
|
||||||
|
|
||||||
ARG QT_VERSION
|
ARG QT_VERSION
|
||||||
|
ARG CMAKE_VERSION
|
||||||
|
|
||||||
COPY --from=qt_build /opt/qt-all/${QT_VERSION}/gcc_64 /opt/qt
|
COPY --from=qt_build /opt/qt-all/${QT_VERSION}/gcc_64 /opt/qt
|
||||||
RUN ln -s /opt/qt/mkspecs /usr/local/mkspecs && \
|
RUN ln -s /opt/qt/mkspecs /usr/local/mkspecs \
|
||||||
ln -s /opt/qt/plugins /usr/local/plugins
|
&& ln -s /opt/qt/plugins /usr/local/plugins
|
||||||
|
|
||||||
ENV LANG en_US.UTF-8
|
|
||||||
ENV LC_ALL en_US.UTF-8
|
|
||||||
ENV LANGUAGE en_US.UTF-8
|
|
||||||
ENV LEIN_HOME /var/tmp/lein
|
|
||||||
ENV NPM_CONFIG_CACHE /var/tmp/npm
|
|
||||||
|
|
||||||
# We have to do this because Jenkins doesn't let us
|
# We have to do this because Jenkins doesn't let us
|
||||||
# https://issues.jenkins-ci.org/browse/JENKINS-49076
|
# https://issues.jenkins-ci.org/browse/JENKINS-49076
|
||||||
ENV PATH /opt/qt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
ENV PATH /opt/qt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||||
|
|
||||||
RUN apt-get update && apt-get -q -y --no-install-recommends install curl software-properties-common && \
|
RUN apt-get update \
|
||||||
add-apt-repository -y ppa:git-core/ppa && \
|
&& add-apt-repository -y ppa:git-core/ppa \
|
||||||
add-apt-repository -y ppa:longsleep/golang-backports && \
|
&& add-apt-repository -y ppa:longsleep/golang-backports \
|
||||||
apt-get remove -y software-properties-common && \
|
&& apt-get update \
|
||||||
apt-get update && \
|
&& DEBIAN_FRONTEND=noninteractive \
|
||||||
DEBIAN_FRONTEND=noninteractive \
|
|
||||||
apt-get -q -y --no-install-recommends install \
|
apt-get -q -y --no-install-recommends install \
|
||||||
wget git unzip golang-go file s3cmd \
|
golang-go python python3-pip python3-setuptools python3-wheel \
|
||||||
python python3-pip python3-setuptools python3-wheel \
|
apt-transport-https openjdk-8-jdk-headless \
|
||||||
apt-transport-https locales openjdk-8-jdk-headless \
|
|
||||||
extra-cmake-modules build-essential gcc g++ fuse \
|
extra-cmake-modules build-essential gcc g++ fuse \
|
||||||
libx11-xcb1 libxss1 libasound2 libgl-dev libsm6 libxrandr2 python-dev \
|
libx11-xcb1 libxss1 libasound2 libgl-dev libsm6 libxrandr2 python-dev \
|
||||||
libjasper-dev libegl1-mesa libxcomposite-dev libxcursor-dev && \
|
libjasper-dev libegl1-mesa libxcomposite-dev libxcursor-dev \
|
||||||
locale-gen en_US.UTF-8 && \
|
&& apt-get clean \
|
||||||
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/man
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/man
|
||||||
|
|
||||||
RUN cd /tmp && wget -q https://cmake.org/files/v3.12/cmake-3.12.2-Linux-x86_64.tar.gz && \
|
RUN cd /tmp \
|
||||||
tar xf cmake-3.12.2-Linux-x86_64.tar.gz --strip 1 -C /usr/local && \
|
&& wget -q https://cmake.org/files/v${CMAKE_VERSION%.*}/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz \
|
||||||
rm -fr /usr/local/doc/cmake && rm cmake-3.12.2-Linux-x86_64.tar.gz
|
&& tar xf cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz --strip 1 -C /usr/local \
|
||||||
|
&& rm -fr /usr/local/doc/cmake \
|
||||||
|
&& rm cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz
|
||||||
|
|
||||||
ARG LEIN_VERSION
|
RUN mkdir -p /tmp/react-native-desktop \
|
||||||
ENV LEIN_INSTALL=/usr/bin/
|
&& cd /tmp/react-native-desktop \
|
||||||
|
&& git init \
|
||||||
RUN mkdir -p $LEIN_INSTALL \
|
&& git remote add origin https://github.com/status-im/react-native-desktop.git \
|
||||||
&& wget -q https://raw.githubusercontent.com/technomancy/leiningen/${LEIN_VERSION}/bin/lein-pkg \
|
&& git fetch --quiet --depth=1 origin ${RNATIVE_VERSION} \
|
||||||
&& mv lein-pkg $LEIN_INSTALL/lein \
|
&& git reset --hard FETCH_HEAD \
|
||||||
&& chmod 0755 $LEIN_INSTALL/lein \
|
&& cp -r /tmp/react-native-desktop/react-native-cli /opt \
|
||||||
&& wget -q https://github.com/technomancy/leiningen/releases/download/${LEIN_VERSION}/leiningen-${LEIN_VERSION}-standalone.zip \
|
&& cd /opt/react-native-cli \
|
||||||
&& mkdir -p /usr/share/java \
|
&& npm update \
|
||||||
&& mv leiningen-${LEIN_VERSION}-standalone.zip /usr/share/java/leiningen-${LEIN_VERSION}-standalone.jar \
|
&& npm install -g --prefix /usr/local \
|
||||||
&& $LEIN_INSTALL/lein version
|
&& cd \
|
||||||
|
&& rm -r /tmp/react-native-desktop
|
||||||
ARG NVM_VERSION
|
|
||||||
ARG NODE_VERSION
|
|
||||||
ARG YARN_VERSION
|
|
||||||
ADD scripts/3rd-party/nvm/${NVM_VERSION}/install.sh /tmp/nvm/${NVM_VERSION}/
|
|
||||||
|
|
||||||
RUN /tmp/nvm/${NVM_VERSION}/install.sh && \
|
|
||||||
mkdir -p /tmp/react-native-desktop && cd /tmp/react-native-desktop && \
|
|
||||||
git init && git remote add origin https://github.com/status-im/react-native-desktop.git && \
|
|
||||||
git fetch --depth=1 origin ${REACT_NATIVE_DESKTOP_COMMIT_SHA} && \
|
|
||||||
git reset --hard FETCH_HEAD && \
|
|
||||||
cp -r /tmp/react-native-desktop/react-native-cli /opt && \
|
|
||||||
cd /opt/react-native-cli && \
|
|
||||||
export NVM_DIR="$HOME/.nvm" && \
|
|
||||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
|
|
||||||
nvm install ${NODE_VERSION} && \
|
|
||||||
nvm use ${NODE_VERSION} && \
|
|
||||||
npm install -g yarn@${YARN_VERSION} && \
|
|
||||||
npm update && npm install -g && \
|
|
||||||
cd && rm -r /tmp/react-native-desktop
|
|
||||||
|
|
||||||
# These are the UID and GID values used by Jenkins
|
|
||||||
RUN addgroup --gid 1002 jenkins && \
|
|
||||||
adduser --shell /bin/bash \
|
|
||||||
--disabled-password --gecos "" \
|
|
||||||
--uid 1001 --gid 1002 jenkins
|
|
||||||
|
|
||||||
# Install NVM for Jenkins
|
|
||||||
RUN su jenkins -c '/tmp/nvm/${NVM_VERSION}/install.sh'
|
|
||||||
|
|
||||||
LABEL source="https://github.com/status-im/status-react/tree/develop/desktop/docker" \
|
LABEL source="https://github.com/status-im/status-react/tree/develop/desktop/docker" \
|
||||||
description="Image for building Linux Desktop version of Status app." \
|
description="Image for building Linux Desktop version of Status app." \
|
||||||
|
|
|
@ -3,37 +3,26 @@ __toolversion = $(shell $(GIT_ROOT)/scripts/toolversion $(1))
|
||||||
GIT_COMMIT = $(shell git rev-parse --short HEAD)
|
GIT_COMMIT = $(shell git rev-parse --short HEAD)
|
||||||
GIT_ROOT = $(shell git rev-parse --show-toplevel)
|
GIT_ROOT = $(shell git rev-parse --show-toplevel)
|
||||||
|
|
||||||
# WARNING: Change version in Dockerfile too
|
QT_VERSION = $(call __toolversion, qt)
|
||||||
QT_VERSION = 5.11.2
|
QT_MD5SUM = $(call __toolversion, qt_md5)
|
||||||
QT_VER_MJR = 5.11
|
|
||||||
QT_ARCHIVE = qt-opensource-linux-x64-$(QT_VERSION).run
|
QT_ARCHIVE = qt-opensource-linux-x64-$(QT_VERSION).run
|
||||||
QT_MD5SUM = 974fda61267cfb6e45984ee5f0a285f8
|
|
||||||
QT_URL = https://download.qt.io/archive/qt
|
QT_URL = https://download.qt.io/archive/qt
|
||||||
QT_CI_COMMIT_SHA = 55ffd9f225708b3aa1443851cfa8dead2c1f9959
|
|
||||||
REACT_NATIVE_DESKTOP_COMMIT_SHA = 2a76c435a27f0bf6c089f74222212b3a58e10385
|
|
||||||
|
|
||||||
# WARNING: Remember to change the tag when updating the image
|
# WARNING: Remember to change the tag when updating the image
|
||||||
IMAGE_TAG = 1.1.1
|
IMAGE_TAG = 1.1.0
|
||||||
IMAGE_NAME = statusteam/linux-desktop-ubuntu:$(IMAGE_TAG)
|
IMAGE_NAME = statusteam/status-build-linux:$(IMAGE_TAG)
|
||||||
|
|
||||||
build: $(QT_ARCHIVE)
|
build: $(QT_ARCHIVE)
|
||||||
rm -rf ./scripts && \
|
|
||||||
mkdir -p ./scripts/3rd-party && \
|
|
||||||
cp -R ../../scripts/3rd-party/ ./scripts/ && \
|
|
||||||
docker build \
|
docker build \
|
||||||
--build-arg="QT_VERSION=$(QT_VERSION)" \
|
--build-arg="QT_VERSION=$(QT_VERSION)" \
|
||||||
--build-arg="QT_CI_COMMIT_SHA=$(QT_CI_COMMIT_SHA)" \
|
--build-arg="QT_CI_COMMIT=$(call __toolversion, qtci)" \
|
||||||
--build-arg="REACT_NATIVE_DESKTOP_COMMIT_SHA=$(REACT_NATIVE_DESKTOP_COMMIT_SHA)" \
|
--build-arg="RNATIVE_VERSION=$(call __toolversion, react_native_desktop)" \
|
||||||
--build-arg="LEIN_VERSION=$(call __toolversion,lein)" \
|
--build-arg="CMAKE_VERSION=$(call __toolversion, cmake)" \
|
||||||
--build-arg="NODE_VERSION=$(call __toolversion,node)" \
|
|
||||||
--build-arg="NVM_VERSION=$(call __toolversion,nvm)" \
|
|
||||||
--build-arg="YARN_VERSION=$(call __toolversion,yarn)" \
|
|
||||||
--label="commit=$(GIT_COMMIT)" \
|
--label="commit=$(GIT_COMMIT)" \
|
||||||
-t $(IMAGE_NAME) .; \
|
-t $(IMAGE_NAME) .; \
|
||||||
rm -rf ./scripts
|
|
||||||
|
|
||||||
$(QT_ARCHIVE):
|
$(QT_ARCHIVE):
|
||||||
wget $(QT_URL)/$(QT_VER_MJR)/$(QT_VERSION)/$(QT_ARCHIVE)
|
wget $(QT_URL)/$(call __major_version__, $(QT_VERSION))/$(QT_VERSION)/$(QT_ARCHIVE)
|
||||||
echo "$(QT_MD5SUM) $(QT_ARCHIVE)" | md5sum --check
|
echo "$(QT_MD5SUM) $(QT_ARCHIVE)" | md5sum --check
|
||||||
|
|
||||||
push: build
|
push: build
|
||||||
|
|
|
@ -1,79 +1,42 @@
|
||||||
FROM ubuntu:16.04
|
FROM statusteam/status-build-base:1.1.0
|
||||||
|
|
||||||
ARG REACT_NATIVE_DESKTOP_COMMIT_SHA
|
|
||||||
|
|
||||||
ENV LANG en_US.UTF-8
|
|
||||||
ENV LC_ALL en_US.UTF-8
|
|
||||||
ENV LANGUAGE en_US.UTF-8
|
|
||||||
ENV LEIN_HOME /var/tmp/lein
|
|
||||||
ENV NPM_CONFIG_CACHE /var/tmp/npm
|
|
||||||
# We have to do this because Jenkins doesn't let us
|
|
||||||
# https://issues.jenkins-ci.org/browse/JENKINS-49076
|
|
||||||
ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
|
||||||
|
|
||||||
|
ARG RNATIVE_VERSION
|
||||||
ARG CONAN_VERSION
|
ARG CONAN_VERSION
|
||||||
|
ARG CMAKE_VERSION
|
||||||
|
|
||||||
RUN apt-get update && apt-get -q -y --no-install-recommends install curl software-properties-common && \
|
RUN add-apt-repository -y ppa:git-core/ppa \
|
||||||
add-apt-repository -y ppa:git-core/ppa && \
|
&& add-apt-repository -y ppa:longsleep/golang-backports \
|
||||||
add-apt-repository -y ppa:longsleep/golang-backports && \
|
&& apt-get update \
|
||||||
apt-get remove -y software-properties-common && \
|
&& DEBIAN_FRONTEND=noninteractive \
|
||||||
apt-get update && \
|
|
||||||
DEBIAN_FRONTEND=noninteractive \
|
|
||||||
apt-get -q -y --no-install-recommends install \
|
apt-get -q -y --no-install-recommends install \
|
||||||
wget git nsis unzip golang-go file jq s3cmd \
|
nsis fuse golang-go python python3-pip python3-setuptools python3-wheel \
|
||||||
python python3-pip python3-setuptools python3-wheel \
|
apt-transport-https openjdk-8-jdk-headless extra-cmake-modules build-essential \
|
||||||
apt-transport-https locales openjdk-8-jdk-headless \
|
|
||||||
extra-cmake-modules build-essential fuse \
|
|
||||||
libx11-xcb1 libxss1 libasound2 libgl-dev libsm6 libxrandr2 python-dev \
|
libx11-xcb1 libxss1 libasound2 libgl-dev libsm6 libxrandr2 python-dev \
|
||||||
libjasper-dev libegl1-mesa libxcomposite-dev libxcursor-dev && \
|
libjasper-dev libegl1-mesa libxcomposite-dev libxcursor-dev \
|
||||||
locale-gen en_US.UTF-8 && \
|
&& apt-get clean \
|
||||||
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/man && \
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/man \
|
||||||
python3 -m pip install --upgrade pip && \
|
&& python3 -m pip install --upgrade pip \
|
||||||
pip3 install conan==${CONAN_VERSION}
|
&& pip3 install conan==${CONAN_VERSION}
|
||||||
|
|
||||||
RUN cd /tmp && wget -q https://cmake.org/files/v3.12/cmake-3.12.2-Linux-x86_64.tar.gz && \
|
RUN cd /tmp \
|
||||||
tar xf cmake-3.12.2-Linux-x86_64.tar.gz --strip 1 -C /usr/local && \
|
&& wget -q https://cmake.org/files/v${CMAKE_VERSION%.*}/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz \
|
||||||
rm -fr /usr/local/doc/cmake && rm cmake-3.12.2-Linux-x86_64.tar.gz
|
&& tar xf cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz --strip 1 -C /usr/local \
|
||||||
|
&& rm -fr /usr/local/doc/cmake \
|
||||||
|
&& rm cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz
|
||||||
|
|
||||||
ARG LEIN_VERSION
|
RUN mkdir -p /tmp/react-native-desktop \
|
||||||
ENV LEIN_INSTALL=/usr/bin/
|
&& cd /tmp/react-native-desktop \
|
||||||
|
&& git --version \
|
||||||
RUN mkdir -p $LEIN_INSTALL \
|
&& git init \
|
||||||
&& wget -q https://raw.githubusercontent.com/technomancy/leiningen/${LEIN_VERSION}/bin/lein-pkg \
|
&& git remote add origin https://github.com/status-im/react-native-desktop.git \
|
||||||
&& mv lein-pkg $LEIN_INSTALL/lein \
|
&& git fetch --depth=1 origin ${RNATIVE_VERSION} \
|
||||||
&& chmod 0755 $LEIN_INSTALL/lein \
|
&& git reset --hard FETCH_HEAD \
|
||||||
&& wget -q https://github.com/technomancy/leiningen/releases/download/${LEIN_VERSION}/leiningen-${LEIN_VERSION}-standalone.zip \
|
&& cp -r /tmp/react-native-desktop/react-native-cli /opt \
|
||||||
&& mkdir -p /usr/share/java \
|
&& cd /opt/react-native-cli \
|
||||||
&& mv leiningen-${LEIN_VERSION}-standalone.zip /usr/share/java/leiningen-${LEIN_VERSION}-standalone.jar \
|
&& npm update \
|
||||||
&& $LEIN_INSTALL/lein version
|
&& npm install -g --prefix /usr/local \
|
||||||
|
&& cd \
|
||||||
ARG NVM_VERSION
|
&& rm -r /tmp/react-native-desktop
|
||||||
ARG NODE_VERSION
|
|
||||||
ADD scripts/3rd-party/nvm/${NVM_VERSION}/install.sh /tmp/nvm/${NVM_VERSION}/
|
|
||||||
|
|
||||||
RUN /tmp/nvm/${NVM_VERSION}/install.sh && \
|
|
||||||
mkdir -p /tmp/react-native-desktop && cd /tmp/react-native-desktop && \
|
|
||||||
git --version && \
|
|
||||||
git init && git remote add origin https://github.com/status-im/react-native-desktop.git && \
|
|
||||||
git fetch --depth=1 origin ${REACT_NATIVE_DESKTOP_COMMIT_SHA} && \
|
|
||||||
git reset --hard FETCH_HEAD && \
|
|
||||||
cp -r /tmp/react-native-desktop/react-native-cli /opt && \
|
|
||||||
cd /opt/react-native-cli && \
|
|
||||||
export NVM_DIR="$HOME/.nvm" && \
|
|
||||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
|
|
||||||
nvm install ${NODE_VERSION} && \
|
|
||||||
nvm use ${NODE_VERSION} && \
|
|
||||||
npm update && npm install -g && \
|
|
||||||
cd && rm -r /tmp/react-native-desktop
|
|
||||||
|
|
||||||
# These are the UID and GID values used by Jenkins
|
|
||||||
RUN addgroup --gid 1002 jenkins && \
|
|
||||||
adduser --shell /bin/bash \
|
|
||||||
--disabled-password --gecos "" \
|
|
||||||
--uid 1001 --gid 1002 jenkins
|
|
||||||
|
|
||||||
# Install NVM for Jenkins
|
|
||||||
RUN su jenkins -c '/tmp/nvm/${NVM_VERSION}/install.sh'
|
|
||||||
|
|
||||||
LABEL source="https://github.com/status-im/status-react/tree/develop/desktop/windows/docker" \
|
LABEL source="https://github.com/status-im/status-react/tree/develop/desktop/windows/docker" \
|
||||||
description="Image for building Windows Desktop version of Status app." \
|
description="Image for building Windows Desktop version of Status app." \
|
||||||
|
|
|
@ -4,24 +4,16 @@ GIT_COMMIT = $(shell git rev-parse --short HEAD)
|
||||||
GIT_ROOT = $(shell git rev-parse --show-toplevel)
|
GIT_ROOT = $(shell git rev-parse --show-toplevel)
|
||||||
|
|
||||||
# WARNING: Remember to change the tag when updating the image
|
# WARNING: Remember to change the tag when updating the image
|
||||||
IMAGE_TAG = 1.1.1
|
IMAGE_TAG = 1.1.0
|
||||||
IMAGE_NAME = statusteam/windows-desktop-ubuntu:$(IMAGE_TAG)
|
IMAGE_NAME = statusteam/status-build-windows:$(IMAGE_TAG)
|
||||||
|
|
||||||
REACT_NATIVE_DESKTOP_COMMIT_SHA = 2a76c435a27f0bf6c089f74222212b3a58e10385
|
|
||||||
|
|
||||||
build:
|
build:
|
||||||
rm -rf ./scripts && \
|
|
||||||
mkdir -p ./scripts/3rd-party && \
|
|
||||||
cp -R ../../scripts/3rd-party/ ./scripts/ && \
|
|
||||||
docker build \
|
docker build \
|
||||||
--build-arg="REACT_NATIVE_DESKTOP_COMMIT_SHA=$(REACT_NATIVE_DESKTOP_COMMIT_SHA)" \
|
--build-arg="RNATIVE_VERSION=$(call __toolversion, react_native_desktop)" \
|
||||||
--build-arg="CONAN_VERSION=$(call __toolversion, conan)" \
|
--build-arg="CONAN_VERSION=$(call __toolversion, conan)" \
|
||||||
--build-arg="LEIN_VERSION=$(call __toolversion,lein)" \
|
--build-arg="CMAKE_VERSION=$(call __toolversion, cmake)" \
|
||||||
--build-arg="NODE_VERSION=$(call __toolversion,node)" \
|
|
||||||
--build-arg="NVM_VERSION=$(call __toolversion,nvm)" \
|
|
||||||
--label="commit=$(GIT_COMMIT)" \
|
--label="commit=$(GIT_COMMIT)" \
|
||||||
-t $(IMAGE_NAME) .; \
|
-t $(IMAGE_NAME) .; \
|
||||||
rm -rf ./scripts
|
|
||||||
|
|
||||||
push: build
|
push: build
|
||||||
docker push $(IMAGE_NAME)
|
docker push $(IMAGE_NAME)
|
||||||
|
|
Loading…
Reference in New Issue