Skip to content

App inspect tests

App inspect tests #19

Workflow file for this run

name: App inspect tests
on:
push:
branches: [ main ]
paths-ignore:
- '**.md'
pull_request:
branches: [ main ]
paths-ignore:
- '**.md'
schedule:
- cron: '25 02 * * THU'
workflow_dispatch:
jobs:
appinspect:
name: App inspect tests
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.9.16'
- name: Install Splunk Packaging Toolkit
run: |
curl https://download.splunk.com/misc/packaging-toolkit/splunk-packaging-toolkit-1.0.1.tar.gz -o /tmp/spl.tar.gz
pip install /tmp/spl.tar.gz
- name: Create Splunk App Package
run: |
slim package .
mv crowdsec-splunk-app-*.tar.gz /tmp/crowdsec-splunk-app.tar.gz
- name: Retrieve Splunk API Token
id: get_token
run: |
TOKEN=$(curl -s -u '${{ secrets.SPLUNKBASE_USERNAME }}:${{ secrets.SPLUNKBASE_PASSWORD }}' \
--url 'https://api.splunk.com/2.0/rest/login/splunk' | jq -r .data.token)
echo "::add-mask::$TOKEN"
echo "token=$TOKEN" >> $GITHUB_OUTPUT
- name: Submit App for Validation
id: submit_app
run: |
RESPONSE=$(curl -s -X POST \
-H "Authorization: bearer ${{ steps.get_token.outputs.token }}" \
-F "app_package=@/tmp/crowdsec-splunk-app.tar.gz" \
"https://appinspect.splunk.com/v1/app/validate")
REQUEST_ID=$(echo "$RESPONSE" | jq -r '.request_id')
echo "request_id=$REQUEST_ID" >> $GITHUB_OUTPUT
- name: Poll Status and Download Report
run: |
TOKEN=${{ steps.get_token.outputs.token }}
REQUEST_ID=${{ steps.submit_app.outputs.request_id }}
STATUS_URL="https://appinspect.splunk.com/v1/app/validate/status/$REQUEST_ID"
REPORT_URL="https://appinspect.splunk.com/v1/app/report/$REQUEST_ID"
echo "Polling validation status for request ID: $REQUEST_ID"
for i in {1..10}; do
STATUS=$(curl -s -H "Authorization: bearer $TOKEN" "$STATUS_URL" | jq -r .status)
echo "Status: $STATUS"
if [[ "$STATUS" == "SUCCESS" ]]; then
echo "Validation succeeded!"
break
elif [[ "$STATUS" == "FAILURE" ]]; then
echo "Validation failed!"
exit 1
fi
sleep 5
done
echo "Downloading final validation report..."
curl -s -H "Authorization: bearer $TOKEN" "$REPORT_URL" > /tmp/report.json
- name: Upload App Inspect Report
uses: actions/upload-artifact@v4
with:
name: Appinspect Report
path: /tmp/report.json
retention-days: 7
- name: Check App Inspect Report Results
run: |
if grep -q '"result": "failure"' /tmp/report.json; then
echo "::error::App inspect check failed"
exit 1
else
exit 0
fi