Bingo for meetings- azure integrations–part 10

Bingo

Bingo is a small project, written in TypeScript , and developed with Alexandru Badita in launch break (one hour - more or less). You can find sources at https://github.com/alexandru360/PresentationBingoCards/ . Those are my blog posts for Bingo : ( scroll below for the post)
NrLink
1Create meeting
2Create Tests
3Finalize Create meeting
4Sharing meeting
5Keep Score
6Add obsolete
7Finalizing obsolete
8End meeting
9Dockerize tests
10Azure CI tests
11Yarn workspaces
12CLI
13Intermezzo - CLI improvements
14typescript compile run with node
15NestJS ,swagger and create a meeting
16Finalizing API
17Intermezzo - jest vs jasmine error
18Refactor WebAPI and test service
19Heroku Deploy NestJs
20Angular
21Deploy Angular to GitHub
22WebAPI and Web
23Documentation
24Documentation of the code
25Conclusions

Now it is about Continuous Integrations. We want tests to be run each time we push something to GitHub.  For this we could use Azure DevOps. It is free for GitHub public repositories . We want to configure an azure pipeline to automatically run tests  that we have in Docker.

So the pipeline will just have to explicit gather the test results ( tests + code coverage ) in order to display in the Azure Pipeline and in the project. Azure DevOps wants the test coverage in JaCoCo or Cobertura . Jest has Istanbul as default test coverage, and Istanbul has Cobertura report. So we modify the jest.config.js to support cobertura

module.exports = {

preset: ‘ts-jest’,

transform: {

‘^.+\\.tsx?$’: ‘ts-jest’,

},

testEnvironment: ‘node’,

collectCoverage: true,

coverageReporters : [“json”, “lcov”, “text”, “clover”,”cobertura”]

};

And to copy when docker building the tests to the local path

docker build ../Src -f docker_ci_test.txt -t bingo_ci_test

docker run -d –rm –name bingo_ci_test_container bingo_ci_test

docker cp bingo_ci_test_container:/app/jest-stare .

docker cp bingo_ci_test_container:/app/junit.xml .

docker cp bingo_ci_test_container:/app/coverage/cobertura-coverage.xml .   

docker container kill bingo_ci_test_container

And then copy to the AzureDevOps test system

#https://docs.microsoft.com/en-us/azure/devops/pipelines/build/options?view=vsts&tabs=yaml

variables:

year: $(Date:yyyy)

month: $(Date:MM)

day: $(Date:dd)

uk: $(Date:yyyyMMdd)

messagePush: $(Build.SourceVersionMessage)

name: $(TeamProject)_$(BuildDefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd)$(Rev:.r)

jobs:

– job: FullTestOnLinux

pool:

vmImage: ‘ubuntu-16.04’

steps:

– checkout: self #skip checking out the default repository resource

clean: true

– script: |

cd dockerize

ls -l

chmod 777 ./ci_test.bat

./ci_test.bat

docker image ls

docker container ls

cp -r -v ./jest-stare $(Build.ArtifactStagingDirectory)/jest-stare/

cp ./junit.xml $(Build.ArtifactStagingDirectory)/junit.xml

cp ./cobertura-coverage.xml $(Build.ArtifactStagingDirectory)/cobertura-coverage.xml

displayName: test DDD

– task: PublishBuildArtifacts@1

inputs:

artifactName: Tests

displayName: ‘Publish Artifact: drop’

– task: PublishTestResults@2

inputs:

testRunner: JUnit

testResultsFiles: ‘$(Build.ArtifactStagingDirectory)/junit.xml’

– task: PublishCodeCoverageResults@1

inputs:

codeCoverageTool: ‘cobertura’

summaryFileLocation: ‘$(Build.ArtifactStagingDirectory)/cobertura-coverage.xml’

You can see the tests and the test coverage at https://dev.azure.com/ignatandrei0674/BingoAzureDevOps/_build/results?buildId=953&view=ms.vss-test-web.build-test-results-tab