mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-05 22:58:12 +02:00
371 lines
11 KiB
YAML
371 lines
11 KiB
YAML
variables:
|
|
FPC_OLDSTABLE_VER: 3.2.0
|
|
FPC_STABLE_VER: 3.2.2 # make sure to properly adjust FOOTER variable value in docs-fpdoc-stable job on version bump (needed only once)
|
|
FPC_FIXES_VER: 3.2.3
|
|
FPC_MAIN_VER: 3.3.1
|
|
|
|
IMAGE_TAG: $CI_REGISTRY_IMAGE/debian-x86-64:latest
|
|
QT5PAS_SRC: lcl/interfaces/qt5/cbindings
|
|
QT6PAS_SRC: lcl/interfaces/qt6/cbindings
|
|
|
|
workflow: # these rules enable pipeline for merge requests and try to avoid duplicate pipelines
|
|
rules:
|
|
# - when: never # uncomment this line to disable pipeline (useful for service needs)
|
|
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
|
|
when: never
|
|
- if: $CI_COMMIT_BRANCH
|
|
|
|
default:
|
|
image: $IMAGE_TAG
|
|
|
|
stages: # List of stages for jobs, and their order of execution
|
|
- prepenv
|
|
- clearcaches
|
|
- prepcaches
|
|
- build
|
|
|
|
.runscheduled: # this hidden job defines a rule, which, if referenced by job, enables it to always run in scheduled pipeline
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == "schedule"
|
|
|
|
.manualjob: # this hidden job defines a rule, which, if referenced by job, allows it to be skipped without errors
|
|
rules:
|
|
- when: manual
|
|
allow_failure: true
|
|
|
|
.onsuccessjob: # this hidden job defines a rule, which, if referenced by job, configures it to be run when previous ones completed successfully
|
|
rules:
|
|
- when: on_success
|
|
|
|
update-build-env: # This job updates building environment image. Run it if FPC version constants and/or buildenv.Dockerfile were changed.
|
|
stage: prepenv
|
|
image: docker
|
|
services:
|
|
- docker:dind
|
|
script:
|
|
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
|
|
- docker build --pull
|
|
--build-arg FPC_OLDSTABLE_VER=$FPC_OLDSTABLE_VER
|
|
--build-arg FPC_STABLE_VER=$FPC_STABLE_VER
|
|
--build-arg FPC_FIXES_VER=$FPC_FIXES_VER
|
|
--build-arg FPC_MAIN_VER=$FPC_MAIN_VER
|
|
-t $IMAGE_TAG - < buildenv.Dockerfile
|
|
- docker push $IMAGE_TAG
|
|
rules:
|
|
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
when: manual
|
|
allow_failure: true
|
|
- when: never
|
|
|
|
clear-qt5pas-bindings: # clear Qt5 Pascal bindings cache if changes are detected, as in this case full rebuild is needed
|
|
stage: clearcaches
|
|
script:
|
|
- echo "Clearing Qt5Pas bindings cache."
|
|
cache:
|
|
key: qt5pas-cache-$CI_COMMIT_REF_SLUG
|
|
policy: push
|
|
untracked: true
|
|
rules:
|
|
- changes:
|
|
- $QT5PAS_SRC/**/*
|
|
|
|
clear-qt6pas-bindings: # clear Qt6 Pascal bindings cache if changes are detected, as in this case full rebuild is needed
|
|
stage: clearcaches
|
|
script:
|
|
- echo "Clearing Qt6Pas bindings cache."
|
|
cache:
|
|
key: qt6pas-cache-$CI_COMMIT_REF_SLUG
|
|
policy: push
|
|
untracked: true
|
|
rules:
|
|
- changes:
|
|
- $QT6PAS_SRC/**/*
|
|
|
|
update-qt5pas-bindings: # build and cache Qt5 Pascal bindings
|
|
stage: prepcaches
|
|
script:
|
|
- cd $QT5PAS_SRC
|
|
- qmake -query
|
|
- qmake
|
|
- make
|
|
cache:
|
|
key: qt5pas-cache-$CI_COMMIT_REF_SLUG
|
|
paths:
|
|
- $QT5PAS_SRC/
|
|
|
|
update-qt6pas-bindings: # build and cache Qt6 Pascal bindings
|
|
stage: prepcaches
|
|
script:
|
|
- cd $QT6PAS_SRC
|
|
- qmake6 -query
|
|
- qmake6
|
|
- make
|
|
cache:
|
|
key: qt6pas-cache-$CI_COMMIT_REF_SLUG
|
|
paths:
|
|
- $QT6PAS_SRC/
|
|
|
|
.useqt5cache: # this hidden job defines cache configuration used by Qt5 IDE building jobs
|
|
script:
|
|
- cd $QT5PAS_SRC # install Qt5 Pascal bindings
|
|
- make install
|
|
- cd $CI_PROJECT_DIR
|
|
cache:
|
|
key: qt5pas-cache-$CI_COMMIT_REF_SLUG
|
|
policy: pull
|
|
paths:
|
|
- $QT5PAS_SRC/
|
|
|
|
.useqt6cache: # this hidden job defines cache configuration used by Qt6 IDE building jobs
|
|
script:
|
|
- cd $QT6PAS_SRC # install Qt6 Pascal bindings
|
|
- make install
|
|
- cd $CI_PROJECT_DIR
|
|
cache:
|
|
key: qt6pas-cache-$CI_COMMIT_REF_SLUG
|
|
policy: pull
|
|
paths:
|
|
- $QT6PAS_SRC/
|
|
|
|
x86_64-gtk2-oldstable:
|
|
stage: build
|
|
script:
|
|
- make bigide FPC=/usr/lib/fpc/$FPC_OLDSTABLE_VER/ppcx64 CPU_TARGET=x86_64 LCL_PLATFORM=gtk2
|
|
rules:
|
|
- !reference [.runscheduled, rules]
|
|
- !reference [.manualjob, rules]
|
|
|
|
x86_64-gtk2-stable:
|
|
stage: build
|
|
script:
|
|
- make bigide FPC=/usr/lib/fpc/$FPC_STABLE_VER/ppcx64 CPU_TARGET=x86_64 LCL_PLATFORM=gtk2
|
|
rules:
|
|
- !reference [.runscheduled, rules]
|
|
- !reference [.onsuccessjob, rules]
|
|
|
|
x86_64-gtk2-fixes:
|
|
stage: build
|
|
script:
|
|
- make bigide FPC=/usr/lib/fpc/$FPC_FIXES_VER/ppcx64 CPU_TARGET=x86_64 LCL_PLATFORM=gtk2
|
|
rules:
|
|
- !reference [.runscheduled, rules]
|
|
- !reference [.manualjob, rules]
|
|
|
|
x86_64-gtk2-main:
|
|
stage: build
|
|
script:
|
|
- make bigide FPC=/usr/lib/fpc/$FPC_MAIN_VER/ppcx64 CPU_TARGET=x86_64 LCL_PLATFORM=gtk2
|
|
rules:
|
|
- !reference [.runscheduled, rules]
|
|
- !reference [.manualjob, rules]
|
|
|
|
x86_64-gtk3-oldstable:
|
|
stage: build
|
|
script:
|
|
- make bigide FPC=/usr/lib/fpc/$FPC_OLDSTABLE_VER/ppcx64 CPU_TARGET=x86_64 LCL_PLATFORM=gtk3
|
|
rules:
|
|
- !reference [.runscheduled, rules]
|
|
- !reference [.manualjob, rules]
|
|
|
|
x86_64-gtk3-stable:
|
|
stage: build
|
|
script:
|
|
- make bigide FPC=/usr/lib/fpc/$FPC_STABLE_VER/ppcx64 CPU_TARGET=x86_64 LCL_PLATFORM=gtk3
|
|
rules:
|
|
- !reference [.runscheduled, rules]
|
|
- !reference [.onsuccessjob, rules]
|
|
|
|
x86_64-qt5-oldstable:
|
|
extends: .useqt5cache
|
|
stage: build
|
|
script:
|
|
- !reference [.useqt5cache, script]
|
|
- make bigide FPC=/usr/lib/fpc/$FPC_OLDSTABLE_VER/ppcx64 CPU_TARGET=x86_64 LCL_PLATFORM=qt5
|
|
rules:
|
|
- !reference [.runscheduled, rules]
|
|
- !reference [.onsuccessjob, rules]
|
|
|
|
x86_64-qt5-stable:
|
|
extends: .useqt5cache
|
|
stage: build
|
|
script:
|
|
- !reference [.useqt5cache, script]
|
|
- make bigide FPC=/usr/lib/fpc/$FPC_STABLE_VER/ppcx64 CPU_TARGET=x86_64 LCL_PLATFORM=qt5
|
|
rules:
|
|
- !reference [.runscheduled, rules]
|
|
- !reference [.manualjob, rules]
|
|
|
|
x86_64-qt6-oldstable:
|
|
extends: .useqt6cache
|
|
stage: build
|
|
script:
|
|
- !reference [.useqt6cache, script]
|
|
- make bigide FPC=/usr/lib/fpc/$FPC_OLDSTABLE_VER/ppcx64 CPU_TARGET=x86_64 LCL_PLATFORM=qt6
|
|
rules:
|
|
- !reference [.runscheduled, rules]
|
|
- !reference [.manualjob, rules]
|
|
|
|
x86_64-qt6-stable:
|
|
extends: .useqt6cache
|
|
stage: build
|
|
script:
|
|
- !reference [.useqt6cache, script]
|
|
- make bigide FPC=/usr/lib/fpc/$FPC_STABLE_VER/ppcx64 CPU_TARGET=x86_64 LCL_PLATFORM=qt6
|
|
rules:
|
|
- !reference [.runscheduled, rules]
|
|
- !reference [.onsuccessjob, rules]
|
|
|
|
i386-win32-oldstable:
|
|
stage: build
|
|
script:
|
|
- make lazbuild FPC=/usr/lib/fpc/$FPC_OLDSTABLE_VER/ppcx64
|
|
- make bigide FPC=/usr/lib/fpc/$FPC_OLDSTABLE_VER/ppcross386 OS_TARGET=win32 CPU_TARGET=i386 LCL_PLATFORM=win32
|
|
rules:
|
|
- !reference [.runscheduled, rules]
|
|
- !reference [.manualjob, rules]
|
|
|
|
i386-win32-stable:
|
|
stage: build
|
|
script:
|
|
- make lazbuild FPC=/usr/lib/fpc/$FPC_STABLE_VER/ppcx64
|
|
- make bigide FPC=/usr/lib/fpc/$FPC_STABLE_VER/ppcross386 OS_TARGET=win32 CPU_TARGET=i386 LCL_PLATFORM=win32
|
|
rules:
|
|
- !reference [.runscheduled, rules]
|
|
- !reference [.onsuccessjob, rules]
|
|
|
|
i386-win32-fixes:
|
|
stage: build
|
|
script:
|
|
- make lazbuild FPC=/usr/lib/fpc/$FPC_FIXES_VER/ppcx64
|
|
- make bigide FPC=/usr/lib/fpc/$FPC_FIXES_VER/ppcross386 OS_TARGET=win32 CPU_TARGET=i386 LCL_PLATFORM=win32
|
|
rules:
|
|
- !reference [.runscheduled, rules]
|
|
- !reference [.manualjob, rules]
|
|
|
|
i386-win32-main:
|
|
stage: build
|
|
script:
|
|
- make lazbuild FPC=/usr/lib/fpc/$FPC_MAIN_VER/ppcx64
|
|
- make bigide FPC=/usr/lib/fpc/$FPC_MAIN_VER/ppcross386 OS_TARGET=win32 CPU_TARGET=i386 LCL_PLATFORM=win32
|
|
rules:
|
|
- !reference [.runscheduled, rules]
|
|
- !reference [.manualjob, rules]
|
|
|
|
x86_64-win64-oldstable:
|
|
stage: build
|
|
script:
|
|
- make lazbuild FPC=/usr/lib/fpc/$FPC_OLDSTABLE_VER/ppcx64
|
|
- make bigide FPC=/usr/lib/fpc/$FPC_OLDSTABLE_VER/ppcx64 OS_TARGET=win64 CPU_TARGET=x86_64 LCL_PLATFORM=win32
|
|
rules:
|
|
- !reference [.runscheduled, rules]
|
|
- !reference [.manualjob, rules]
|
|
|
|
x86_64-win64-stable:
|
|
stage: build
|
|
script:
|
|
- make lazbuild FPC=/usr/lib/fpc/$FPC_STABLE_VER/ppcx64
|
|
- make bigide FPC=/usr/lib/fpc/$FPC_STABLE_VER/ppcx64 OS_TARGET=win64 CPU_TARGET=x86_64 LCL_PLATFORM=win32
|
|
rules:
|
|
- !reference [.runscheduled, rules]
|
|
- !reference [.manualjob, rules]
|
|
|
|
|
|
.docs-build:
|
|
stage: build
|
|
script:
|
|
- make lazbuild FPC=/usr/lib/fpc/$FPC_STABLE_VER/ppcx64
|
|
- cd docs/html
|
|
- unzip -j /doc-chm.zip -d ../chm
|
|
- $CI_PROJECT_DIR/lazbuild --compiler=/usr/lib/fpc/$FPC_STABLE_VER/ppcx64 --lazarusdir=$CI_PROJECT_DIR build_lcl_docs.lpi
|
|
- ./build_lcl_docs --fpdoc /usr/bin/fpdoc-$FPDOC_VER --fpcdocs=../chm --outfmt chm --footer $FOOTER
|
|
- ./build_lcl_docs --fpdoc /usr/bin/fpdoc-$FPDOC_VER --fpcdocs=../chm --outfmt html --footer $FOOTER
|
|
artifacts:
|
|
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
|
|
paths:
|
|
- docs/chm/
|
|
- docs/html/lcl/lcl/
|
|
- docs/html/lazutils/lazutils/
|
|
expire_in: 1 week
|
|
|
|
docs-fpdoc-main:
|
|
extends: .docs-build
|
|
variables:
|
|
FPDOC_VER: $FPC_MAIN_VER
|
|
FOOTER: "@locallclfooter.xml"
|
|
rules:
|
|
- !reference [.manualjob, rules]
|
|
|
|
docs-fpdoc-fixes:
|
|
extends: .docs-build
|
|
variables:
|
|
FPDOC_VER: $FPC_FIXES_VER
|
|
FOOTER: "@locallclfooter.xml"
|
|
rules:
|
|
- !reference [.manualjob, rules]
|
|
|
|
docs-fpdoc-stable:
|
|
extends: .docs-build
|
|
variables:
|
|
FPDOC_VER: $FPC_STABLE_VER
|
|
FOOTER: "locallclfooter.xml"
|
|
rules:
|
|
- !reference [.manualjob, rules]
|
|
|
|
tests-codetools: # run Codetools tests and output results in JUnit format (for this FPC 3.3.1 and up is needed)
|
|
stage: build
|
|
variables:
|
|
OUTPUT_FILE: testresults_codetools.xml
|
|
script:
|
|
- make lazbuild FPC=/usr/lib/fpc/$FPC_MAIN_VER/ppcx64
|
|
- cd components/codetools/tests
|
|
- $CI_PROJECT_DIR/lazbuild --compiler=/usr/lib/fpc/$FPC_MAIN_VER/ppcx64 --lazarusdir=$CI_PROJECT_DIR runtestscodetools.lpi
|
|
- FPCDIR=/fpcsrc/$FPC_MAIN_VER ./runtestscodetools --all --format=junit --file=$CI_PROJECT_DIR/$OUTPUT_FILE
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- $OUTPUT_FILE
|
|
reports:
|
|
junit: $OUTPUT_FILE
|
|
rules:
|
|
- !reference [.runscheduled, rules]
|
|
- !reference [.onsuccessjob, rules]
|
|
|
|
tests-fpdebug: # run FPDebug tests and output results in JUnit format (for this FPC 3.3.1 and up is needed)
|
|
stage: build
|
|
variables:
|
|
OUTPUT_FILE: testresults_fpdebug.xml
|
|
script:
|
|
- make lazbuild FPC=/usr/lib/fpc/$FPC_MAIN_VER/ppcx64
|
|
- cd components/fpdebug/test
|
|
- $CI_PROJECT_DIR/lazbuild --compiler=/usr/lib/fpc/$FPC_MAIN_VER/ppcx64 --lazarusdir=$CI_PROJECT_DIR FpTest.lpi
|
|
- ./fptest --all --format=junit --file=$CI_PROJECT_DIR/$OUTPUT_FILE
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- $OUTPUT_FILE
|
|
reports:
|
|
junit: $OUTPUT_FILE
|
|
rules:
|
|
- !reference [.runscheduled, rules]
|
|
- !reference [.onsuccessjob, rules]
|
|
|
|
tests-lcl: # run LCL tests and output results in JUnit format (for this FPC 3.3.1 and up is needed)
|
|
stage: build
|
|
variables:
|
|
OUTPUT_FILE: testresults_lcl.xml
|
|
script:
|
|
- make lazbuild FPC=/usr/lib/fpc/$FPC_MAIN_VER/ppcx64
|
|
- cd lcl/testcase
|
|
- $CI_PROJECT_DIR/lazbuild --compiler=/usr/lib/fpc/$FPC_MAIN_VER/ppcx64 --lazarusdir=$CI_PROJECT_DIR test_lcl.lpi
|
|
- ./test_lcl --all --format=junit --file=$CI_PROJECT_DIR/$OUTPUT_FILE
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- $OUTPUT_FILE
|
|
reports:
|
|
junit: $OUTPUT_FILE
|
|
rules:
|
|
- !reference [.runscheduled, rules]
|
|
- !reference [.onsuccessjob, rules]
|