|  |  | 
					
						
						|  | name: CI | 
					
						
						|  |  | 
					
						
						|  | on: | 
					
						
						|  | push: | 
					
						
						|  | branches: [ main ] | 
					
						
						|  | pull_request: | 
					
						
						|  | branches: [ main ] | 
					
						
						|  |  | 
					
						
						|  | jobs: | 
					
						
						|  | lint-and-test: | 
					
						
						|  | runs-on: ubuntu-latest | 
					
						
						|  | strategy: | 
					
						
						|  | matrix: | 
					
						
						|  | python-version: [3.9, 3.10, 3.11] | 
					
						
						|  | steps: | 
					
						
						|  | - uses: actions/checkout@v3 | 
					
						
						|  |  | 
					
						
						|  | - name: Set up Python | 
					
						
						|  | uses: actions/setup-python@v4 | 
					
						
						|  | with: | 
					
						
						|  | python-version: ${{ matrix.python-version }} | 
					
						
						|  |  | 
					
						
						|  | - name: Install dependencies | 
					
						
						|  | run: | | 
					
						
						|  | python -m pip install --upgrade pip | 
					
						
						|  | pip install -r requirements.txt | 
					
						
						|  | pip install flake8 pytest | 
					
						
						|  |  | 
					
						
						|  | - name: Lint with flake8 | 
					
						
						|  | run: | | 
					
						
						|  | flake8 . | 
					
						
						|  |  | 
					
						
						|  | - name: Run pytest | 
					
						
						|  | run: | | 
					
						
						|  | pytest --maxfail=1 --disable-warnings -q | 
					
						
						|  |  | 
					
						
						|  | build-and-deploy: | 
					
						
						|  | needs: lint-and-test | 
					
						
						|  | runs-on: ubuntu-latest | 
					
						
						|  | if: github.ref == 'refs/heads/main' && github.event_name == 'push' | 
					
						
						|  | steps: | 
					
						
						|  | - uses: actions/checkout@v3 | 
					
						
						|  |  | 
					
						
						|  | - name: Build Docker image | 
					
						
						|  | run: | | 
					
						
						|  | docker build -t anycoder:latest . | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  |