diff --git a/.github/workflows/automate-metrics.yaml b/.github/workflows/automate-metrics.yaml index cc6fe279..5d37daca 100644 --- a/.github/workflows/automate-metrics.yaml +++ b/.github/workflows/automate-metrics.yaml @@ -1,37 +1,34 @@ name: Update User Metrics on: - workflow_dispatch: + workflow_call: env: - portal_id: ${{ secrets.GA4_PORTAL_ID }} - foundations_id: ${{ secrets.GA4_FOUNDATIONS_ID }} - cookbooks_id: ${{ secrets.GA4_COOKBOOKS_ID }} + PORTAL_ID: ${{ secrets.PORTAL_ID }} + FOUNDATIONS_ID: ${{ secrets.FOUNDATIONS_ID }} + COOKBOOKS_ID: ${{ secrets.COOKBOOKS_ID }} + PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }} + PRIVATE_KEY_ID: ${{ secrets.PRIVATE_KEY_ID }} jobs: main: runs-on: macos-latest steps: - uses: actions/checkout@v3 - - name: Set Credentials - uses: mobiledevops/secret-to-file-action@v1 - with: - base64-encoded-secret: ${{ secrets.GOOGLE_ANALYTICS_API_CREDENTIALS }} - filename: "credentials.json" - is-executable: true - working-directory: "." - - run: export GOOGLE_APPLICATION_CREDENTIALS="credentials.json" - - name: Set-Up Virtual Environment run: | python -m venv analytics-api source analytics-api/bin/activate pip install google-analytics-data - - name: Get and Write Metrics to JSON + - name: Write Metrics to JSON run: | - curl -O https://raw.githubusercontent.com/jukent/projectpythia.github.io/metrics-api/.github/workflows/get-metrics.py - python get_metrics.py + source analytics-api/bin/activate + curl -O https://raw.githubusercontent.com/jukent/projectpythia.github.io/main/.github/workflows/get-metrics.py + python get-metrics.py - name: Write Markdown File - run: python write-metrics-md.py + run: | + source analytics-api/bin/activate + curl -O https://raw.githubusercontent.com/jukent/projectpythia.github.io/main/.github/workflows/write-metrics-md.py + python write-metrics-md.py diff --git a/.github/workflows/get-metrics.py b/.github/workflows/get-metrics.py index 32ed0d8e..c519c6b3 100644 --- a/.github/workflows/get-metrics.py +++ b/.github/workflows/get-metrics.py @@ -1,18 +1,36 @@ import json import os +import base64 +import hashlib from google.analytics.data_v1beta import BetaAnalyticsDataClient from google.analytics.data_v1beta.types import DateRange, Metric, RunReportRequest -PORTAL_ID = os.environ['portal_id'] -FOUNDATIONS_ID = os.environ['foundations_id'] -COOKBOOKS_ID = os.environ['cookbook_id'] +PORTAL_ID = os.environ.get('PORTAL_ID') +FOUNDATIONS_ID = os.environ.get('FOUNDATIONS_ID') +COOKBOOKS_ID = os.environ.get('COOKBOOKS_ID') +PRIVATE_KEY_ID = os.environ.get('PRIVATE_KEY_ID') +PRIVATE_KEY = os.environ.get('PRIVATE_KEY').replace('$','\n') -def _run_total_users_report(property_id): +credentials_dict = { + "type": "service_account", + "project_id": "cisl-vast-pythia", + "private_key_id": PRIVATE_KEY_ID, + "private_key": PRIVATE_KEY, + "client_email": "pythia-metrics-api@cisl-vast-pythia.iam.gserviceaccount.com", + "client_id": "113402578114110723940", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/pythia-metrics-api%40cisl-vast-pythia.iam.gserviceaccount.com", + "universe_domain": "googleapis.com" +} + +client = BetaAnalyticsDataClient.from_service_account_info(credentials_dict) - client = BetaAnalyticsDataClient() +def _run_total_users_report(property_id): request = RunReportRequest( property=f'properties/{property_id}', dimensions=[], @@ -29,15 +47,15 @@ def _run_total_users_report(property_id): return total_users -def get_metrics(portal_id, foundations_id, cookbooks_id): +def get_metrics(): metrics_dict = {} - metrics_dict['Portal'] = _run_total_users_report(str(portal_id)) - metrics_dict['Foundations'] = _run_total_users_report(str(foundations_id)) - metrics_dict['Cookbooks'] = _run_total_users_report(str(cookbooks_id)) + metrics_dict['Portal'] = _run_total_users_report(str(PORTAL_ID)) + metrics_dict['Foundations'] = _run_total_users_report(str(FOUNDATIONS_ID)) + metrics_dict['Cookbooks'] = _run_total_users_report(str(COOKBOOKS_ID)) with open('user_metrics.json', 'w') as outfile: json.dump(metrics_dict, outfile) if __name__ == '__main__': - get_metrics(PORTAL_ID, FOUNDATIONS_ID, COOKBOOKS_ID) + get_metrics() diff --git a/.github/workflows/nightly-build.yaml b/.github/workflows/nightly-build.yaml index 4fe75d41..c46222c6 100644 --- a/.github/workflows/nightly-build.yaml +++ b/.github/workflows/nightly-build.yaml @@ -7,7 +7,7 @@ on: jobs: update-metrics: - uses: automate-metrics.yaml@main + uses: ./.github/workflows/automate-metrics.yaml build: if: ${{ github.repository_owner == 'ProjectPythia' }} diff --git a/.github/workflows/publish-site.yaml b/.github/workflows/publish-site.yaml index 1d52a773..4c06ca47 100644 --- a/.github/workflows/publish-site.yaml +++ b/.github/workflows/publish-site.yaml @@ -9,7 +9,7 @@ on: jobs: update-metrics: - uses: automate-metrics.yaml@main + uses: ./.github/workflows/automate-metrics.yaml build: uses: ProjectPythia/cookbook-actions/.github/workflows/build-book.yaml@main diff --git a/.github/workflows/trigger-preview.yaml b/.github/workflows/trigger-preview.yaml index 05463fcf..fda6c9a2 100644 --- a/.github/workflows/trigger-preview.yaml +++ b/.github/workflows/trigger-preview.yaml @@ -8,6 +8,9 @@ on: - completed jobs: + update-metrics: + uses: ./.github/workflows/automate-metrics.yaml + find-pull-request: uses: ProjectPythia/cookbook-actions/.github/workflows/find-pull-request.yaml@main deploy-preview: diff --git a/.github/workflows/trigger-site-build.yaml b/.github/workflows/trigger-site-build.yaml index 03363aaf..8902e634 100644 --- a/.github/workflows/trigger-site-build.yaml +++ b/.github/workflows/trigger-site-build.yaml @@ -4,7 +4,7 @@ on: jobs: update-metrics: - uses: automate-metrics.yaml@main + uses: ./.github/workflows/automate-metrics.yaml build: uses: ProjectPythia/cookbook-actions/.github/workflows/build-book.yaml@main diff --git a/.github/workflows/write-metrics-md.py b/.github/workflows/write-metrics-md.py index 7c4c5082..c20d7b59 100644 --- a/.github/workflows/write-metrics-md.py +++ b/.github/workflows/write-metrics-md.py @@ -28,5 +28,5 @@ def process_user_data(user_data_file, markdown_file): if __name__ == '__main__': user_data_file = 'user_metrics.json' - markdown_file = '../../portal/metrics.md' + markdown_file = 'portal/metrics.md' process_user_data(user_data_file, markdown_file) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6a47e590..ae9fdc00 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -30,7 +30,7 @@ repos: - id: isort - repo: https://github.com/nbQA-dev/nbQA - rev: 1.7.1 + rev: 1.8.4 hooks: - id: nbqa-black - id: nbqa-pyupgrade