Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a4c368c8 authored by Arnau Vàzquez's avatar Arnau Vàzquez
Browse files

Merge branch 'selfhosted-builds' into 'main'

Selfhost builds auto-build

See merge request !136
parents 2874c1fb 464c7c09
Loading
Loading
Loading
Loading
Loading
+35 −9
Original line number Original line Diff line number Diff line
@@ -10,23 +10,49 @@ default:
  services:
  services:
    - docker:19.03.12-dind
    - docker:19.03.12-dind
  before_script:
  before_script:
    - docker info
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
  tags:
  tags:
    - generic_privileged
    - generic_privileged


.build-docker:
  script:
    - echo "TARGET $TARGET, BRANCH $CI_COMMIT_BRANCH, COMMIT_REF_SLUG $CI_COMMIT_REF_SLUG, COMMIT_TAG $CI_COMMIT_TAG"
    - docker build --target $TARGET  --pull -t "$CI_REGISTRY_IMAGE$SUBPATH:$CI_COMMIT_REF_SLUG" .
    - docker push "$CI_REGISTRY_IMAGE$SUBPATH:$CI_COMMIT_REF_SLUG"

build-branch:
build-branch:
  except:
    - tags
  stage: build
  stage: build
  script:
  variables:
    - docker build --pull -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" .
    TARGET: ecloud
    - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
    SUBPATH: ''
  only:
    - branches
  extends: .build-docker

build-branch-selfhost:
  stage: build
  variables:
    TARGET: selfhost
    SUBPATH: '/selfhost'
  only:
    - branches
  when: manual
  extends: .build-docker


build-tag:
build-tag:
  stage: build
  variables:
    TARGET: ecloud
    SUBPATH: ''
  only:
  only:
    - tags
    - tags
  extends: .build-docker

build-tag-selfhost:
  stage: build
  stage: build
  script:
  variables:
    - docker build --pull -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG" .
    TARGET: selfhost
    - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG"
    SUBPATH: '/selfhost'
  only:
    - tags
  extends: .build-docker
+50 −28
Original line number Original line Diff line number Diff line
FROM nextcloud:23.0.9-fpm AS nextcloud
FROM nextcloud:23.0.9-fpm AS nextcloud
ARG BASE_DIR="/usr/src/nextcloud"
ARG BASE_DIR="/usr/src/nextcloud"
ARG TMP_PATCH_DIR="/tmp/build_patches"
ARG TMP_PATCH_DIR="/tmp/build_patches"
ARG THEME_VERSION="22.1.5"
ARG THEME_HELPER_VERSION="1.4.4"
ARG THEME_HELPER_VERSION="1.4.4"
ARG NEWS_VERSION="18.1.1"
ARG NEWS_VERSION="18.1.1"
ARG QUOTA_WARN_VERSION="1.14.0"
ARG QUOTA_WARN_VERSION="1.14.0"
ARG NOTES_VERSION="4.5.1"
ARG NOTES_VERSION="4.5.1"
ARG CONTACTS_JOB_ID="400045"
ARG CONTACTS_JOB_ID="400045"
ARG CALENDAR_JOB_ID="414851"
ARG CALENDAR_JOB_ID="413645"
ARG USER_BACKEND_RAW_SQL_VERSION="1.3.0"
ARG USER_BACKEND_RAW_SQL_VERSION="1.3.0"
ARG EMAIL_RECOVERY_JOB_ID="389385"
ARG EMAIL_RECOVERY_JOB_ID="389385"
ARG RAINLOOP_VERSION="7.2.5"
ARG RAINLOOP_VERSION="7.2.5"
@@ -15,8 +14,6 @@ ARG RAINLOOP_COMMIT_SHA="523518ba"
ARG EA_TAG="2.1.1"
ARG EA_TAG="2.1.1"
ARG ECLOUD_LAUNCHER_JOB_ID="389373"
ARG ECLOUD_LAUNCHER_JOB_ID="389373"
ARG GOOGLE_INTEGRATION_VERSION="1.0.8"
ARG GOOGLE_INTEGRATION_VERSION="1.0.8"
ARG LDAP_WRITE_SUPPORT_VERSION="1.4.0"
ARG OIDC_LOGIN_VERSION="2.3.3"


