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

Commit 5e247b79 authored by Jackeagle's avatar Jackeagle
Browse files

ci: Improve build system



- Use gitlab predefined CI_REGISTRY_IMAGE variable instead of CONTAINER_IMAGE
- Remove workspace logic since its only useful for local build.
- Extract and setup gradle on docker container, this would remove network dependency.

Signed-off-by: default avatarJackeagle <jackeagle102@gmail.com>
parent d5cb5ce0
Loading
Loading
Loading
Loading
+24 −37
Original line number Diff line number Diff line
variables:
  GIT_SUBMODULE_STRATEGY: recursive
  CONTAINER_IMAGE: registry.gitlab.e.foundation/e/devices/easy-installer
  CONTAINER_TAG: beta
  ARCH_CONTAINER_TAG: stable

@@ -11,12 +10,12 @@ stages:
  - publish

check-version:
  image: $CONTAINER_IMAGE:$CONTAINER_TAG
  image: $CI_REGISTRY_IMAGE:$CONTAINER_TAG
  stage: test
  script:
    - ./version.sh check
  rules:
    - if: '$CI_COMMIT_TAG'
    - if: "$CI_COMMIT_TAG"
      when: always

build-docker:
@@ -29,10 +28,10 @@ build-docker:
  variables:
    DOCKER_DRIVER: overlay2
  script:
    - docker pull $CONTAINER_IMAGE:$CONTAINER_TAG || true
    - docker pull $CI_REGISTRY_IMAGE:$CONTAINER_TAG || true
    - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.e.foundation
    - docker build --cache-from $CONTAINER_IMAGE:$CONTAINER_TAG -t $CONTAINER_IMAGE:$CONTAINER_TAG .
    - docker push $CONTAINER_IMAGE:$CONTAINER_TAG
    - docker build --cache-from $CI_REGISTRY_IMAGE:$CONTAINER_TAG -t $CI_REGISTRY_IMAGE:$CONTAINER_TAG .
    - docker push $CI_REGISTRY_IMAGE:$CONTAINER_TAG
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
      changes:
@@ -49,10 +48,10 @@ build-aur-docker:
  variables:
    DOCKER_DRIVER: overlay2
  script:
    - docker pull $CONTAINER_IMAGE/aur:$CONTAINER_TAG || true
    - docker pull $CI_REGISTRY_IMAGE/aur:$CONTAINER_TAG || true
    - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
    - cd docker && docker build --cache-from $CONTAINER_IMAGE/aur:$CONTAINER_TAG -f Dockerfile.arch -t $CONTAINER_IMAGE/aur:$CONTAINER_TAG .
    - docker push $CONTAINER_IMAGE/aur:$CONTAINER_TAG
    - cd docker && docker build --cache-from $CI_REGISTRY_IMAGE/aur:$CONTAINER_TAG -f Dockerfile.arch -t $CI_REGISTRY_IMAGE/aur:$CONTAINER_TAG .
    - docker push $CI_REGISTRY_IMAGE/aur:$CONTAINER_TAG
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
      changes:
@@ -60,31 +59,25 @@ build-aur-docker:
      when: manual

