diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e4489c5042d5b37efce1ff974906dac7afe4b97b..1436bc5c9d42f45a5eb91fd02c652362a2a5de84 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -17,6 +17,7 @@ check-version: JAVA_VERSION_FILE: "src/main/java/ecorp/easy/installer/AppConstants.java" SNAPCRAFT_VERSION_FILE: "snap/snapcraft.yaml" WINDOWS_VERSION_FILE: "windows-installer-mui.nsi" + AUR_VERSION_FILE: "pkg/arch/PKGBUILD" script: - ./check-version.sh rules: @@ -38,6 +39,25 @@ build-docker: - docker build --cache-from $CONTAINER_IMAGE:$CONTAINER_TAG -t $CONTAINER_IMAGE:$CONTAINER_TAG . - docker push $CONTAINER_IMAGE:$CONTAINER_TAG +build-aur-docker: +# build AUR docker image +# the image is different from the build-docker (which using docker:19) step as +# archlinux/archlinux docker image fails with +# error: failed to initialize alpm library: + image: docker:20 + stage: prepare + services: + - docker:20-dind + tags: + - generic_privileged + variables: + DOCKER_DRIVER: overlay2 + script: + - docker pull $CONTAINER_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 + build-ubuntu: image: registry.gitlab.e.foundation/e/devices/easy-installer:stable stage: build @@ -51,7 +71,6 @@ build-ubuntu: paths: - easy-installer*.snap - build-windows: image: registry.gitlab.e.foundation/e/devices/easy-installer:stable stage: build @@ -67,6 +86,25 @@ build-windows: - Easy-installer-setup.exe - Easy-installer-setup.exe.sha256sum +.build-aur: + image: $CONTAINER_IMAGE/aur:$CONTAINER_TAG + stage: build + before_script: + - git clone --depth=1 $CI_REPOSITORY_URL -b $CI_COMMIT_TAG /home/builder/easy-installer-src + - mkdir $PUBLISH_DEST && cp -a /home/builder/easy-installer-src/pkg/arch/. /home/builder/$PUBLISH_DEST + script: + - cd /home/builder/$PUBLISH_DEST && makepkg -sifc --noconfirm + artifacts: + name: "easy-installer" + paths: + - /home/builder/$PUBLISH_DEST/easy-installer*.tar.zst + +build-aur: + extends: + - .build-aur + environment: + name: aur-repo + publish-ubuntu: image: registry.gitlab.e.foundation/e/devices/easy-installer:stable stage: publish @@ -88,7 +126,7 @@ publish-windows: before_script: - '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 + - echo "$SSH_PRIVATE_KEY_ED" | tr -d '\r' | ssh-add - > /dev/null - mkdir -p ~/.ssh - chmod 700 ~/.ssh - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts @@ -99,3 +137,44 @@ publish-windows: rules: - if: '$CI_COMMIT_TAG' when: manual + +.publish-aur: + image: $CONTAINER_IMAGE/aur:$CONTAINER_TAG + stage: publish + variables: + RELEASE_TYPE: beta + before_script: + # store the private key into the agent's memory + - eval $(ssh-agent -s) + - echo "$SSH_PRIVATE_KEY_ED" | tr -d '\r' | ssh-add - > /dev/null + # add 'aur' to SSH configure + - install -m '700' -d ~/.ssh + - echo -e "Host aur aur.archlinux.org\n User aur\n Hostname aur.archlinux.org" > ~/.ssh/config + - ssh-keyscan aur.archlinux.org > ~/.ssh/known_hosts + + # config git + - git config --global user.email "$PUBLISH_USER_EMAIL" + - git config --global user.name "$PUBLISH_USER" + script: + # Clone AUR repo + - git clone ssh://aur@aur.archlinux.org/$PUBLISH_DEST.git + # Clone the source /e/ repo + - git clone --depth=1 $CI_REPOSITORY_URL -b $CI_COMMIT_TAG easy-installer-src + # Copy package file from source to AUR clone + - cp -a easy-installer-src/pkg/arch/. $PUBLISH_DEST/ + # Generate add, commit and push + - | + cd $PUBLISH_DEST/ && + makepkg --printsrcinfo > .SRCINFO && + git add . && + git commit -m "$CI_COMMIT_TAG" && + git push + +publish-aur: + extends: + - .publish-aur + environment: + name: aur-repo + rules: + - if: '$CI_COMMIT_TAG' + when: manual diff --git a/check-version.sh b/check-version.sh index 6f16c3045d9774b81bd494d783386af9f9f9fa21..a1eb312ad1ec18a017c91bc2df5d0c23a4bb1947 100755 --- a/check-version.sh +++ b/check-version.sh @@ -9,9 +9,12 @@ echo "Snapcraft version: $SNAPCRAFT_VERSION ($SNAPCRAFT_VERSION_FILE)" WINDOWS_VERSION=$(cat $WINDOWS_VERSION_FILE | grep "define appVersion" | sed -E 's/!define appVersion "(v.*)"/\1/') echo "Windows version: $WINDOWS_VERSION ($WINDOWS_VERSION_FILE)" +AUR_VERSION=$(cat $AUR_VERSION_FILE | grep "^pkgver" | sed 's/[^=]*= *//;s/.*/v&-beta/') +echo "AUR version: $AUR_VERSION ($AUR_VERSION_FILE)" + echo "Tag version: $CI_COMMIT_TAG" -if [ $JAVA_VERSION != $CI_COMMIT_TAG ] || [ $SNAPCRAFT_VERSION != $CI_COMMIT_TAG ] || [ $WINDOWS_VERSION != $CI_COMMIT_TAG ] +if [ $JAVA_VERSION != $CI_COMMIT_TAG ] || [ $SNAPCRAFT_VERSION != $CI_COMMIT_TAG ] || [ $WINDOWS_VERSION != $CI_COMMIT_TAG ] || [ $AUR_VERSION_VERSION != $CI_COMMIT_TAG ] then exit 1 fi diff --git a/docker/Dockerfile.arch b/docker/Dockerfile.arch new file mode 100644 index 0000000000000000000000000000000000000000..eb01985b8fb9af73fb4ea688db030d14cef1cd7a --- /dev/null +++ b/docker/Dockerfile.arch @@ -0,0 +1,29 @@ +FROM archlinux:base-devel + +# update pacman and install sudo git openssh +RUN pacman -Syyu --noconfirm && \ + pacman -Syy --noconfirm --noprogressbar sudo git openssh && \ + yes | pacman -Scc && rm -fr /var/lib/pacman/sync/*1 + +# add a non-root user and allowing running as root with password +RUN useradd -m builder && \ + echo "builder ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers + +# make /home/builder working directory +WORKDIR /home/builder + +# run as user +USER builder + +# install build dependencies +RUN mkdir /home/builder/pkg &&\ + curl -o '/home/builder/pkg/PKGBUILD' https://gitlab.e.foundation/e/devices/easy-installer/-/raw/master/pkg/arch/PKGBUILD && \ + cd /home/builder/pkg/ && \ + sudo pacman -Syyu --noconfirm && \ + yes | makepkg -seo && \ + yes | sudo pacman -Scc && sudo rm -fr /var/lib/pacman/sync/* + +# remove files after installing dependecies +RUN sudo rm -rf /home/builder/pkg/ + +CMD ["/usr/bin/bash"] \ No newline at end of file