RUN sed -i 's/23,0,9,1/23,0,9,19/' ${BASE_DIR}/version.php
RUN sed -i 's/23,0,9,1/23,0,9,19/' ${BASE_DIR}/version.php
COPY custom_entrypoint.sh /
COPY custom_entrypoint.sh /
@@ -97,15 +94,6 @@ RUN curl -fsSL -o ecloud-accounts.tar.gz \
    mv "${BASE_DIR}/custom_apps/ecloud-accounts-${EA_TAG}" "${BASE_DIR}/custom_apps/ecloud-accounts" && \
    mv "${BASE_DIR}/custom_apps/ecloud-accounts-${EA_TAG}" "${BASE_DIR}/custom_apps/ecloud-accounts" && \
    rm ecloud-accounts.tar.gz;
    rm ecloud-accounts.tar.gz;


RUN curl -fsSL -o ldap_write_support.tar.gz \
    "https://github.com/nextcloud-releases/ldap_write_support/releases/download/v${LDAP_WRITE_SUPPORT_VERSION}/ldap_write_support.tar.gz" && \
    tar -xf ldap_write_support.tar.gz -C ${BASE_DIR}/custom_apps && \
    rm ldap_write_support.tar.gz

RUN curl -fsSL -o oidc_login.tar.gz \
    "https://github.com/pulsejet/nextcloud-oidc-login/releases/download/v${OIDC_LOGIN_VERSION}/oidc_login.tar.gz" && \
    tar -xf oidc_login.tar.gz -C ${BASE_DIR}/custom_apps && \
    rm oidc_login.tar.gz


# Remove unzip when unzipping is done
# Remove unzip when unzipping is done
RUN apt-get -y remove unzip
RUN apt-get -y remove unzip
@@ -113,13 +101,17 @@ RUN apt-get -y remove unzip
# force eCloud theme not to be disabled even when there is an upgrade process launched
# force eCloud theme not to be disabled even when there is an upgrade process launched
RUN sed -i "s/\$systemConfig->setValue('theme', '');/\$systemConfig->setValue('theme', 'eCloud');/g" ${BASE_DIR}/lib/base.php
RUN sed -i "s/\$systemConfig->setValue('theme', '');/\$systemConfig->setValue('theme', 'eCloud');/g" ${BASE_DIR}/lib/base.php


ENTRYPOINT ["/custom_entrypoint.sh"]
CMD ["php-fpm"]

From nextcloud as selfhost
ARG BASE_DIR="/usr/src/nextcloud"
ARG TMP_PATCH_DIR="/tmp/build_patches"
ARG SELFHOST_THEME_VERSION="selfhost-22.0.0"

