image: docker services: - docker:dind variables: KASMVNC_COMMIT_ID: $CI_COMMIT_SHA GITLAB_SHARED_DIND_DIR: /builds/$CI_PROJECT_PATH/shared GIT_SUBMODULE_STRATEGY: normal GIT_FETCH_EXTRA_FLAGS: --tags # E.g. BUILD_JOBS: build_debian_buster,build_ubuntu_bionic. This will include # arm builds, because build_debian_buster_arm matches build_debian_buster. # "BUILD_JOBS: none" won't build any build jobs, nor www. BUILD_JOBS: all stages: - www - build - test - upload .prepare_build: &prepare_build - pwd - apk add bash - mkdir -p "$GITLAB_SHARED_DIND_DIR" && chmod 777 "$GITLAB_SHARED_DIND_DIR" .prepare_www: &prepare_www - tar -zxf output/www/kasm_www.tar.gz -C builder/ .prepare_artfacts: &prepare_artfacts - cp -r builder/build/* output/ - rm output/*.tar.gz build_www: stage: www allow_failure: false before_script: - *prepare_build script: - webpacked_www=$PWD/builder/www - src_www=kasmweb - docker build -t kasmweb/www -f builder/dockerfile.www.build . - docker run --rm -v $PWD/builder/www:/build kasmweb/www:latest - mkdir -p output/www - cd builder - tar -zcvf ../output/www/kasm_www.tar.gz www only: variables: - $BUILD_JOBS !~ /^none$/ artifacts: paths: - output/ build_ubuntu_bionic: stage: build allow_failure: true before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package ubuntu bionic only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_ubuntu_bionic_arm: stage: build allow_failure: false tags: - arm before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package ubuntu bionic only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_ubuntu_bionic_libjpeg_turbo: stage: build allow_failure: false before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package ubuntu bionic +libjpeg-turbo_latest only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_ubuntu_focal: stage: build allow_failure: true before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package ubuntu focal; only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_ubuntu_focal_arm: stage: build allow_failure: true tags: - arm before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package ubuntu focal; only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_ubuntu_jammy: stage: build allow_failure: true before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package ubuntu jammy; only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_ubuntu_jammy_arm: stage: build allow_failure: true tags: - arm before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package ubuntu jammy; only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_debian_buster: stage: build allow_failure: true before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package debian buster; only: variables: - $CI_COMMIT_MESSAGE =~ /\[full [cC][Ii]\]/ || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_debian_buster_arm: stage: build allow_failure: true tags: - arm before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package debian buster; only: variables: - $CI_COMMIT_MESSAGE =~ /\[full [cC][Ii]\]/ || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_debian_bullseye: stage: build allow_failure: true before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package debian bullseye; only: variables: - $CI_COMMIT_MESSAGE =~ /\[full [cC][Ii]\]/ || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_debian_bullseye_arm: stage: build allow_failure: true tags: - arm before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package debian bullseye; only: variables: - $CI_COMMIT_MESSAGE =~ /\[full [cC][Ii]\]/ || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_kali_rolling: stage: build allow_failure: true before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package kali kali-rolling; only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_kali_rolling_arm: stage: build allow_failure: true tags: - arm before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package kali kali-rolling; only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_centos7: stage: build allow_failure: true before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package centos core only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_oracle_8: stage: build allow_failure: true before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package oracle 8; only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_oracle_8_arm: stage: build allow_failure: true tags: - arm before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package oracle 8; only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_opensuse_15: stage: build allow_failure: true before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package opensuse 15; only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_opensuse_15_arm: stage: build allow_failure: true tags: - arm before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package opensuse 15; only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ test: stage: test before_script: - *prepare_build script: - bash builder/test-vncserver upload: stage: upload image: ubuntu:focal before_script: - . .ci/upload.sh script: - prepare_to_run_scripts_and_s3_uploads - S3_CRASHPAD_BUILD_DIRECTORY="kasmvnc/crashpad/${CI_COMMIT_SHA}" - for dbgsym_package in `find output/ -type f -name '*dbgsym*deb'`; do deb_package=$(find_deb_package "$dbgsym_package"); xvnc_md5sum=$(fetch_xvnc_md5sum "$deb_package"); upload_filename="${S3_CRASHPAD_BUILD_DIRECTORY}/${xvnc_md5sum}/kasmvncserver-dbgsym.deb"; echo; echo "File to upload $upload_filename"; upload_to_s3 "$dbgsym_package" "$upload_filename" "$S3_BUCKET"; rm "$dbgsym_package"; done - export S3_BUILD_DIRECTORY="kasmvnc/${CI_COMMIT_SHA}" - export RELEASE_VERSION=$(.ci/next_release_version "$CI_COMMIT_REF_NAME") - for package in `find output/ -type f -name '*.deb' -or -name '*.rpm'`; do prepare_upload_filename "$package"; upload_filename="${S3_BUILD_DIRECTORY}/$upload_filename"; echo; echo "File to upload $upload_filename"; upload_to_s3 "$package" "$upload_filename" "$S3_BUCKET"; UPLOAD_NAME=$(basename $upload_filename | sed 's#kasmvncserver_##' | sed -r 's#_([0-9]{1,3}\.){2}[0-9]{1,2}_\S+?([a-f0-9]{6})##' | sed -r 's#\.(deb|rpm)##'); curl --request POST --header "PRIVATE-TOKEN:${GITLAB_API_TOKEN}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/statuses/${CI_COMMIT_SHA}?state=success&name=${UPLOAD_NAME}&target_url=${S3_URL}"; done