Presentation is loading. Please wait.

Presentation is loading. Please wait.

Jérémy Nguyen Xuan 27.02.2013 on behalf of BE/CO BE-ABP/PH-SFT/BE-CO workshop.

Similar presentations


Presentation on theme: "Jérémy Nguyen Xuan 27.02.2013 on behalf of BE/CO BE-ABP/PH-SFT/BE-CO workshop."— Presentation transcript:

1 Jérémy Nguyen Xuan on behalf of BE/CO BE-ABP/PH-SFT/BE-CO workshop

2  Introduction – Motivation and Goals  Maven NAR – Build system for C/C++  Bamboo – CI server, automatic builds  Deployment into Operations  Integration and System Testing 2

3  Minimize Operations downtime due to software defects  Provide High quality software  Well tested  Maintainable  Unified modern development process for CO  CO Java development environment already mature  Common software development process  Good set of tools 3

4 Planning Change management in JIRA Development Eclipse IDE Maven NAR and Makefiles to build SVN source repository Bamboo CI server Maven artifact repository Testing Unit tests and Code Coverage Testbed for System and Integration tests Release Maven NAR & Makefile Publish to repository Deployment From repository to operations 4

5  5 Development Teams (FESA, CMW, TIMING, Drivers, Diamon)  ~30 developers at CERN  +20 projects on SVN  Many clients  At CERN  Outside CERN (GSI)  Lines of Code  > 250’000  Supported platforms  LynxOS,SLC5, SLC6, Windows  Java  ~200 developers  ~1000 projects on SVN 5

6 6 DEP beecrypt IceUtil omniORB serializerutil rbacrda directory- client proxy cern-framework core-framework tgm tgv CMW FESA TIMING 6 tim omniThread curl (ppc4) boost (headers ppc4) libxml2 example-get 3rd Party DRIVER drvrutil UnitTestAllTypes_prj stomp log- stomp log

7  Introduction – Motivation and Goals  Maven NAR – Build system for C/C++  Bamboo – CI server, automatic builds  Deployment into Operations  Integration and System Testing 7

8  For Java, we already have  Guidelines / best practices  Recommended set of tools  Common build tool  C/C++ teams asked for the same recommendations 8

9  Working group with various teams from BE/CO  Agreed on common standards and tools  Directory structure and naming  Google test/mock, Valgrind, Doxygen  Common implementation of Makefiles  Common set of compilation flags  Manifest implementation  Tracing message (who, when, where)  On-going work  Quality assurance (Coverity)  Post-crash analysis (Google BreakPad) 9

10 10 Project NFS Project information PROJECT = fesaclass PRODUCT = FesaTestEnvironment LIB_NAME = FesaTestEnvironment VERSION = Dependencies information FESAFWK_VERSION = alpha1 FESAFWK_HOME = (INSTALL_LOCATION)/$(CPU)/fesa/fesa- fwk/$(FESAFWK_VERSION) DEPENDENT_COMPILER_OPTIONS += - I$(FESAFWK_HOME)/include DEPENDENT_LINKER_OPTIONS += -L$(FESAFWK_HOME)/lib - lfesa-core -lfesa-core-cern -lcmw-rda -lxml2 Compiler/Linker rules Google test/mock support Doxygen generation Valgrind integration Tag SVN Install on NFS Installation location SVN url Specific compilation flags cross-compilers definition Makefile Makefile.dep Make.fesaMake.generic Make.common

11 11  C/C++ build tool  Started ~1 year ago  Evaluating Maven as CmmnBuild successor  Opportunity to unify the build tools  Common software development process  Built a prototype with Maven NAR Reuse same philosophy as Java

12  Build tool  Build management, making it easy  Provide uniform build process  Encouraging best practices  Dependency manager  Versioning  Resolve and download artifacts  Deal with conflicts  Plugin based  Has numerous plugins  You can develop your own 12

13 Source Code Build Process Artifact 13

14 Source Code Artifact generate-sources process-sources process-resources compile test-compile test package integration-test verify install validate 14

15 cern.testbed testbed The TestBed focuses on testing Core Software Components. cern.japc japc-ext-cmwrda [2.0.0,3.0.0) cern.japc japc junit test 15

16 cern.testbed testbed The TestBed focuses on testing Core Software Components. cern.japc japc-ext-cmwrda [2.0.0,3.0.0) cern.japc japc junit test 16

17 cern.testbed testbed The TestBed focuses on testing Core Software Components. cern.japc japc-ext-cmwrda [2.0.0,3.0.0) cern.japc japc junit test 17

