Repository for housing continuous integration related scripts and files for SDL Core.
https://opensdl-jenkins.prjdmz.luxoft.com/
Currently, we are using Jenkins server for the Continuous Integration process of our project. It is mainly used for the following functionality:
- building SDL_CORE / SDL_ATF
- running ATF test scripts to check implemented functionality
- checking coding style and cppcheck
Here is a matrix of build jobs:
Job's name mask | Description |
---|---|
_P / _E / _H | build on Proprietary / External Proprietary / HTTP flows |
BWSS_OFF | builds with disabled option: -DBUILD_WEBSOCKET_SERVER_SUPPORT=OFF |
_noUT / _UT | build without UnitTests / with UnitTest |
_EL_OFF | build with disabled logging: -DENABLE_LOG=OFF |
_ES_OFF | build with disabled security: -DENABLE_SECURITY=OFF |
_UC_OFF | build with UnitTests with disabled cotire option: -DUSE_COTIRE=OFF |
_BCAF | builds with disabled option: -DBUILD_CLOUD_APP_SUPPORT=OFF |
_ATF_BUILD | a job which builds ATF for reuse in all the ATF test jobs |
_TCP | ATF scripts jobs with TCP transport type |
_WS | ATF scripts jobs with WebSocket transport type |
_WSS | ATF scripts jobs with WebSocketSecured transport type |
_OFF | jobs view that are running on sdl_core built in *_BWSS_OFF jobs previously described |
Main view builds shows ATF build, UnitTests coverage, and a lot of sdl_core build jobs with different flags.
There are several regression views that run all our ATF tests from develop on each Policy flow (Proprietary, External Proprietary, HTTP) and transport type (TCP, WebSocket, WebSocketSecured), on TCP using Remote ATF, and a view with ATF test jobs which use sdl_core built without WebSocket support.
SDL continuously checks code:
- check style
- static code analysis
- build and unit tests
- smoke automated tests
- regression automated tests
Job artifacts contain build results, ATF reports, SDL logs, etc ...
CI strategy described in details in proposal
Only TCP transport is checked on 3 policy flows.
Develop push and nightly builds are available in the develop push and nightly status view :
- Code style check : Use check_style.sh to check sdl_core code for compliance to Google coding style.
- Develop builds without unit tests in 3 policy flows:
- Develop builds and unit unit tests run:
- Develop_=RUN_PUSH_AND_NIGHTLY= job is trigger for listed develop build jobs
Develop branch push and nightly automated scripts checks available in the develop push and nightly status view :
Automated scripts checks triggered by no unit tests SDL build jobs. Each job contains a description of ATF test sets that it includes.
Contains basic checks from smoke_tests.txt
A test set executed for SDL build in 3 policy flows:
Check full regression specific for each policy flow.
A test set executed for SDL build in 3 policy flows:
Check full regression specific for remote control on each policy flow.
A test set executed for SDL build in 3 policy flows:
Contains all ATF scripts for all featured available in the development. For parallel execution, checks are split to multiple jobs with make name template Develop_TCP_ATF_VF{X}_{P,H,E}. X is the number.
Full list of regression ATF jobs available on : https://opensdl-jenkins.prjdmz.luxoft.com/view/ATF_Regression_on_TCP/
Pull request jobs are available in view: https://opensdl-jenkins.prjdmz.luxoft.com/view/PR_checks/
PR checks :
- code style
- build with unit tests
- smoke_tests.txt trigger by build with unit tests.
CI triggers PR checks for any PR if CI
label is assigned to this PR.
For the first build Rebuild required
comment needs to be placed into PR.
However further builds will be triggered automatically by any push into source branch.
List of develop jobs executed weekly
Unit tests coverage check weekly in the job:
On Saturday, SDL CI performs a full regression check on these following transports: TCP, WebSockets, SecureWebSockets, and all 3 policy flow. Weekly builds are available on the view https://opensdl-jenkins.prjdmz.luxoft.com/view/Develop_weekly/
Each SDL build without unit tests triggers full ATF regression. List of triggered jobs available in each build job as Downstream projects, example: https://opensdl-jenkins.prjdmz.luxoft.com/view/all/job/Develop_SDL_NoUT_E_BWSS_OFF/
Full weekly status is available on https://opensdl-jenkins.prjdmz.luxoft.com/view/Develop_weekly_status/
For each feature before merging to develop should be created a list of jobs similar to develop to check that feature will not introduce a regression. There is a special job on CI Feature job create that will create a list of jobs and a separate view for the feature. When feature is delivered and no checks for it is needed appropriate jobs on CI can be deleted with Feature job delete In case feature check should be canceled immediately there is Feature job cancel that allows to stop all running jobs (e.g. builds, ATF test runs) relative to feature.
Required input values for feature job:
- Feature name (will be used for view title)
- sdl_core feature branch and repository (master by default)
- sdl_atf feature branch and repository (master by default)
- sdl_atf_test_scripts feature branch and repository. (master by default)
- Feature test set (optional)
- Additional info : evolution proposal, links to issues, etc ...
After job execution will be created a view with the following checks:
- SDL build with unit tests on 3 policy flows (triggers: push, nightly)
- SDL build without unit tests on 3 policy flows (triggers: push, nightly)
- Smoke tests on 3 policy flows (triggers: build jobs without unit tests)
- Feature tests on 3 policy flows (triggers: build jobs without unit tests)
- Regression tests on 3 policy flows (triggers: build jobs without unit tests)
In case of special request (not ordinary builds for special feature, restart certain jobs, etc, ...) please contact: