From 17ab78f64924d3748a4d9b524242d580671b8ef9 Mon Sep 17 00:00:00 2001 From: "K. Lucia Z" <7947215+zimzoom@users.noreply.github.com> Date: Wed, 15 Mar 2023 19:32:42 -0500 Subject: [PATCH] Add GitHub Actions workflow for checking new pull requests This is just a starting point, since we don't have tests yet, all it does is deploy to the dev environment and call the scraper. --- .github/workflows/pull-req-check.yml | 84 ++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 .github/workflows/pull-req-check.yml diff --git a/.github/workflows/pull-req-check.yml b/.github/workflows/pull-req-check.yml new file mode 100644 index 0000000..9eba677 --- /dev/null +++ b/.github/workflows/pull-req-check.yml @@ -0,0 +1,84 @@ +# This workflow will build a Python app and deploy it to an Azure Functions App on Linux when a commit is pushed to your default branch. +# +# This workflow assumes you have already created the target Azure Functions app. +# For instructions see https://learn.microsoft.com/en-us/azure/azure-functions/create-first-function-vs-code-python?pivots=python-mode-configuration +# +# To configure this workflow: +# 1. Set up the following secrets in your repository: +# - AZURE_FUNCTIONAPP_PUBLISH_PROFILE +# 2. Change env variables for your configuration. +# +# For more information on: +# - GitHub Actions for Azure: https://github.com/Azure/Actions +# - Azure Functions Action: https://github.com/Azure/functions-action +# - Publish Profile: https://github.com/Azure/functions-action#using-publish-profile-as-deployment-credential-recommended +# - Azure Service Principal for RBAC: https://github.com/Azure/functions-action#using-azure-service-principal-for-rbac-as-deployment-credential +# +# For more samples to get started with GitHub Action workflows to deploy to Azure: https://github.com/Azure/actions-workflow-samples/tree/master/FunctionApp + +name: Deploy to PR dev Azure Function App and light test run + +on: + push: + branches: [ main ] + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + branches: + - main + +env: + AZURE_FUNCTIONAPP_NAME: 'indigent-defense-stats-dev-function-app' # set this to your function app name on Azure + AZURE_FUNCTIONAPP_PACKAGE_PATH: '.' # set this to the path to your function app project, defaults to the repository root + PYTHON_VERSION: '3.9' # set this to the python version to use (e.g. '3.6', '3.7', '3.8') + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + environment: dev + steps: + - name: 'Checkout GitHub Action' + uses: actions/checkout@v3 + + # If you want to use Azure RBAC instead of Publish Profile, then uncomment the task below + # - name: 'Login via Azure CLI' + # uses: azure/login@v1 + # with: + # creds: ${{ secrets.AZURE_RBAC_CREDENTIALS }} # set up AZURE_RBAC_CREDENTIALS secrets in your repository + + - name: Setup Python ${{ env.PYTHON_VERSION }} Environment + uses: actions/setup-python@v4 + with: + python-version: ${{ env.PYTHON_VERSION }} + + - name: 'Resolve Project Dependencies Using Pip' + shell: bash + run: | + pushd './${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}' + python -m pip install --upgrade pip + pip install -r requirements.txt --target=".python_packages/lib/site-packages" + popd + + - name: 'Publish Azure Function App to Dev Env' + uses: Azure/functions-action@v1 + id: fa + with: + app-name: ${{ env.AZURE_FUNCTIONAPP_NAME }} + package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }} + publish-profile: ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }} # Remove publish-profile to use Azure RBAC + respect-funcignore: true + + - name: HTTP Request Test to Http-Scraper + id: httpRequest + # You may pin to the exact commit or the version. + # uses: fjogeleit/http-request-action@4ae1dfba856bfb530598ebb818f204befbb24cda + uses: fjogeleit/http-request-action@v1.13.0 + with: + url: https://indigent-defense-stats-dev-function-app.azurewebsites.net/api/http-scraper + method: POST + data: '{"start_date": "2022-11-01", "end_date": "2022-11-07", "county": "hays", "judicial_officers": ["Updegrove, Robert"]}' + + # log the test run response + - name: Show Response + run: | + echo ${{ steps.httpRequest.outputs.response }} + echo ${{ steps.httpRequest.outputs.headers }}