name: Run checks on: [push] permissions: contents: read env: DEBUG: True NOTIFY_ENVIRONMENT: test FLASK_APP: application.py FLASK_ENV: development WERKZEUG_DEBUG_PIN: off NOTIFY_EMAIL_DOMAIN: dispostable.com REDIS_ENABLED: 0 AWS_REGION: us-west-2 AWS_PINPOINT_REGION: us-west-2 AWS_US_TOLL_FREE_NUMBER: +18446120782 jobs: build: runs-on: ubuntu-latest services: postgres: image: postgres env: POSTGRES_USER: user POSTGRES_PASSWORD: password POSTGRES_DB: test_notification_api options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 ports: # Maps tcp port 5432 on service container to the host - 5432:5432 steps: - uses: actions/checkout@v3 - uses: ./.github/actions/setup-project - name: Install application dependencies run: make bootstrap env: SQLALCHEMY_DATABASE_TEST_URI: postgresql://user:password@localhost:5432/test_notification_api - name: Run style checks run: pipenv run flake8 . - name: Check imports alphabetized run: pipenv run isort --check-only ./app ./tests - name: Run tests run: pipenv run pytest -n4 --maxfail=10 env: SQLALCHEMY_DATABASE_TEST_URI: postgresql://user:password@localhost:5432/test_notification_api pip-audit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: ./.github/actions/setup-project - name: Create requirements.txt run: pipenv requirements > requirements.txt - uses: trailofbits/gh-action-pip-audit@v1.0.0 with: inputs: requirements.txt ignore-vulns: PYSEC-2022-237 static-scan: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: ./.github/actions/setup-project - name: Install bandit run: pip install bandit - name: Run scan run: bandit -r app/ --confidence-level medium dynamic-scan: runs-on: ubuntu-latest services: postgres: image: postgres env: POSTGRES_USER: user POSTGRES_PASSWORD: password POSTGRES_DB: test_notification_api options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 ports: # Maps tcp port 5432 on service container to the host - 5432:5432 steps: - uses: actions/checkout@v3 - uses: ./.github/actions/setup-project - name: Install application dependencies run: make bootstrap env: SQLALCHEMY_DATABASE_TEST_URI: postgresql://user:password@localhost:5432/test_notification_api - name: Run server run: make run-flask & env: SQLALCHEMY_DATABASE_TEST_URI: postgresql://user:password@localhost:5432/test_notification_api - name: Run OWASP Baseline Scan uses: zaproxy/action-api-scan@v0.1.1 with: docker_name: 'owasp/zap2docker-stable' target: 'http://localhost:6011/_status' fail_action: true allow_issue_writing: false rules_file_name: 'zap.conf' cmd_options: '-I'