Skip to content

Updates for 0.7.2

Updates for 0.7.2 #112

Workflow file for this run

name: Build and test DataSQRL Examples
on:
push:
branches: [ "main" ]
pull_request:
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
include:
- example: recommendation
path: clickstream-ai-recommendation
test_commands: |
compile -c recommendation_package_api.json
compile -c recommendation_package_kafka.json
- example: credit-card-analytics
path: finance-credit-card-chatbot/credit-card-analytics
tag: credit-card-analytics
test_commands: |
compile -c creditcard_analytics_package_test.json
compile -c creditcard_analytics_package_kafka.json
test -c creditcard_analytics_package_test.json creditcard_analytics_package_jwt.json
- example: credit-card-rewards
path: finance-credit-card-chatbot/credit-card-rewards
tag: credit-card-rewards
test_commands: |
compile -c creditcard_rewards_package_test.json
compile -c creditcard_rewards_package_kafka.json
test -c creditcard_rewards_package_test.json creditcard_rewards_package_jwt.json
- example: credit-card-views
path: finance-credit-card-chatbot/credit-card-views
tag: credit-card-views
test_commands: |
compile -c creditcard_views_package_test.json
test -c creditcard_views_package_test.json
- example: healthcare-study-analytics
path: healthcare-study/healthcare-study-analytics
tag: healthcare-study-analytics
test_commands: |
compile -c study_analytics_package_test.json
test -c study_analytics_package_test.json
# FIXME https://github.com/DataSQRL/sqrl/issues/1140 compile -c study_analytics_package_snowflake.json
- example: healthcare-study-api
path: healthcare-study/healthcare-study-api
tag: healthcare-study-api
test_commands: |
compile -c study_api_package_api.json
compile -c study_api_package_test.json
test -c study_api_package_test.json
- example: healthcare-study-stream
path: healthcare-study/healthcare-study-stream
tag: healthcare-study-stream
test_commands: |
compile -c study_stream_package_kafka.json
compile -c study_stream_package_test.json
test -c study_stream_package_test.json
- example: iot-sensor
path: iot-sensor-metrics
test_commands: |
compile -c sensors_package_api.json
compile -c sensors_package_test.json
test -c sensors_package_test.json
test -c sensors_package_api.json
- example: law-enforcement
path: law-enforcement
test_commands: |
compile -c baseball_card_package_test.json
test -c baseball_card_package_test.json
- example: logistics
path: logistics-shipping-geodata
test_commands: |
compile -c logistics_package_test.json
test -c logistics_package_test.json
- example: oil-gas-monitoring
path: oil-gas-agent-automation/oil-gas-agent-monitoring
tag: oil-gas-agent-monitoring
test_commands: |
compile -c monitoring_agent_package_test.json
- example: oil-gas-operations
path: oil-gas-agent-automation/oil-gas-agent-operations
tag: oil-gas-agent-operations
test_commands: |
compile -c operations_agent_package_test.json
test -c operations_agent_package_test.json
- example: usage-analytics
path: usage-analytics
test_commands: |
compile -c usertokens_package_test.json
test -c usertokens_package_test.json
env:
TZ: 'America/Los_Angeles'
SQRL_VERSION: 'latest'
steps:
- uses: actions/checkout@v4
- name: Setup Timezone
uses: szenius/set-timezone@v1.1
with:
timezoneLinux: "America/Los_Angeles"
- name: Cache Docker images
uses: ScribeMD/docker-cache@0.5.0
with:
# one cache entry per SQRL version & OS
key: sqrl-${{ runner.os }}-${{ env.SQRL_VERSION }}
- name: Pull SQRL Docker image
run: docker pull datasqrl/cmd:${{ env.SQRL_VERSION }}
- name: Run ${{ matrix.example }} Tests
working-directory: ${{ matrix.path }}
run: |
# Read raw lines from the matrix value
mapfile -t raw_cmds <<< "${{ matrix.test_commands }}"
# Keep only non‑empty lines
cmds=()
for c in "${raw_cmds[@]}"; do
[[ -z "${c//[[:space:]]/}" ]] && continue # skip blanks
cmds+=("$c")
done
if (( ${#cmds[@]} == 0 )); then
echo "ERROR: No test commands specified for ${{ matrix.example }}"
exit 1
fi
for cmd in "${cmds[@]}"; do
echo "::group::Running: $cmd"
docker run -i -p 8888:8888 -p 8081:8081 -p 9092:9092 \
--rm -v "$PWD":/build "datasqrl/cmd:${SQRL_VERSION}" $cmd
echo "::endgroup::"
done
- name: Write Dockerfile
run: |
cat <<EOF > ${{ matrix.path }}/Dockerfile
FROM datasqrl/cmd:${SQRL_VERSION}
ENV TZ="UTC"
COPY . /build
WORKDIR /build
EOF
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Publish ${{ matrix.example }}
uses: docker/build-push-action@v3
with:
context: ./${{ matrix.path }}
file: ./${{ matrix.path }}/Dockerfile
push: true
tags: datasqrl/examples:${{ matrix.tag && matrix.tag != '' && matrix.tag || matrix.path }}
platforms: linux/amd64,linux/arm64
ci-summary:
name: build ✅ summary
needs: build
runs-on: ubuntu-latest
if: always()
steps:
- name: Fail if any build job failed
run: |
failed=$(jq -r '.[] | select(.result=="failure")' <<< '${{ toJson(needs) }}' | wc -l)
if [[ "$failed" -gt 0 ]]; then
echo "::error ::${failed} matrix job(s) failed"
exit 1
fi