Software Engineering Best Practices (Git, Maven/Gradle, Jenkins) (SOFTGITMAVJEN)

Day 1
  1. What is a VCS? What is git?
  2. Installing git
  3. Design and characteristics
  4. Key concepts (snapshots, commits, repositories, branches)
  5. Git Workflow
  6. Git commands in action -> Create a repo -> Global git config -> Cloning -> History and changes over time -> Pulling changes -> Pushing changes -> Remote link -> Branching and branching models -> Merging branches -> Resetting changes -> Reverting changes -> Overwriting history -> Rebasing/ Squashing
  7. Git tips and tricks (good to know)
  8. Q&A
  9. Practical exercises involving github, CLI actions involving all the discussed concepts and typical usage of GIT from well-known IDE's(IntelliJ ,Eclipse)
Day 2
Maven/Gradle (Gradle is only used as a comparative)
  1. What is a build lifecycle? what is Maven?
  2. Installing and configuring Maven
  3. POM - fundamental unit of work
  4. What is a Build lifecycle ?What is a goal?
  5. MVN Build Profiles
  6. MVN Repositories and how dependencies work
  7. MVN plugins
  8. A hands on approach of a typical project with MVN -> Creating a new project -> Build and test project -> External dependencies management -> Create documentation for the project -> Reuse project structure by creating an Archetype (MVN Project Templates) -> Snapshotting example in action -> IDE usage
  9. Gradle VS MVN Comparison 10) Q&A
Jenkins (or even better Travis (newer, faster, free, github ready))
  1. What is CI/CD? What is Jenkins?
  2. Installing Jenkins
  3. Blending it all together. Setup git and MVN to be used by Jenkins
  4. Jenkins Configuration and Managements(or HOW TO setup a typical production ready Jenkins)
  5. A hands on approach of a new project) -> Setup a build job -> Unit testing and automated testing with Jenkins -> Configure custom notification of build jobs ran (email notification via SMTP) -> Automated Reporting -> Code Analysis ( static code analysis and code quality) -> Automatically deployments -> Metrics and Trends -> Setup a build pipeline
  6. Scale Jenkins jobs with a Distributed builds
  7. Jenkins Security and User Role Access Based example
  8. What have we accomplished [CI/CD]? What are the benefits?
  9. Q&A