add docker+python CI
This commit is contained in:
		
							
								
								
									
										58
									
								
								.github/workflows/ci-python-with-docker.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								.github/workflows/ci-python-with-docker.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					name: Python + Docker CI
 | 
				
			||||||
 | 
					on:
 | 
				
			||||||
 | 
					  workflow_call:
 | 
				
			||||||
 | 
					    secrets:
 | 
				
			||||||
 | 
					      SONAR_TOKEN:
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					      SNYK_TOKEN:
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  ci:
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      - name: Check out repository code
 | 
				
			||||||
 | 
					        uses: actions/checkout@v4.1.4
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          fetch-depth: 0
 | 
				
			||||||
 | 
					      - uses: hadolint/hadolint-action@v3.1.0
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          dockerfile: Dockerfile
 | 
				
			||||||
 | 
					          output-file: hadolint.out
 | 
				
			||||||
 | 
					          format: sonarqube
 | 
				
			||||||
 | 
					          no-fail: true
 | 
				
			||||||
 | 
					      - name: Setup Python
 | 
				
			||||||
 | 
					        uses: actions/setup-python@v5
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          python-version: "3.11"
 | 
				
			||||||
 | 
					      - name: Update Pip
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          pip install -U pip
 | 
				
			||||||
 | 
					      - name: Install dependencies
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          pip install -r requirements.txt
 | 
				
			||||||
 | 
					          pip install -r requirements-dev.txt
 | 
				
			||||||
 | 
					          pip install pylint-exit
 | 
				
			||||||
 | 
					      - name: Lint
 | 
				
			||||||
 | 
					        run: pylint --recursive=yes --output-format=parseable --output=lintreport.txt . || pylint-exit $?
 | 
				
			||||||
 | 
					      - name: Unit Test
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          coverage run -m pytest -v --junitxml=testresults.xml
 | 
				
			||||||
 | 
					          coverage xml
 | 
				
			||||||
 | 
					          sed -i 's@${{ github.workspace }}@/github/workspace@g' coverage.xml
 | 
				
			||||||
 | 
					      - name: SonarCloud Scan
 | 
				
			||||||
 | 
					        uses: SonarSource/sonarcloud-github-action@master
 | 
				
			||||||
 | 
					        env:
 | 
				
			||||||
 | 
					          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
				
			||||||
 | 
					          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
 | 
				
			||||||
 | 
					      - name: Snyk Vulnerability Scan
 | 
				
			||||||
 | 
					        uses: snyk/actions/python-3.10@master
 | 
				
			||||||
 | 
					        continue-on-error: true # To make sure that SARIF upload gets called
 | 
				
			||||||
 | 
					        env:
 | 
				
			||||||
 | 
					          SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          args: --sarif-file-output=snyk.sarif
 | 
				
			||||||
 | 
					      - name: Upload result to GitHub Code Scanning
 | 
				
			||||||
 | 
					        uses: github/codeql-action/upload-sarif@v3
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          sarif_file: snyk.sarif
 | 
				
			||||||
		Reference in New Issue
	
	Block a user