diff --git a/.github/actions/test/action.yml b/.github/actions/test/action.yml new file mode 100644 index 0000000..9231e60 --- /dev/null +++ b/.github/actions/test/action.yml @@ -0,0 +1,99 @@ +name: Deploy to AWS +inputs: + docker_tag: + description: "Commit short SHA" + required: true + type: string + stack_name: + required: true + type: string + aws_region: + required: true + type: string + pulumi_command: + type: string + default: up + pulumi_diff: + default: "false" + PULUMI_ACCESS_TOKEN: + required: true + AWS_ACCESS_KEY_ID: + required: true + AWS_SECRET_ACCESS_KEY: + required: true + OP_SERVICE_ACCOUNT_TOKEN: + required: true +runs: + using: composite + services: + redis: + image: redis + # Set health checks to wait until redis has started + options: >- + --health-cmd "redis-cli ping" + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + - 6379:6379 + + postgres: + image: postgres:12.3-alpine + env: + POSTGRES_USER: passport_scorer + POSTGRES_PASSWORD: passport_scorer_pwd + POSTGRES_DB: passport_scorer + + ports: + - 5432:5432 + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + + steps: + - uses: actions/setup-python@v4 + with: + python-version: "3.11" + + - name: Install pipenv + run: pip3 install pipenv + + - name: Generate requirements.txt + working-directory: ./api + run: pipenv requirements --dev > requirements.txt + + - name: Install API dependencies + working-directory: ./api + run: pip3 install -r requirements.txt + + - name: Django Check + working-directory: ./api + env: + CERAMIC_CACHE_SCORER_ID: "" + SECRET_KEY: secret-test-value + run: python manage.py check + + - name: URL Monitoring Check + working-directory: ./api + shell: bash + env: + CERAMIC_CACHE_SCORER_ID: "" + SECRET_KEY: secret-test-value + UPTIME_ROBOT_READONLY_API_KEY: ${{ secrets.UPTIME_ROBOT_READONLY_API_KEY }} + IGNORE_UNMONITORED_URLS: ${{ vars.IGNORE_UNMONITORED_URLS }} + run: + python manage.py show_urls -f json > urls.json && + python manage.py get_unmonitored_urls --urls urls.json --base-url https://api.scorer.gitcoin.co --out unmonitored.json --allow-paused True && + [ -f unmonitored.json ] && [ `cat unmonitored.json | wc -m` -eq 2 ] + + - name: Run API unittests + working-directory: ./api + run: pytest + env: + CERAMIC_CACHE_SCORER_ID: "" + SECRET_KEY: secret-test-value + DATABASE_URL: postgres://passport_scorer:passport_scorer_pwd@localhost:5432/passport_scorer + DATA_MODEL_DATABASE_URL: postgres://passport_scorer:passport_scorer_pwd@localhost:5432/passport_scorer + FF_API_ANALYTICS: on diff --git a/.github/workflows/build_and_deploy_review.yml b/.github/workflows/build_and_deploy_review.yml index 19872bd..29e8fe0 100644 --- a/.github/workflows/build_and_deploy_review.yml +++ b/.github/workflows/build_and_deploy_review.yml @@ -8,9 +8,33 @@ on: required: false jobs: + ref: + name: Load Commit Ref + runs-on: ubuntu-latest + steps: + - id: ref + uses: passportxyz/gh-workflows/.github/actions/load_commit_ref@main + with: + commit: ${{ inputs.commit }} + + outputs: + version_tag: ${{ steps.ref.outputs.version_tag }} + docker_tag: ${{ steps.ref.outputs.docker_tag }} + refspec: ${{ steps.ref.outputs.refspec }} + test: - name: Test - uses: ./.github/actions/test.yml + name: Run Tests + needs: [ref] + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + ref: ${{ needs.ref.outputs.refspec }} + fetch-depth: 0 + + - id: test + uses: ./.github/actions/test.yml deploy: name: Deploy