Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
updated tests
  • Loading branch information
jeffreyaven committed Sep 2, 2023
commit faef93c31fa3eb524bc779afd2f0ef2e38d9fb91
94 changes: 58 additions & 36 deletions .github/workflows/stackql-exec.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,49 +17,71 @@ jobs:
- name: Checkout
uses: actions/checkout@v3

# - name: Prep Google Creds (Windows)
# if: ${{ matrix.os == 'windows-latest'}}
# run: | ## use the secret to create json file
# $GoogleCreds = [System.Environment]::GetEnvironmentVariable("GOOGLE_CREDS_ENV")
# $GoogleCredsDecoded = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($GoogleCreds))
# Write-Output $GoogleCredsDecoded | Set-Content sa-key.json
# shell: pwsh
# env:
# GOOGLE_CREDS_ENV: ${{ secrets.GOOGLE_CREDS }}

# - name: Prep Google Creds (bash)
# if: ${{ matrix.os != 'windows-latest' }}
# shell: bash
# run: | ## use the base64 encoded secret to create json file
# sudo echo ${{ secrets.GOOGLE_CREDS }} | base64 -d > sa-key.json

- name: exec google example with query file
id: stackql-exec-file
#
# query no auth
#
- name: pull providers
id: stackql-exec-string-noauth
uses: ./
with:
# auth_obj_path: './stackql_scripts/auth.json'
query_file_path: './stackql_scripts/google-example.iql'
query: "REGISTRY PULL github;
REGISTRY PULL google;"

#
# authenticated query
#
- name: exec github example with query string
id: stackql-exec-string
uses: ./
with:
# auth_str: '{ "github": { "type": "basic", "credentialsenvvar": "STACKQL_GITHUB_CREDS" } }'
query: "REGISTRY PULL github;
SHOW PROVIDERS;"
# env:
# STACKQL_GITHUB_CREDS: ${{ secrets.STACKQL_GITHUB_CREDS }}
query: "select total_private_repos
from github.orgs.orgs
where org = 'stackql';"
env:
STACKQL_GITHUB_USERNAME: ${{ secrets.STACKQL_GITHUB_USERNAME }}
STACKQL_GITHUB_PASSWORD: ${{ secrets.STACKQL_GITHUB_PASSWORD }}

# - name: validate stackql-exec output
# shell: bash
# run: |
# if [ -z '${{ steps.stackql-exec-file.outputs.exec-result }}' ]; then
# echo "exec-stackql output does not contain expected result"
# exit 1
# fi
# if [ -z '${{ steps.stackql-exec-string.outputs.exec-result }}' ]; then
# echo "exec-stackql output does not contain expected result"
# exit 1
# fi
#
# query_file_path
#
- name: exec google example with query file
id: stackql-exec-file
uses: ./
with:
query_file_path: './stackql_scripts/google-instances-by-status.iql'
env:
GOOGLE_CREDENTIALS: ${{ secrets.GOOGLE_CREDENTIALS }}

#
# query_file_path with vars
#
- name: exec google example with query file
id: stackql-exec-file-with-vars
uses: ./
with:
query_file_path: './stackql_scripts/google-instances-by-status-with-vars.iql'
vars: GOOGLE_PROJECT=$GOOGLE_PROJECT, GOOGLE_ZONE=$GOOGLE_ZONE
env:
GOOGLE_CREDENTIALS: ${{ secrets.GOOGLE_CREDENTIALS }}
GOOGLE_PROJECT: ${{ vars.GOOGLE_PROJECT }}
GOOGLE_ZONE: ${{ vars.GOOGLE_ZONE }}

- name: validate stackql-exec output
shell: bash
run: |
if [ -z '${{ steps.stackql-exec-string-noauth.outputs.exec-result }}' ]; then
echo "exec-stackql output does not contain expected result"
exit 1
fi
if [ -z '${{ steps.stackql-exec-string.outputs.exec-result }}' ]; then
echo "exec-stackql output does not contain expected result"
exit 1
fi
if [ -z '${{ steps.stackql-exec-file.outputs.exec-result }}' ]; then
echo "exec-stackql output does not contain expected result"
exit 1
fi
if [ -z '${{ steps.stackql-exec-file-with-vars.outputs.exec-result }}' ]; then
echo "exec-stackql output does not contain expected result"
exit 1
fi
9 changes: 4 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,18 +44,17 @@ GROUP BY status;
uses: ./
with:
query_file_path: './stackql_scripts/google-example.iql'
vars:
- GOOGLE_PROJECT=$GOOGLE_PROJECT
vars: GOOGLE_PROJECT=$GOOGLE_PROJECT, GOOGLE_ZONE=$GOOGLE_ZONE
env:
GOOGLE_CREDENTIALS: ${{ secrets.GOOGLE_CREDENTIALS }}
GOOGLE_CREDENTIALS: ${{ secrets.GOOGLE_CREDENTIALS }}
GOOGLE_PROJECT: ${{ secrets.GOOGLE_PROJECT }}
GOOGLE_ZONE: ${{ secrets.GOOGLE_ZONE }}
```


## Inputs
- `query` - stackql query to execute **(need to supply either `query` or `query_file_path`)**
- `query_file_path` - stackql query file to execute **(need to supply either `query` or `query_file_path`)**
- `vars` - (optional) list of variables to pass to the query file, accepts `var1=val1 var2=val2`, can be used to source environment variables into stackql queries
- `vars` - (optional) comma delimited list of variables to pass to the stackql query preprocessor (jsonnet), accepts `var1=val1 var2=val2`, can be used to source environment variables into stackql queries
- `query_output` - (optional) output format of the stackql exec result, accepts `table`, `csv`, `json`, defaults to `json`
- `auth_obj_path` - (optional) the path of json file that stores stackql AUTH string **(only required when using non-standard environment variable names)**
- `auth_str` - (optional) stackql AUTH string **(only required when using non-standard environment variable names)**
Expand Down
2 changes: 1 addition & 1 deletion action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ inputs:
description: stackql query file to be executed
required: false
vars:
description: stackql vars to be passed to query
description: comma delimited list of vars to be passed to query preprocessor (jsonnet)
required: false
query_output:
description: output format
Expand Down
2 changes: 1 addition & 1 deletion lib/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ async function getStackqlCommand(core) {
}

if (checkEnvVarValid(vars)) {
args.push(`--vars='${vars}'`);
args.push(`--var='${vars}'`);
}

if (checkEnvVarValid(auth)) {
Expand Down
1 change: 0 additions & 1 deletion stackql_scripts/auth.json

This file was deleted.

5 changes: 0 additions & 5 deletions stackql_scripts/github-example.iql

This file was deleted.

2 changes: 0 additions & 2 deletions stackql_scripts/google-example.iql

This file was deleted.

12 changes: 12 additions & 0 deletions stackql_scripts/google-instances-by-status-with-vars.iql
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<<<jsonnet
local project = std.extVar("GOOGLE_PROJECT");
local zone = std.extVar("GOOGLE_ZONE");
{
project: project,
zone: zone,
}
>>>
SELECT status, count(*) as num_instances
FROM google.compute.instances
WHERE project = '{{ .project }}' and zone = '{{ .zone }}'
GROUP BY status;
4 changes: 4 additions & 0 deletions stackql_scripts/google-instances-by-status.iql
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
SELECT status, count(*) as num_instances
FROM google.compute.instances
WHERE project = 'stackql-demo'
GROUP BY status;