mirror of
https://github.com/kasmtech/KasmVNC.git
synced 2024-12-02 21:13:50 +01:00
410 lines
9.0 KiB
YAML
410 lines
9.0 KiB
YAML
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
|