build-snap:
  image: $CONTAINER_IMAGE:$CONTAINER_TAG
  image: $CI_REGISTRY_IMAGE:$CONTAINER_TAG
  stage: build
  variables:
    GIT_SUBMODULE_STRATEGY: recursive
  script:
    - cp -r $CI_PROJECT_DIR/* /Workspace/
    - cd /Workspace
    - snapcraft
    - ls
    - cp -r /Workspace/* $CI_PROJECT_DIR/
  artifacts:
    name: "easy-installer"
    paths:
      - easy-installer*.snap

build-linux-x64:
  image: $CONTAINER_IMAGE:$CONTAINER_TAG
  image: $CI_REGISTRY_IMAGE:$CONTAINER_TAG
  stage: build
  variables:
    GIT_SUBMODULE_STRATEGY: recursive
  script:
    - cp -r $CI_PROJECT_DIR/* /Workspace/
    - cd /Workspace
    - ./gradlew dist
    - cp -r /Workspace/* $CI_PROJECT_DIR/
  artifacts:
    name: "easy-installer-$CI_COMMIT_TAG-linux_x64"
    paths:
@@ -93,17 +86,14 @@ build-linux-x64:
    - if: $CI_COMMIT_TAG

build-windows:
  image: $CONTAINER_IMAGE:$CONTAINER_TAG
  image: $CI_REGISTRY_IMAGE:$CONTAINER_TAG
  stage: build
  variables:
    GIT_SUBMODULE_STRATEGY: recursive
  script:
    - cp -r $CI_PROJECT_DIR/* /Workspace/
    - cd /Workspace
    - ./gradlew jlink -Pkey="$PEPPER"
    - makensis windows-installer-mui.nsi
    - sha256sum Easy-installer-setup.exe > Easy-installer-setup.exe.sha256sum
    - cp -r /Workspace/* $CI_PROJECT_DIR/
  artifacts:
    name: "easy-installer-windows"
    paths:
@@ -111,20 +101,17 @@ build-windows:
      - Easy-installer-setup.exe.sha256sum

build-macos:
  image: $CONTAINER_IMAGE:$CONTAINER_TAG
  image: $CI_REGISTRY_IMAGE:$CONTAINER_TAG
  tags:
    - generic_privileged
  stage: build
  variables:
    GIT_SUBMODULE_STRATEGY: recursive
  script:
    - cp -r $CI_PROJECT_DIR/* /Workspace/
    - cd /Workspace
    - ./gradlew jlink
    - cd Mac-build
    - ./mac_package.sh
    - sha256sum EasyInstaller.dmg > EasyInstaller.dmg.sha256sum
    - cp -r /Workspace/* $CI_PROJECT_DIR/
  artifacts:
    name: "easy-installer-mac"
    paths:
@@ -132,7 +119,7 @@ build-macos:
      - Mac-build/EasyInstaller.dmg.sha256sum

build-aur:
  image: $CONTAINER_IMAGE/aur:$ARCH_CONTAINER_TAG
  image: $CI_REGISTRY_IMAGE/aur:$ARCH_CONTAINER_TAG
  stage: build
  before_script:
    - mkdir dist && cp -a pkg/arch/. dist
@@ -144,7 +131,7 @@ build-aur:
      - dist/*.pkg.tar.zst

publish-ubuntu:
  image: $CONTAINER_IMAGE:$CONTAINER_TAG
  image: $CI_REGISTRY_IMAGE:$CONTAINER_TAG
  stage: publish
  needs: ["build-snap"]
  variables:
@@ -154,17 +141,17 @@ publish-ubuntu:
    - snapcraft upload *.snap --release $RELEASE_TYPE
    - snapcraft logout && rm snapcraft.login
  rules:
    - if: '$CI_COMMIT_TAG'
    - if: "$CI_COMMIT_TAG"
      when: manual

publish-macos:
  image: $CONTAINER_IMAGE:$CONTAINER_TAG
  image: $CI_REGISTRY_IMAGE:$CONTAINER_TAG
  stage: publish
  needs: ["build-macos"]
  variables:
    RELEASE_TYPE: beta
  before_script:
    - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
    - "which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )"
    - eval $(ssh-agent -s)
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
    - mkdir -p ~/.ssh
@@ -175,17 +162,17 @@ publish-macos:
    - "rsync -avz Mac-build/EasyInstaller.dmg* $PUBLISH_USER@$PUBLISH_URL:$PUBLISH_DEST"
    - ssh $PUBLISH_USER@$PUBLISH_URL "mv $PUBLISH_DEST/* $RELEASE_DEST/"
  rules:
    - if: '$CI_COMMIT_TAG'
    - if: "$CI_COMMIT_TAG"
      when: manual

publish-windows:
  image: $CONTAINER_IMAGE:$CONTAINER_TAG
  image: $CI_REGISTRY_IMAGE:$CONTAINER_TAG
  stage: publish
  needs: ["build-windows"]
  variables:
    RELEASE_TYPE: beta
  before_script:
    - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
    - "which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )"
    - eval $(ssh-agent -s)
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
    - mkdir -p ~/.ssh
@@ -196,11 +183,11 @@ publish-windows:
    - "rsync -avz Easy-installer-setup.exe* $PUBLISH_USER@$PUBLISH_URL:$PUBLISH_DEST"
    - ssh $PUBLISH_USER@$PUBLISH_URL "mv $PUBLISH_DEST/* $RELEASE_DEST/"
  rules:
    - if: '$CI_COMMIT_TAG'
    - if: "$CI_COMMIT_TAG"
      when: manual

.publish-aur:
  image: $CONTAINER_IMAGE/aur:$CONTAINER_TAG
  image: $CI_REGISTRY_IMAGE/aur:$CONTAINER_TAG
  stage: publish
  needs: ["build-aur"]
  variables:
@@ -235,7 +222,7 @@ publish-aur:
  environment:
    name: aur-repo
  rules:
    - if: '$CI_COMMIT_TAG'
    - if: "$CI_COMMIT_TAG"
      when: manual

publish-linux-x64:
@@ -247,4 +234,4 @@ publish-linux-x64:
  script:
    - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file "${CI_PROJECT_DIR}/build/distributions/easyInstaller-linux-x64.zip" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/easy-installer/$CI_COMMIT_TAG/$PKG_NAME"'
  rules:
    - if: '$CI_COMMIT_TAG'
    - if: "$CI_COMMIT_TAG"
+10 −9
Original line number Diff line number Diff line
@@ -9,9 +9,8 @@ COPY --from=builder /snap/bin/snapcraft /snap/bin/snapcraft

# Install necessary packages
RUN apt-get update && apt-get dist-upgrade --yes && \
    apt-get install --yes snapd sudo locales && \
    locale-gen en_US.UTF-8 && \
    apt-get install --yes iputils-ping wget unzip gcc nsis rsync hfsprogs hfsplus
    apt-get install --yes snapd sudo locales wget unzip gcc nsis rsync hfsprogs hfsplus && \
    locale-gen en_US.UTF-8

# Set the proper environment
ENV LANG="en_US.UTF-8"
@@ -22,16 +21,18 @@ ENV SNAP="/snap/snapcraft/current"
ENV SNAP_NAME="snapcraft"
ENV SNAP_ARCH="amd64"

# Copy pre-built Gradle distribution into the container
COPY gradle /usr/local/gradle

# Install JVM
COPY buildSrc/linux/jdk-11.0.2 /usr/lib/jdk/jdk-11.0.2
ENV JAVA_HOME=/usr/lib/jdk/jdk-11.0.2

# Download Gradle ZIP file into the container
ADD https://github.com/gradle/gradle-distributions/releases/download/v4.10.2/gradle-4.10.2-bin.zip /tmp/

# Extract Gradle
RUN mkdir -p /usr/local/gradle && \
    unzip /tmp/gradle-4.10.2-bin.zip -d /usr/local/gradle && \
    rm /tmp/gradle-4.10.2-bin.zip

# Set Gradle environment variables
ENV GRADLE_HOME=/usr/local/gradle/gradle-4.10.2
ENV PATH=$GRADLE_HOME/bin:$PATH

# Set the working directory to /Workspace
WORKDIR /Workspace
+0 −1
Original line number Diff line number Diff line
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=file:///Workspace/gradle/gradle-4.10.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists