33# Starts with a vanilla Opal docker composition, installs dsBase
44# and dsBaseClient (as well as dependencies - including a fully functional
55# Opal server).
6- # Does checks and tests then saves results to testStatus repo.
76#
87# Inside the root directory $(Pipeline.Workspace) will be a file tree like:
98# /dsBaseClient <- Checked out version of datashield/dsBaseClient
10- # /testStatus <- Checked out version of datashield/testStatus
119# /logs <- Where results of tests and lots are collated
1210#
1311# As of May 2020 this takes ~ 70 mins to run.
@@ -36,18 +34,6 @@ variables:
3634 _r_check_system_clock_ : 0
3735
3836
39- # ########################################################################################
40- # Need to define all the GH repos and their access tokens, see:
41- # https://docs.microsoft.com/en-us/azure/devops/pipelines/library/service-endpoints?view=azure-devops&tabs=yaml
42- resources :
43- repositories :
44- - repository : testStatusRepo
45- type : github
46- endpoint : datashield-testing
47- name : datashield/testStatus
48- ref : master
49-
50-
5137# ########################################################################################
5238# When and under what condition to run the pipeline.
5339schedules :
@@ -58,10 +44,10 @@ schedules:
5844 - master
5945 always : true
6046 - cron : " 0 2 * * *"
61- displayName : Nightly build - v6.3.4 -dev
47+ displayName : Nightly build - v6.3.5 -dev
6248 branches :
6349 include :
64- - v6.3.4 -dev
50+ - v6.3.5 -dev
6551 always : true
6652
6753# ########################################################################################
8268 - checkout : self
8369 path : ' dsBaseClient'
8470
85- - checkout : testStatusRepo
86- path : ' testStatus'
87- persistCredentials : true
88- condition : and(eq(variables['Build.Repository.Name'], 'datashield/dsBaseClient'), ne(variables['Build.Reason'], 'PullRequest'))
89-
9071
9172 # ####################################################################################
9273 # The MySQL install that comes with the VM doesn't seem compatable with our set up
@@ -235,7 +216,7 @@ jobs:
235216 - bash : |
236217 R -q -e "library(opalr); opal <- opal.login(username = 'administrator', password = 'datashield_test&', url = 'https://localhost:8443', opts = list(ssl_verifyhost=0, ssl_verifypeer=0)); opal.put(opal, 'system', 'conf', 'general', '_rPackage'); opal.logout(o)"
237218
238- R -q -e "library(opalr); opal <- opal.login('administrator','datashield_test&', url='https://localhost:8443/', opts = list(ssl_verifyhost=0, ssl_verifypeer=0)); dsadmin.install_github_package(opal, 'dsBase', username = 'datashield', ref = 'v6.3.4 -dev'); opal.logout(opal)"
219+ R -q -e "library(opalr); opal <- opal.login('administrator','datashield_test&', url='https://localhost:8443/', opts = list(ssl_verifyhost=0, ssl_verifypeer=0)); dsadmin.install_github_package(opal, 'dsBase', username = 'datashield', ref = 'v6.3.5 -dev'); opal.logout(opal)"
239220
240221 sleep 60
241222
@@ -524,75 +505,6 @@ jobs:
524505 displayName: 'Down Opal Docker Composition'
525506 condition: succeeded()
526507
527- #####################################################################################
528- # Windup phase
529- #####################################################################################
530-
531- #####################################################################################
532- # Output some important version numbers to file. This gets added to the testStatus
533- # commit so it can be parsed and used on the status table.
534- - bash : |
535-
536- echo 'branch:'$(branchName) >> $(datetime).txt
537- echo 'os:'$(lsb_release -ds) >> $(datetime).txt
538- echo 'R:'$(R --version | head -n 1) >> $(datetime).txt
539- echo 'opal:'$(opal system --opal localhost:8443 --user administrator --password "datashield_test&" --version) >> $(datetime).txt
540-
541- workingDirectory: $(Pipeline.Workspace)/logs
542- displayName: 'Write versions to file'
543- condition: succeededOrFailed()
544-
545-
546- #####################################################################################
547- # Checkout the testStatus repo, add the results from here, push back to GH.
548- # TODO: Automatically pull in better email/name info from somewhere.
549- # TODO: More debug info in commit message
550- - bash : |
551-
552- # Git needs some config set to be able to push to a repo.
553- git config --global user.email "you@example.com"
554- git config --global user.name "Azure pipeline"
555-
556- # This repo is checked out in detatched head state, so reconnect it here.
557- git checkout master
558-
559- # It is possible that other commits have been made to the testStatus repo since it
560- # was checked out. i.e. other pipeline runs might have finished.
561- git pull
562-
563- # Make the directories if they dont already exist
564- mkdir --parents logs/$(projectName)/$(branchName)
565- mkdir --parents docs/$(projectName)/$(branchName)/latest
566-
567- cp $(Pipeline.Workspace)/logs/coveragelist.csv logs/$(projectName)/$(branchName)/
568- cp $(Pipeline.Workspace)/logs/coveragelist.csv logs/$(projectName)/$(branchName)/$(datetime).csv
569-
570- cp $(Pipeline.Workspace)/logs/test_results.xml logs/$(projectName)/$(branchName)/
571- cp $(Pipeline.Workspace)/logs/test_results.xml logs/$(projectName)/$(branchName)/$(datetime).xml
572-
573- cp $(Pipeline.Workspace)/logs/$(datetime).txt logs/$(projectName)/$(branchName)/
574-
575- # Run the script to parse the results and build the html pages.
576- # status.py JUnit_file.xml coverage_file.csv output_file.html local_repo_path remote_repo_name branch
577- source/status.py logs/$(projectName)/$(branchName)/$(datetime).xml logs/$(projectName)/$(branchName)/$(datetime).csv logs/$(projectName)/$(branchName)/$(datetime).txt status.html $(Pipeline.Workspace)/$(projectName) $(projectName) $(branchName)
578-
579- cp status.html docs/$(projectName)/$(branchName)/latest/index.html
580- git add logs/$(projectName)/$(branchName)/coveragelist.csv
581- git add logs/$(projectName)/$(branchName)/test_results.xml
582- git add logs/$(projectName)/$(branchName)/$(datetime).xml
583- git add logs/$(projectName)/$(branchName)/$(datetime).csv
584- git add logs/$(projectName)/$(branchName)/$(datetime).txt
585- git add docs/$(projectName)/$(branchName)/latest/index.html
586-
587- git commit -m "Azure auto test for $(projectName)/$(branchName) @ $(datetime)" -m "Debug info:\nProjectName:$(projectName)\nBranchName:$(branchName)\nDataTime:$(datetime)"
588- git push
589- exit 0
590-
591- workingDirectory: $(Pipeline.Workspace)/testStatus
592- displayName: 'Parse test results'
593- condition: and(eq(variables['Build.Repository.Name'], 'datashield/dsBaseClient'), ne(variables['Build.Reason'], 'PullRequest'))
594-
595-
596508 #####################################################################################
597509 # Output the environment information to the console. This is useful for debugging.
598510 # Always do this, even if some of the above has failed or the job has been cacelled.
0 commit comments