diff --git a/Jenkinsfile b/Jenkinsfile index 669e718..6a77053 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -6,9 +6,18 @@ agent{label 'libraryBuild'} - //here comes the trigger according to crontabs + //here comes the trigger according to crontabs - jenkins is in UTC triggers { + //every 1st of every month at 00:00 cron('0 0 1 * *') + + //every day at 08:00 + //cron('0 8 * * *') + + //every monday at 08:00 + //cron('0 8 * * MON') + + } environment { //ProxySettings @@ -32,10 +41,10 @@ } stages { - stage('install required packages') { + stage('install required python packages') { steps { sh ''' - pip install -upgrade pip + pip install --upgrade pip pip install -r requirements.txt ''' } diff --git a/README.md b/README.md index 9913bed..8d860da 100644 --- a/README.md +++ b/README.md @@ -1 +1,131 @@ -init repo +# Dynatrace Reporting Pipeline + +This repository is used as a template to create automated Dynatrace reports through Jenkins (JAWS) which are sent as attachement through mail. +*** +## Jenkins environments +EMEA & NA: https://jaws.bmwgroup.net/opapm/ + +CN: https://jaws-china.bmwgroup.net/opmaas/ + +### Request access +Access is granted manually through stephan.oertelt@bmw.de and Mohammed.Abadel@bmw.de + +### Multi-Branch Pipelines +- master (=latest) --> for testing and developing stuff +- staging --> pre-release branch, if stuff tested successfully here merge it to production +- production --> actively used, productive reports + +*** +## Minimum Content of a Dynatrace Reporting Repo + +### Repository & Pipeline Naming +- Repository and Pipelines must have identical names +- Naming must start with CoCo_APM_Reporting_**report name here** + +### readme-File + +The readme file must contain a useful description **what** is reported **when** to **whom** + +Example:
+> This report is reporting all installed OneAgent versions including: +> - Hostnames +> - Environment Tag +> - PaaS Tag +> +> Sent to: coco-apm@bmw.de +> +> Executed on each Monday of every week
+> Executed on every Dynatrace environment + +### requirements.txt +The requirements.txt file must contain **all** python packages which are used within the script through ```import```
+ +e.g.:
+``` python-decouple +pyyaml +pandas +decouple +requests +datetime +argparse +``` +### environments.yaml +The environments.yaml contains all environments on which the script should be executed, environments which should not be executed may be excluded through ```#``` + +**Do NOT change the environments names, the pipeline script is configured to distingue between EMEA/NA and CN as their are different Jenkins environments!** + +The following snipped shows an environment file, which is only executed on Dynatrace prod environments. + +``` +euprod: + - name: "euprod" + - env-url: "https://xxu26128.live.dynatrace.com" + - env-token-name: "EUPROD_TOKEN_VAR" +#eupreprod: + - name: "eupreprod" + - env-url: "https://qqk70169.live.dynatrace.com" + - env-token-name: "EUPREPROD_TOKEN_VAR" +#napreprod: + - name: "napreprod" + - env-url: "https://onb44935.live.dynatrace.com" + - env-token-name: "NAPREPROD_TOKEN_VAR" +naprod: + - name: "naprod" + - env-url: "https://wgv50241.live.dynatrace.com" + - env-token-name: "NAPROD_TOKEN_VAR" +cnprod: + - name: "cnprod" + - env-url: "https://dynatracemgd-cn.bmwgroup.net/e/b921f1b9-c00e-4031-b9d1-f5a0d530757b" + - env-token-name: "CNPROD_TOKEN_VAR" +#cnpreprod: + - name: "cnpreprod" + - env-url: "https://dynatracemgd-cn.bmwgroup.net/e/b921f1b9-c00e-4031-b9d1-f5a0d530757b" + - env-token-name: "CNPREPROD_TOKEN_VAR" +``` + +### Jenkinsfile +The Jenkinsfile is the pipeline script itself including: +- Time-Trigger +- Install package step +- Execute script step +- Send Mail step + +### Python Script +The script itself will gather and aggregate the data from the Dynatrace environments. + +Script output must be a csv or excel file in the **folder where the script is executed** +*** +## First Usage - Create a new Pipeline + +### Fork this repo +Do **NOT** clone this repo, create a fork instead. + +1. On the left menue bar click on *Create fork* + +![Bitbucket Fork Step 1](/assets/bitbucket_fork_1.PNG) + +2. Choose Project *Offboard Platform - APM - Application Performance Monitoring* +3. Choose a name starting with *CoCo_APM_Reporting_* and a useful suffix +4. Uncheck *Enable fork syncing* + +![Bitbucket Fork Step 2](/assets/bitbucket_fork_2.PNG) + +5. Edit readme.md and describe your report +6. Change/Update the environment, requirements and script according to your needs +7. Login to Jenkins and select the folder *Coco APM Reporting* +8. Click the *New Item* Button +9. Enter the name of your repo (e.g. *CoCo_APM_Reporting_OneAgentVersion*) +10. Select *Multibranch Pipeline* +11. Click *OK* Button + +![Jenkins Create Pipieline Step 1](/assets/jenkins_create_pipeline_1.PNG) + +12. On The Pipeline Settings go to *Branch Sources*, click *ADD SOURCE* and select *Bitbucket* +- Server: **ATC** +- Credentials: **qqjaws7** +- Owner: **OPAPM** +- Repository Name: **your forked repository** +- Behavious: **According to screenshot** +![Jenkins Create Pipieline Step 2](/assets/jenkins_create_pipeline_2.PNG) + +Your pipelin will automatically test-run for all 3 branches. \ No newline at end of file