# Patches
# Patches
COPY patches/ ${TMP_PATCH_DIR}/
COPY patches/ ${TMP_PATCH_DIR}/
RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/002-login-without-domain.patch
RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/002-login-without-domain.patch
RUN patch -u ${BASE_DIR}/core/templates/layout.user.php -i ${TMP_PATCH_DIR}/003-contact-search-removal.patch
RUN patch -u ${BASE_DIR}/core/Controller/ContactsMenuController.php -i ${TMP_PATCH_DIR}/004-contact-search-controller-removal.patch
RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/005-autocomplete-user-leak-core.patch
RUN cd ${BASE_DIR}/custom_apps && patch -p0 < ${TMP_PATCH_DIR}/005-autocomplete-user-leak-custom-app.patch
RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/006-recovery-email-changes.patch
RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/006-recovery-email-changes.patch
RUN patch -u ${BASE_DIR}/apps/settings/lib/Settings/Personal/ServerDevNotice.php -i ${TMP_PATCH_DIR}/007-remove-dev-notice.patch
RUN patch -u ${BASE_DIR}/apps/settings/lib/Settings/Personal/ServerDevNotice.php -i ${TMP_PATCH_DIR}/007-remove-dev-notice.patch
RUN patch -u ${BASE_DIR}/lib/private/Template/IconsCacher.php -i ${TMP_PATCH_DIR}/008-icons-cacher-theme-svgs.patch
RUN patch -u ${BASE_DIR}/lib/private/Template/IconsCacher.php -i ${TMP_PATCH_DIR}/008-icons-cacher-theme-svgs.patch
@@ -127,17 +119,55 @@ RUN patch -u ${BASE_DIR}/core/Controller/SvgController.php -i ${TMP_PATCH_DIR}/0
RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/009-help-links.patch
RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/009-help-links.patch
RUN patch -u ${BASE_DIR}/lib/private/Updater.php -i ${TMP_PATCH_DIR}/010-disable-app-store-upgrade.patch
RUN patch -u ${BASE_DIR}/lib/private/Updater.php -i ${TMP_PATCH_DIR}/010-disable-app-store-upgrade.patch
RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/011-privacy-settings.patch
RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/011-privacy-settings.patch
RUN cd ${BASE_DIR} && patch -u ${BASE_DIR}/apps/dashboard/lib/Controller/DashboardController.php -i ${TMP_PATCH_DIR}/012-remove-user-status-widget.patch
RUN patch -u ${BASE_DIR}/lib/private/Authentication/Token/PublicKeyTokenProvider.php -i ${TMP_PATCH_DIR}/013-revert-token-password-update.patch
RUN patch -u ${BASE_DIR}/lib/private/Authentication/Token/PublicKeyTokenProvider.php -i ${TMP_PATCH_DIR}/013-revert-token-password-update.patch
RUN patch -u ${BASE_DIR}/lib/private/legacy/OC_Helper.php -i ${TMP_PATCH_DIR}/014-add-mail-usage.patch
RUN patch -u ${BASE_DIR}/lib/private/legacy/OC_Helper.php -i ${TMP_PATCH_DIR}/014-add-mail-usage.patch
RUN cd ${BASE_DIR} && patch -u ${BASE_DIR}/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php -i ${TMP_PATCH_DIR}/015-email-mail-template.patch
RUN cd ${BASE_DIR} && patch -u ${BASE_DIR}/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php -i ${TMP_PATCH_DIR}/015-email-mail-template.patch
RUN patch -u ${BASE_DIR}/core/templates/layout.guest.php -i ${TMP_PATCH_DIR}/016-login-screen.patch
RUN patch -u ${BASE_DIR}/core/Command/User/Setting.php -i ${TMP_PATCH_DIR}/018-occ-user-setting.patch
RUN patch -u ${BASE_DIR}/core/Command/User/Setting.php -i ${TMP_PATCH_DIR}/018-occ-user-setting.patch
RUN patch -u ${BASE_DIR}/apps/settings/lib/Sections/Personal/Groupware.php -i ${TMP_PATCH_DIR}/019-groupware.patch
RUN patch -u ${BASE_DIR}/apps/settings/lib/Sections/Personal/Groupware.php -i ${TMP_PATCH_DIR}/019-groupware.patch
RUN patch -u ${BASE_DIR}/lib/private/Notification/Manager.php -i ${TMP_PATCH_DIR}/020-fairuse-notification-fix.patch
RUN patch -u ${BASE_DIR}/apps/files/js/files.js -i ${TMP_PATCH_DIR}/021-repeated-storage-dialog-fix.patch
RUN patch -u ${BASE_DIR}/apps/files/js/files.js -i ${TMP_PATCH_DIR}/021-repeated-storage-dialog-fix.patch
RUN rm -rf ${TMP_PATCH_DIR}
RUN rm -rf ${TMP_PATCH_DIR}


# Custom theme
RUN curl -fsSL -o eCloud-theme.tar.gz \
    "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/nextcloud-theme/-/archive/${SELFHOST_THEME_VERSION}/nextcloud-theme-${SELFHOST_THEME_VERSION}.tar.gz" && \
    tar -xf eCloud-theme.tar.gz -C /tmp/ && \
    mv /tmp/nextcloud-theme-${SELFHOST_THEME_VERSION}/ ${BASE_DIR}/themes/eCloud && \
    chown -R www-data:www-data ${BASE_DIR}/themes/eCloud/ && \
    rm -rf eCloud-theme.tar.gz ${BASE_DIR}/themes/example/

# Replace "Get your own free account" NC link with /e/ Account link in public pages
RUN sed -i 's/https:\/\/nextcloud.com\/signup\//https:\/\/e\.foundation\/<?php p(\$_\[\x27language\x27\]); ?>\/e-email-invite\//' ${BASE_DIR}/core/templates/layout.public.php
# Set default class of hidden to settings-hint
RUN sed -i 's/settings-hint/settings-hint hidden/' ${BASE_DIR}/apps/settings/templates/settings/personal/security/twofactor.php

