Skip to content

feat: Tech debt removal for better testing #232

feat: Tech debt removal for better testing

feat: Tech debt removal for better testing #232

Workflow file for this run

name: Ruby-CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
env:
LOOKERSDK_BASE_URL: https://localhost:20000
LOOKERSDK_VERIFY_SSL: false
LOOKERSDK_CLIENT_ID: ${{ secrets.LOOKERSDK_CLIENT_ID }}
LOOKERSDK_CLIENT_SECRET: ${{ secrets.LOOKERSDK_CLIENT_SECRET }}
jobs:
setup:
uses: looker-open-source/reusable-actions/.github/workflows/supported-versions.yml@main
test:
name: Test - Looker.${{ matrix.looker }} / Ruby.${{ matrix.ruby-version }}
runs-on:
group: large-ubuntu
needs: setup
strategy:
matrix:
looker: ${{ fromJson(needs.setup.outputs.matrix_json) }}
ruby-version: [2.7.7]
steps:
- name: Cancel Previous Runs
uses: styfle/[email protected]
with:
access_token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/checkout@v3
- name: Authenticate to Google Cloud
uses: google-github-actions/[email protected]
with:
credentials_json: ${{ secrets.GCP_AR_READER_SA_KEY }}
project_id: ${{ secrets.GCP_PROJECT_ID }}
create_credentials_file: true
export_environment_variables: true
- name: Set up Cloud SDK
uses: google-github-actions/[email protected]
- name: Authenticate Artifact Repository
run: gcloud auth configure-docker us-west1-docker.pkg.dev --quiet
- name: Pull and run Looker docker image
run: |
docker pull --quiet us-west1-docker.pkg.dev/cloud-looker-sdk-codegen-cicd/looker/${{ matrix.looker }}
# set $LOOKER_OPTS to --no-ssl if we want to turn off ssl
docker run --name looker-sdk-codegen-ci -d -p 10000:9999 -p 20000:19999 us-west1-docker.pkg.dev/cloud-looker-sdk-codegen-cicd/looker/${{ matrix.looker }}
docker logs -f looker-sdk-codegen-ci --until=30s &
- name: Set up Ruby ${{ matrix.ruby-version }}
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby-version }}
bundler-cache: false
- name: Install dependencies
run: bin/setup
- name: Check that Looker is ready
run: |
${{ github.workspace }}/.github/scripts/wait_for_looker.sh
- name: Report Failure
run: |
curl --request POST \
--url https://api.github.com/repos/looker-open-source/sdk-codegen/check-runs \
--header "authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
--header "content-type: application/json" \
--header "Accept: application/vnd.github.v3+json" \
--data '{
"name": "Ruby-CI Tests",
"head_sha": "${{ github.event.pull_request.head.sha || github.sha }}",
"conclusion": "failure"
}' \
--fail
if: failure()
- name: Login persistently
run: |
exe/gzr session login
- name: Create Connection
run: |
cat > Connection_faa_mysql.json <<HERE
{
"name": "faa",
"host": "${{ secrets.FAA_MYSQL_HOSTNAME }}",
"port": "3306",
"database": "flightstats",
"db_timezone": "UTC",
"query_timezone": "UTC",
"schema": null,
"max_connections": 30,
"ssl": false,
"verify_ssl": false,
"tmp_db_name": "tmp",
"pool_timeout": 120,
"sql_runner_precache_tables": true,
"sql_writing_with_info_schema": true,
"uses_tns": false,
"pdt_concurrency": 1,
"dialect_name": "mysql",
"username": "${{ secrets.FAA_MYSQL_USERNAME }}",
"password": "${{ secrets.FAA_MYSQL_PASSWORD }}"
}
HERE
exe/gzr connection import Connection_faa_mysql.json --token_file
- name: Test Connection
run: |
exe/gzr connection test faa --token_file
- name: Change the session to dev mode
run: |
exe/gzr session get --token_file
exe/gzr session update dev --token_file
- name: Import the project
run: |
cat > Project_faa.json <<HERE
{
"name": "faa",
"uses_git": true
}
HERE
exe/gzr project import Project_faa.json --token-file
- name: Create a deploy key and set it on the github repo for the project
run: |
DEPLOY_KEY=$(exe/gzr project deploy_key faa --token_file)
echo $DEPLOY_KEY
SET_KEY_RESPONSE=$(
curl -L \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.LOS_AUTO_BOT_MANAGE_FAA_DEPLOY_KEY }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/looker-open-source/faa/keys \
-d "{\"title\":\"test_key $(uuidgen)\",\"key\":\"$DEPLOY_KEY\",\"read_only\":false}"
)
echo $SET_KEY_RESPONSE
echo "KEY_ID=$(jq .id <<<$SET_KEY_RESPONSE)" >> $GITHUB_ENV
- name: Set the project github connection
run: |
cat > github_repo.json <<HERE
{
"git_remote_url": "[email protected]:looker-open-source/faa.git",
"git_service_name": "github"
}
HERE
exe/gzr project update faa github_repo.json --token-file
- name: Check the project config
run: |
exe/gzr project cat faa --trim --token-file
- name: Check available branches for faa project
run: |
exe/gzr project branch faa --all --token-file
- name: Checkout a shared branch
run: |
exe/gzr project checkout faa main --token_file
- name: Deploy to production
run: |
exe/gzr project deploy faa --token_file
- name: Configure lookml model
run: |
cat > Model_faa.json <<HERE
{
"name": "aviation",
"project_name": "faa",
"unlimited_db_connections": false,
"allowed_db_connection_names": [
"faa"
]
}
HERE
exe/gzr model import Model_faa.json --token_file
- name: run a query against the model
run: |
cat > query.json <<HERE
{
"model": "aviation",
"view": "aircraft_types",
"fields": ["aircraft_types.description","aircraft_types.count"],
"pivots": null,
"fill_fields": null,
"filters": null,
"filter_expression": null,
"sorts": [
"aircraft_types.description"
],
"limit": "500"
}
HERE
exe/gzr query runquery "$(cat query.json)"
- name: Load a dashboard
run: |
me=$(exe/gzr user me --csv --plain)
echo $me
dest_folder=$(cut -d, -f5 <<< $me | sed 's/"//g')
exe/gzr dashboard import examples/Dashboard_17_FAA_KPIs.json $dest_folder
- name: Remove the deploy key from the github repo
if: ${{ always() }}
run: |
curl -L \
-X DELETE \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.LOS_AUTO_BOT_MANAGE_FAA_DEPLOY_KEY }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/looker-open-source/faa/keys/$KEY_ID
- name: Run tests
run: bundle exec rake
- name: Upload ts unit test results
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: ruby-ci-test-results-${{ matrix.looker }}
path: rspec.xml
publish-test-results:
needs: [test]
if: success() || failure()
runs-on: ubuntu-latest
steps:
- name: Download Artifacts
uses: actions/download-artifact@v3
with:
path: artifacts
- name: Publish Test Results
uses: EnricoMi/[email protected]
with:
# Cosmetic issue with `check_name` being associated to the wrong
# workflow: https://github.com/EnricoMi/publish-unit-test-result-action/issues/12
check_name: Ruby-CI Tests
github_token: ${{ secrets.GITHUB_TOKEN }}
report_individual_runs: true
hide_comments: orphaned commits
check_run_annotations: 'none'
compare_to_earlier_commit: false
files: 'artifacts/**/*.xml'