diff --git a/.github/workflows/push-docker-image.yml b/.github/workflows/push-docker-image.yml index 1989674..3409226 100644 --- a/.github/workflows/push-docker-image.yml +++ b/.github/workflows/push-docker-image.yml @@ -8,6 +8,7 @@ env: # Use docker.io for Docker Hub if empty REGISTRY: ghcr.io IMAGE_NAME: 'python-fastapi' + IMAGE_OWNER: 'alexjelani' jobs: @@ -27,7 +28,7 @@ jobs: id: meta uses: docker/metadata-action@v5 with: - images: ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }} + images: ghcr.io/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }} # Login against a Docker registry - name: Log into registry ${{ env.REGISTRY }} @@ -42,17 +43,17 @@ jobs: # Build and tag Docker Image - name: Build Docker Image run: | - docker build -t ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ github.sha }} . + docker build -t ghcr.io/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:${{ github.sha }} . - name: Tag Docker Image run: | - docker tag ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ github.sha }} ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:latest - docker tag ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ github.sha }} ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:testing + docker tag ghcr.io/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:${{ github.sha }} ghcr.io/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:latest + docker tag ghcr.io/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:${{ github.sha }} ghcr.io/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:testing # Push the Docker image to the registry - name: Push Docker Image to GHCR run: | - docker push ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ github.sha }} - docker push ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:latest - docker push ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:testing + docker push ghcr.io/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:${{ github.sha }} + docker push ghcr.io/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:latest + docker push ghcr.io/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:testing diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml new file mode 100644 index 0000000..b410bd0 --- /dev/null +++ b/.github/workflows/sonarcloud.yml @@ -0,0 +1,47 @@ +name: SonarCloud Scan + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + sonarcloud: + name: SonarCloud Scan + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install pytest pytest-cov + + - name: Run tests with coverage + run: | + pytest --cov=./ --cov-report=xml + + - name: SonarCloud Scan + uses: sonarsource/sonarcloud-github-action@v5 + with: + projectBaseDir: . + extraProperties: | + sonar.projectKey=alexjelani_python-fastapi + sonar.sources=. + sonar.python.coverage.reportPaths=coverage.xml + sonar.tests=tests + sonar.test.inclusions=tests/**/*.py + sonar.sourceEncoding=UTF-8 + sonar.exclusions=.github/**,tests/** + sonar.login=${{ secrets.SONAR_TOKEN }} diff --git a/.github/workflows/unit-sec-test.yml b/.github/workflows/unit-sec-test.yml index b47d474..d9604bc 100644 --- a/.github/workflows/unit-sec-test.yml +++ b/.github/workflows/unit-sec-test.yml @@ -57,7 +57,7 @@ jobs: - name: Build Docker Image run: | docker build -t python-fastapi:${{ github.sha }} . - docker run -d -p 8080:8080 python-fastapi:${{ github.sha }} + docker run -d -p 8000:8000 python-fastapi:${{ github.sha }} - name: Wait for Docker container to be ready run: sleep 30 @@ -72,7 +72,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} docker_name: 'ghcr.io/zaproxy/zaproxy:stable' format: openapi - target: 'http://0.0.0.0:8080' + target: 'http://127.0.0.1:8000' rules_file_name: '.zap/rules.tsv' cmd_options: '-a' allow_issue_writing: false diff --git a/Dockerfile b/Dockerfile index 57c1063..9bfa09d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,8 +16,8 @@ RUN pip install --no-cache-dir -r requirements.txt # Copy the current directory contents into the container COPY . . -# Expose port 8080 to the outside world -EXPOSE 8080 +# Expose port 8000 to the outside world +EXPOSE 8000 # Run app.py when the container launches -CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"] +CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]