18 Local repository Nexus artifacts.cern.ch Maven Central repo.maven.org CERN Network 18 query download Internet

19  Maven NAR  Maven plugin  Compiles native code for various architectures and linkers  Made some extensions  The idea is to separate the build tasks between Makefiles and Maven  Compilation handled by Makefiles  Dependencies & Versioning by Maven 19

20 cern.cmw.cpp cmw-rbac nar cern.cmw.cpp cmw-serializer nar cern.cmw.cpp cmw-util nar 20 Pom.xml mvn nar:makedep

21 R = /nfs/cs-ccr-nfsdev/vol1/u1/jnguyenx/demo_phsft/cmw-rbac-cpp/target/nar/ DEPENDENT_COMPILER_OPTIONS += -I$(R)cmw-serializer noarch/include -I$(R)cmw-util noarch/include DEPENDENT_LINKER_OPTIONS += -L$(R)cmw-serializer i386-SLC5-gpp-static/lib/i386-SLC5-gpp/static -L$(R)cmw-util i386-SLC5-gpp-static/lib/i386-SLC5-gpp/static -lcmw-serializer -lcmw-util 21 Makefile.dep.L865

22 22 Source code Makefiles Resolve dependencies Maven NAR Binaries NAR package Maven NAR Dependencies Compilation phasePackaging phaseInstallation phase Dependency resolution phase Binary repository

23  Dependencies and Versioning are automatically managed  Developers keep their habits with Makefiles  Enforced standards  directory structure  directory names  file names  Unification  development/release/deployment process  Google test/mock  Compilation flags  Traceability  Manifest  versioning  Sharing projects for organizations outside CERN becomes easy 23

24  Introduction – Motivation and Goals  Maven NAR – Build system for C/C++  Bamboo – CI server, automatic builds  Deployment into Operations  Integration and System Testing 24

25  We use Atlassian tools: JIRA, Confluence, Crowd, Crucible, Clover and Bamboo  Good reports and notifications  Cascade builds  Several build agents are configured to build the code on different platforms 25

26 26 1.

27

28 28

29  Introduction – Motivation and Goals  Maven NAR – Build system for C/C++  Bamboo – CI server, automatic builds  Deployment into Operations  Integration and System Testing 29

30  Deploy a binary on a target machine  Deployment tool - inhouse  Common for all CO projects (Java & C/C++)  Instance descriptor in XML  Facilitates configuration & logging  Reproducibility  Backups and rollback  Installation notifications 30

31  Introduction – Motivation and Goals  Maven NAR – Build system for C/C++  Bamboo – CI server, automatic builds  Deployment into Operations  Integration and System Testing 31

32  Approach  To fulfill our goals, a mini-accelerator lab was built with the following aspects: ▪ Completely separated from the operational environment ▪ Validate products before going in operations 32 Note: Staging development DevelopmentTestingProduction Release Candidate Release

33 First step to build our TestBed: Set up an environment where to install BE/CO software. 3 layers to simulate:  Client side  Middletier services  Back-end 33

34 TIMING FEC03 FEC01 FEC02 FEC04FEC05 SERVER06 SERVER07 Niall TC may

35 Selected only essential components for Controls to:  Limit the complexity of the system  Give more flexibility to tweak components  Detect defects more efficiently 35

36

37 The products were manually deployed  Time consuming Automatic deployment into the TestBed  Speed up development cycle  Faster feedback to the developers 37

38  Use SVN Branches to identify release candidates  Automatically build a new release candidate and its dependees  Store the binaries in a separate repository from the release one  Somehow deploy these binaries into the TestBed 38

39 39 1. SVN Branch 2. Bamboo - CI server 3. Nexus – Binary repository 4. Deployment

40 40

41 In our TestBed, we exercise  Functional testing  System integration testing  Backward compatibility testing 41

42  Several years of experience in building Java SW  Developing common solution for Java and C/C++  Standardize as much as possible  Functional testing with the TestBed 42

43  Nexus stores several versions of a product  development  release candidates  final release  Maven uses GAV (groupId, artifactId, version) to identify an artifact  Features  Search  Full integration with Eclipse IDE  RSS feeds  Etc… 43

44 44

45 45

46 46

47 47

48 48


Download ppt "Jérémy Nguyen Xuan 27.02.2013 on behalf of BE/CO BE-ABP/PH-SFT/BE-CO workshop."

Similar presentations


Ads by Google