From selfhost as ecloud
ARG BASE_DIR="/usr/src/nextcloud"
ARG TMP_PATCH_DIR="/tmp/build_patches"
ARG THEME_VERSION="23.0.1"
ARG LDAP_WRITE_SUPPORT_VERSION="1.4.0"
ARG OIDC_LOGIN_VERSION="2.3.3"

# Patches
COPY patches/ ${TMP_PATCH_DIR}/
RUN patch -u ${BASE_DIR}/core/templates/layout.user.php -i ${TMP_PATCH_DIR}/003-contact-search-removal.patch
RUN patch -u ${BASE_DIR}/core/Controller/ContactsMenuController.php -i ${TMP_PATCH_DIR}/004-contact-search-controller-removal.patch
RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/005-autocomplete-user-leak-core.patch
RUN cd ${BASE_DIR}/custom_apps && patch -p0 < ${TMP_PATCH_DIR}/005-autocomplete-user-leak-custom-app.patch
RUN cd ${BASE_DIR} && patch -u ${BASE_DIR}/apps/dashboard/lib/Controller/DashboardController.php -i ${TMP_PATCH_DIR}/012-remove-user-status-widget.patch
RUN patch -u ${BASE_DIR}/core/templates/layout.guest.php -i ${TMP_PATCH_DIR}/016-login-screen.patch
RUN patch -u ${BASE_DIR}/lib/private/Notification/Manager.php -i ${TMP_PATCH_DIR}/020-fairuse-notification-fix.patch
RUN rm -rf ${TMP_PATCH_DIR}

RUN curl -fsSL -o ldap_write_support.tar.gz \
    "https://github.com/nextcloud-releases/ldap_write_support/releases/download/v${LDAP_WRITE_SUPPORT_VERSION}/ldap_write_support.tar.gz" && \
    tar -xf ldap_write_support.tar.gz -C ${BASE_DIR}/custom_apps && \
    rm ldap_write_support.tar.gz

RUN curl -fsSL -o oidc_login.tar.gz \
    "https://github.com/pulsejet/nextcloud-oidc-login/releases/download/v${OIDC_LOGIN_VERSION}/oidc_login.tar.gz" && \
    tar -xf oidc_login.tar.gz -C ${BASE_DIR}/custom_apps && \
    rm oidc_login.tar.gz

# show reset pwd page with a query param
# show reset pwd page with a query param
RUN cd ${BASE_DIR}/core/js/dist && sed -i 's/resetPassword:!1/resetPassword:!1||Z.showResetPassword==="1"/' login.js
RUN cd ${BASE_DIR}/core/js/dist && sed -i 's/resetPassword:!1/resetPassword:!1||Z.showResetPassword==="1"/' login.js


@@ -176,15 +206,7 @@ RUN curl -fsSL -o eCloud-theme.tar.gz \
    chown -R www-data:www-data ${BASE_DIR}/themes/eCloud/ && \
    chown -R www-data:www-data ${BASE_DIR}/themes/eCloud/ && \
    rm -rf eCloud-theme.tar.gz ${BASE_DIR}/themes/example/
    rm -rf eCloud-theme.tar.gz ${BASE_DIR}/themes/example/


# Replace "Get your own free account" NC link with /e/ Account link in public pages
RUN sed -i 's/https:\/\/nextcloud.com\/signup\//https:\/\/e\.foundation\/<?php p(\$_\[\x27language\x27\]); ?>\/e-email-invite\//' ${BASE_DIR}/core/templates/layout.public.php

# Set default class of hidden to settings-hint
RUN sed -i 's/settings-hint/settings-hint hidden/' ${BASE_DIR}/apps/settings/templates/settings/personal/security/twofactor.php

# Seds to fix displayname save regression
# Seds to fix displayname save regression
RUN sed -i "s/'email' ||/'email'/" ${BASE_DIR}/apps/settings/js/federationsettingsview.js
RUN sed -i "s/'email' ||/'email'/" ${BASE_DIR}/apps/settings/js/federationsettingsview.js
RUN sed -i "s/field === 'displayname'//" ${BASE_DIR}/apps/settings/js/federationsettingsview.js
RUN sed -i "s/field === 'displayname'//" ${BASE_DIR}/apps/settings/js/federationsettingsview.js
ENTRYPOINT ["/custom_entrypoint.sh"]
CMD ["php-fpm"]