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 DOCKER_HOST: unix:// workflow: rules: # Disable tag builds. - if: $CI_COMMIT_TAG != $CI_COMMIT_REF_NAME 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 default: tags: - oci-fixed-amd64 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 - echo $PWD - ls -l - ls -l ../output - 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: - oci-fixed-arm64 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_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: - oci-fixed-arm64 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: - oci-fixed-arm64 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: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_debian_buster_arm: stage: build allow_failure: true tags: - oci-fixed-arm64 before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package debian buster; only: variables: - $BUILD_JOBS == 'all' || $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: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_debian_bullseye_arm: stage: build allow_failure: true tags: - oci-fixed-arm64 before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package debian bullseye; only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_debian_bookworm: stage: build allow_failure: true before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package debian bookworm; only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_debian_bookworm_arm: stage: build allow_failure: true tags: - oci-fixed-arm64 before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package debian bookworm; only: variables: - $BUILD_JOBS == 'all' || $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: - oci-fixed-arm64 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: - oci-fixed-arm64 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_9: stage: build allow_failure: true before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package oracle 9; only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_oracle_9_arm: stage: build allow_failure: true tags: - oci-fixed-arm64 before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package oracle 9; 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: - oci-fixed-arm64 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_fedora_thirtyseven: stage: build allow_failure: true before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package fedora thirtyseven; only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_fedora_thirtyseven_arm: stage: build allow_failure: true tags: - oci-fixed-arm64 before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package fedora thirtyseven; only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_fedora_thirtyeight: stage: build allow_failure: true before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package fedora thirtyeight; only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_fedora_thirtyeight_arm: stage: build allow_failure: true tags: - oci-fixed-arm64 before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package fedora thirtyeight; only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_alpine_317: stage: build allow_failure: true before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package alpine 317; only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_alpine_317_arm: stage: build allow_failure: true tags: - oci-fixed-arm64 before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package alpine 317; 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 build_alpine_318: stage: build allow_failure: true before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package alpine 318; only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ build_alpine_318_arm: stage: build allow_failure: true tags: - oci-fixed-arm64 before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts script: - bash builder/build-package alpine 318; only: variables: - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME artifacts: paths: - output/ upload: stage: upload image: ubuntu:focal artifacts: paths: - output/ 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") - uploaded_files=() - for package in `find output/ -type f -name '*.deb' -or -name '*.rpm' -or -name '*.tgz'`; 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|tgz)##'); 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}"; uploaded_files+=("$upload_filename"); done - make_index_html "${uploaded_files[@]}" > output/index.html; upload_build_preview: stage: upload needs: ["upload"] dependencies: ["upload"] image: ubuntu:focal before_script: - . .ci/upload.sh resource_group: upload_build_preview only: variables: - $CI_COMMIT_BRANCH == 'master' script: - prepare_to_run_scripts_and_s3_uploads - preview_builds_dir=kasmvnc/preview-builds - upload_to_s3 "output/index.html" "$preview_builds_dir/index.html" "$S3_BUCKET" - curl --request POST --header "PRIVATE-TOKEN:${GITLAB_API_TOKEN}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/statuses/${CI_COMMIT_SHA}?state=success&name=index.html&target_url=${S3_URL}";