Skip to content

perf(api-rust): switch from image to opencv #27378

perf(api-rust): switch from image to opencv

perf(api-rust): switch from image to opencv #27378

Workflow file for this run

---
name: Test
'on':
pull_request:
branches:
- main
schedule:
- cron: 0 10 * * *
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
detect-changes:
name: Detect Changes
runs-on: ubuntu-24.04
environment: test
timeout-minutes: 10
permissions:
pull-requests: read
outputs:
amazon-sagemaker-pytorch-mnist: ${{ steps.filter.outputs.amazon-sagemaker-pytorch-mnist }}
amazon-sagamaker-triton-resnet-50-deploy: ${{ steps.filter.outputs.amazon-sagamaker-triton-resnet-50-deploy }}
amazon-sagamaker-triton-resnet-50-infer: ${{ steps.filter.outputs.amazon-sagamaker-triton-resnet-50-infer }}
api-go: ${{ steps.filter.outputs.api-go }}
api-node: ${{ steps.filter.outputs.api-node }}
api-python: ${{ steps.filter.outputs.api-python }}
api-rust: ${{ steps.filter.outputs.api-rust }}
call-matlab-function-in-python: ${{ steps.filter.outputs.call-matlab-function-in-python }}
decode-can-data: ${{ steps.filter.outputs.decode-can-data }}
development-aws-glue-spark-scripts: ${{ steps.filter.outputs.development-aws-glue-spark-scripts }}
production-aws-glue-spark-scripts: ${{ steps.filter.outputs.production-aws-glue-spark-scripts }}
format-can-data: ${{ steps.filter.outputs.format-can-data }}
convolutional-neural-network: ${{ steps.filter.outputs.convolutional-neural-network }}
data-distribution-service: ${{ steps.filter.outputs.data-distribution-service }}
dbt-hm-postgres: ${{ steps.filter.outputs.dbt-hm-postgres }}
delta-lake-read-delta-lake-by-amazon-athena: ${{ steps.filter.outputs.delta-lake-read-delta-lake-by-amazon-athena }}
delta-lake-read-delta-lake-by-trino: ${{ steps.filter.outputs.delta-lake-read-delta-lake-by-trino }}
delta-lake-write-to-delta-lake: ${{ steps.filter.outputs.delta-lake-write-to-delta-lake }}
feature-store: ${{ steps.filter.outputs.feature-store }}
flink-stream-tweets: ${{ steps.filter.outputs.flink-stream-tweets }}
grafana-hm-dashboard: ${{ steps.filter.outputs.grafana-hm-dashboard }}
grafana-hm-panel-plugin: ${{ steps.filter.outputs.grafana-hm-panel-plugin }}
graph-neural-network: ${{ steps.filter.outputs.graph-neural-network }}
hm-aerosandbox: ${{ steps.filter.outputs.hm-aerosandbox }}
hm-airflow: ${{ steps.filter.outputs.hm-airflow }}
hm-geopandas: ${{ steps.filter.outputs.hm-geopandas }}
national-instruments-hm-pyvisa: ${{ steps.filter.outputs.national-instruments-hm-pyvisa }}
national-instruments-hm-tdms: ${{ steps.filter.outputs.national-instruments-hm-tdms }}
national-instruments-hm-veristand: ${{ steps.filter.outputs.national-instruments-hm-veristand }}
hm-autogluon: ${{ steps.filter.outputs.hm-autogluon }}
hm-aws-parallelcluster: ${{ steps.filter.outputs.hm-aws-parallelcluster }}
hm-duckdb: ${{ steps.filter.outputs.hm-duckdb }}
hm-flax: ${{ steps.filter.outputs.hm-flax }}
hm-gradio-classify-image: ${{ steps.filter.outputs.hm-gradio-classify-image }}
hm-streamlit-live-line-chart: ${{ steps.filter.outputs.hm-streamlit-live-line-chart }}
hm-streamlit-map: ${{ steps.filter.outputs.hm-streamlit-map }}
hm-jax: ${{ steps.filter.outputs.hm-jax }}
hm-kubeflow-calculate: ${{ steps.filter.outputs.hm-kubeflow-calculate }}
hm-kubeflow-classify-mnist: ${{ steps.filter.outputs.hm-kubeflow-classify-mnist }}
hm-langchain-chat-pdf: ${{ steps.filter.outputs.hm-langchain-chat-pdf }}
hm-mlflow-classify-mnist: ${{ steps.filter.outputs.hm-mlflow-classify-mnist }}
hm-mlflow-predict-diabetes: ${{ steps.filter.outputs.hm-mlflow-predict-diabetes }}
hm-opal-client: ${{ steps.filter.outputs.hm-opal-client }}
hm-open3d: ${{ steps.filter.outputs.hm-open3d }}
hm-openaerostruct: ${{ steps.filter.outputs.hm-openaerostruct }}
hm-prefect-calculate: ${{ steps.filter.outputs.hm-prefect-calculate }}
hm-prefect-greet: ${{ steps.filter.outputs.hm-prefect-greet }}
hm-prefect-print-platform: ${{ steps.filter.outputs.hm-prefect-print-platform }}
hm-prowler: ${{ steps.filter.outputs.hm-prowler }}
hm-pulumi: ${{ steps.filter.outputs.hm-pulumi }}
hm-pyvista-mount-saint-helens: ${{ steps.filter.outputs.hm-pyvista-mount-saint-helens }}
hm-rasa: ${{ steps.filter.outputs.hm-rasa }}
hm-ray-calculate: ${{ steps.filter.outputs.hm-ray-calculate }}
hm-ray-process-flight-data: ${{ steps.filter.outputs.hm-ray-process-flight-data }}
hm-serial: ${{ steps.filter.outputs.hm-serial }}
hm-skypilot: ${{ steps.filter.outputs.hm-skypilot }}
hm-spark-analyze-coffee-customers: ${{ steps.filter.outputs.hm-spark-analyze-coffee-customers }}
hm-spark-find-retired-people-python: ${{ steps.filter.outputs.hm-spark-find-retired-people-python }}
hm-spark-find-retired-people-scala: ${{ steps.filter.outputs.hm-spark-find-retired-people-scala }}
hm-spark-find-taxi-top-routes: ${{ steps.filter.outputs.hm-spark-find-taxi-top-routes }}
hm-spark-find-taxi-top-routes-sql: ${{ steps.filter.outputs.hm-spark-find-taxi-top-routes-sql }}
hm-spark-ingest-from-s3-to-kafka: ${{ steps.filter.outputs.hm-spark-ingest-from-s3-to-kafka }}
hm-spark-recommend-movies: ${{ steps.filter.outputs.hm-spark-recommend-movies }}
hm-supervision-detect-objects: ${{ steps.filter.outputs.hm-supervision-detect-objects }}
hm-xxhash: ${{ steps.filter.outputs.hm-xxhash }}
iads-iads-config-reader: ${{ steps.filter.outputs.iads-iads-config-reader }}
iads-iads-data-producer: ${{ steps.filter.outputs.iads-iads-data-producer }}
iads-zeromq-iads-bridge: ${{ steps.filter.outputs.iads-zeromq-iads-bridge }}
hugging-face-analyze-sentiment: ${{ steps.filter.outputs.hugging-face-analyze-sentiment }}
kafka-rust-proto-consumer: ${{ steps.filter.outputs.kafka-rust-proto-consumer }}
kafka-rust-proto-producer: ${{ steps.filter.outputs.kafka-rust-proto-producer }}
kafka-rust-udp-kafka-bridge: ${{ steps.filter.outputs.kafka-rust-udp-kafka-bridge }}
kafka-rust-zeromq-kafka-bridge: ${{ steps.filter.outputs.kafka-rust-zeromq-kafka-bridge }}
mobile-android: ${{ steps.filter.outputs.mobile-android }}
mobile-ios: ${{ steps.filter.outputs.mobile-ios }}
mobile-react-native: ${{ steps.filter.outputs.mobile-react-native }}
neural-forecasting-forecast-air-passenger-number: ${{ steps.filter.outputs.neural-forecasting-forecast-air-passenger-number }}
pack-unpack-data: ${{ steps.filter.outputs.pack-unpack-data }}
prometheus: ${{ steps.filter.outputs.prometheus }}
quantum-computing: ${{ steps.filter.outputs.quantum-computing }}
robot-operating-system: ${{ steps.filter.outputs.robot-operating-system }}
reinforcement-learning-cart-pole: ${{ steps.filter.outputs.reinforcement-learning-cart-pole }}
udp-receiver: ${{ steps.filter.outputs.udp-receiver }}
udp-sender: ${{ steps.filter.outputs.udp-sender }}
web: ${{ steps.filter.outputs.web }}
web-cypress: ${{ steps.filter.outputs.web-cypress }}
windows-calculator: ${{ steps.filter.outputs.windows-calculator }}
steps:
- name: Checkout
uses: actions/[email protected]
- uses: dorny/[email protected]
id: filter
with:
filters: |
amazon-sagemaker-pytorch-mnist:
- '.github/workflows/test.yml'
- 'cloud-platform/aws/amazon-sagemaker/pytorch-mnist/**'
amazon-sagamaker-triton-resnet-50-deploy:
- '.github/workflows/test.yml'
- 'machine-learning/triton/amazon-sagamaker-triton-resnet-50/deploy/**'
amazon-sagamaker-triton-resnet-50-infer:
- '.github/workflows/test.yml'
- 'machine-learning/triton/amazon-sagamaker-triton-resnet-50/infer/**'
api-go:
- '.github/workflows/test.yml'
- 'api-go/**'
api-node:
- '.github/workflows/test.yml'
- 'api-node/**'
api-python:
- '.github/workflows/test.yml'
- 'api-python/**'
api-rust:
- '.github/workflows/test.yml'
- 'api-rust/**'
call-matlab-function-in-python:
- '.github/workflows/test.yml'
- 'matlab/call-matlab-function-in-python/**'
decode-can-data:
- '.github/workflows/test.yml'
- 'embedded/decode-can-data/**'
development-aws-glue-spark-scripts:
- '.github/workflows/test.yml'
- 'cloud-infrastructure/terraform/environments/development/aws/general/files/aws-glue/spark-scripts/**'
production-aws-glue-spark-scripts:
- '.github/workflows/test.yml'
- 'cloud-infrastructure/terraform/environments/production/aws/general/files/aws-glue/spark-scripts/**'
format-can-data:
- '.github/workflows/test.yml'
- 'embedded/format-can-data/**'
convolutional-neural-network:
- '.github/workflows/test.yml'
- 'machine-learning/convolutional-neural-network/**'
data-distribution-service:
- '.github/workflows/test.yml'
- 'data-distribution-service/**'
dbt-hm-postgres:
- '.github/workflows/test.yml'
- 'data-transformation/dbt/projects/dbt_hm_postgres/**'
delta-lake-read-delta-lake-by-amazon-athena:
- '.github/workflows/test.yml'
- 'data-storage/delta-lake/read-delta-lake-by-amazon-athena/**'
delta-lake-read-delta-lake-by-trino:
- '.github/workflows/test.yml'
- 'data-storage/delta-lake/read-delta-lake-by-trino/**'
delta-lake-write-to-delta-lake:
- '.github/workflows/test.yml'
- 'data-storage/delta-lake/write-to-delta-lake/**'
feature-store:
- '.github/workflows/test.yml'
- 'machine-learning/feature-store/**'
flink-stream-tweets:
- '.github/workflows/test.yml'
- 'data-processing/flink/applications/stream-tweets/**'
grafana-hm-dashboard:
- '.github/workflows/test.yml'
- 'data-visualization/grafana/hm-dashboard/**'
grafana-hm-panel-plugin:
- '.github/workflows/test.yml'
- 'data-visualization/grafana/hm-panel-plugin/**'
graph-neural-network:
- '.github/workflows/test.yml'
- 'machine-learning/graph-neural-network/**'
hm-aerosandbox:
- '.github/workflows/test.yml'
- 'aerospace/hm-aerosandbox/**'
hm-airflow:
- '.github/workflows/test.yml'
- 'data-orchestration/hm-airflow/**'
hm-geopandas:
- '.github/workflows/test.yml'
- 'data-analytics/hm-geopandas/**'
kafka-rust-proto-consumer:
- '.github/workflows/test.yml'
- 'hm-kafka/kafka-client/kafka-rust/proto-consumer/**'
kafka-rust-proto-producer:
- '.github/workflows/test.yml'
- 'hm-kafka/kafka-client/kafka-rust/proto-producer/**'
kafka-rust-udp-kafka-bridge:
- '.github/workflows/test.yml'
- 'hm-kafka/kafka-client/kafka-rust/udp-kafka-bridge/**'
kafka-rust-zeromq-kafka-bridge:
- '.github/workflows/test.yml'
- 'hm-kafka/kafka-client/kafka-rust/zeromq-kafka-bridge/**'
national-instruments-hm-pyvisa:
- '.github/workflows/test.yml'
- 'hardware-in-the-loop/national-instruments/hm-pyvisa/**'
national-instruments-hm-tdms:
- '.github/workflows/test.yml'
- 'hardware-in-the-loop/national-instruments/hm-tdms/**'
national-instruments-hm-veristand:
- '.github/workflows/test.yml'
- 'hardware-in-the-loop/national-instruments/veristand/hm-veristand/**'
hm-autogluon:
- '.github/workflows/test.yml'
- 'machine-learning/hm-autogluon/**'
hm-aws-parallelcluster:
- '.github/workflows/test.yml'
- 'cloud-platform/aws/aws-parallelcluster/pcluster/**'
hm-duckdb:
- '.github/workflows/test.yml'
- 'data-storage/hm-duckdb/**'
hm-flax:
- '.github/workflows/test.yml'
- 'machine-learning/hm-flax/**'
hm-gradio-classify-image:
- '.github/workflows/test.yml'
- 'machine-learning/hm-gradio/applications/classify-image/**'
hm-jax:
- '.github/workflows/test.yml'
- 'high-performance-computing/hm-jax/**'
hm-kubeflow-calculate:
- '.github/workflows/test.yml'
- 'machine-learning/hm-kubeflow/pipelines/calculate/**'
hm-kubeflow-classify-mnist:
- '.github/workflows/test.yml'
- 'machine-learning/hm-kubeflow/pipelines/classify-mnist/**'
hm-langchain-chat-pdf:
- '.github/workflows/test.yml'
- 'machine-learning/hm-langchain/applications/chat-pdf/**'
hm-mlflow-classify-mnist:
- '.github/workflows/test.yml'
- 'machine-learning/hm-mlflow/experiments/classify-mnist/**'
hm-mlflow-predict-diabetes:
- '.github/workflows/test.yml'
- 'machine-learning/hm-mlflow/experiments/predict-diabetes/**'
hm-opal-client:
- '.github/workflows/test.yml'
- 'authorization/hm-opal-client/**'
hm-open3d:
- '.github/workflows/test.yml'
- 'computer-vision/hm-open3d/**'
hm-openaerostruct:
- '.github/workflows/test.yml'
- 'computer-vision/hm-openaerostruct/**'
hm-prefect-calculate:
- '.github/workflows/test.yml'
- 'data-orchestration/hm-prefect/workflows/calculate/**'
hm-prefect-greet:
- '.github/workflows/test.yml'
- 'data-orchestration/hm-prefect/workflows/greet/**'
hm-prowler:
- '.github/workflows/test.yml'
- 'cloud-security/hm-prowler/**'
hm-pulumi:
- '.github/workflows/test.yml'
- 'cloud-infrastructure/hm-pulumi/**'
hm-prefect-print-platform:
- '.github/workflows/test.yml'
- 'data-orchestration/hm-prefect/workflows/print-platform/**'
hm-pyvista-mount-saint-helens:
- '.github/workflows/test.yml'
- 'computer-vision/hm-pyvista/mount-saint-helens/**'
hm-rasa:
- '.github/workflows/test.yml'
- 'machine-learning/hm-rasa/**'
hm-ray-calculate:
- '.github/workflows/test.yml'
- 'cloud-computing/hm-ray/applications/calculate/**'
hm-ray-process-flight-data:
- '.github/workflows/test.yml'
- 'cloud-computing/hm-ray/applications/process-flight-data/**'
hm-serial:
- '.github/workflows/test.yml'
- 'embedded/hm-serial/**'
hm-skypilot:
- '.github/workflows/test.yml'
- 'cloud-computing/hm-skypilot/**'
hm-spark-analyze-coffee-customers:
- '.github/workflows/test.yml'
- 'data-processing/hm-spark/applications/analyze-coffee-customers/**'
hm-spark-find-retired-people-python:
- '.github/workflows/test.yml'
- 'data-processing/hm-spark/applications/find-retired-people-python/**'
hm-spark-find-retired-people-scala:
- '.github/workflows/test.yml'
- 'data-processing/hm-spark/applications/find-retired-people-scala/**'
hm-spark-find-taxi-top-routes:
- '.github/workflows/test.yml'
- 'data-processing/hm-spark/applications/find-taxi-top-routes/**'
hm-spark-find-taxi-top-routes-sql:
- '.github/workflows/test.yml'
- 'data-processing/hm-spark/applications/find-taxi-top-routes-sql/**'
hm-spark-ingest-from-s3-to-kafka:
- '.github/workflows/test.yml'
- 'data-processing/hm-spark/applications/ingest-from-s3-to-kafka/**'
hm-spark-recommend-movies:
- '.github/workflows/test.yml'
- 'data-processing/hm-spark/applications/recommend-movies/**'
hm-streamlit-live-line-chart:
- '.github/workflows/test.yml'
- 'machine-learning/hm-streamlit/applications/live-line-chart/**'
hm-streamlit-map:
- '.github/workflows/test.yml'
- 'machine-learning/hm-streamlit/applications/map/**'
hm-supervision-detect-objects:
- '.github/workflows/test.yml'
- 'machine-learning/hm-supervision/detect-objects/**'
hm-xxhash:
- '.github/workflows/test.yml'
- 'hm-xxhash/**'
hugging-face-analyze-sentiment:
- '.github/workflows/test.yml'
- 'machine-learning/hugging-face/analyze-sentiment/**'
iads-iads-config-reader:
- '.github/workflows/test.yml'
- 'data-visualization/iads/iads-iads-config-reader/**'
iads-iads-data-producer:
- '.github/workflows/test.yml'
- 'data-visualization/iads/iads-rtstation/iads-data-producer/**'
iads-zeromq-iads-bridge:
- '.github/workflows/test.yml'
- 'data-visualization/iads/iads-rtstation/zeromq-iads-bridge/**'
mobile-android:
- '.github/workflows/test.yml'
- 'mobile/mobile-android/**'
mobile-ios:
- '.github/workflows/test.yml'
- 'mobile/mobile-ios/**'
mobile-react-native:
- '.github/workflows/test.yml'
- 'mobile/mobile-react-native/**'
neural-forecasting-forecast-air-passenger-number:
- '.github/workflows/test.yml'
- 'machine-learning/neural-forecasting/forecast-air-passenger-number/**'
pack-unpack-data:
- '.github/workflows/test.yml'
- 'embedded/pack-unpack-data/**'
prometheus:
- '.github/workflows/test.yml'
- 'data-storage/prometheus/**'
quantum-computing:
- '.github/workflows/test.yml'
- 'quantum-computing/**'
reinforcement-learning-cart-pole:
- '.github/workflows/test.yml'
- 'machine-learning/reinforcement-learning/cart-pole/**'
robot-operating-system:
- '.github/workflows/test.yml'
- 'robotics/robot-operating-system/**'
udp-receiver:
- '.github/workflows/test.yml'
- 'network-programmability/udp/udp-receiver/**'
udp-sender:
- '.github/workflows/test.yml'
- 'network-programmability/udp/udp-sender/**'
web:
- '.github/workflows/test.yml'
- 'web/**'
web-cypress:
- '.github/workflows/test.yml'
- 'web-cypress/**'
windows-calculator:
- '.github/workflows/test.yml'
- 'operating-system/windows/calculator/**'
# lint:
# name: Lint
# uses: ./.github/workflows/.lint.yml
#
# static-type-check:
# name: Static Type Check
# uses: ./.github/workflows/.static-type-check.yml
#
# web-test:
# name: Web | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.web == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up Node.js
# uses: actions/[email protected]
# with:
# node-version-file: web/.node-version
# cache: npm
# cache-dependency-path: web/package-lock.json
# - name: Install dependencies
# working-directory: web
# run: |
# npm ci
# - name: Test
# working-directory: web
# run: |
# npm run test:coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: web
#
# web-end-to-end-test:
# name: Web | End-to-End Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.api-node == 'true' || needs.detect-changes.outputs.web == 'true' || needs.detect-changes.outputs.web-cypress == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up Node.js
# uses: actions/[email protected]
# with:
# node-version-file: web-cypress/.node-version
# cache: npm
# cache-dependency-path: web-cypress/package-lock.json
# - name: Install dependencies
# working-directory: web-cypress
# run: |
# npm ci
# - name: Pull Docker images
# working-directory: api-node
# run: |
# docker compose --file=docker-compose.cypress.yaml pull
# - name: Cache Docker images
# uses: jpribyl/[email protected]
# continue-on-error: true
# - name: Start Docker
# working-directory: api-node
# run: |
# docker compose --file=docker-compose.cypress.yaml up --detach
# - name: Cypress
# working-directory: web-cypress
# run: |
# npm run test:cypress:headless:58136
# - name: Stop Docker
# working-directory: api-node
# run: |
# docker compose --file=docker-compose.cypress.yaml down
#
# web-lighthouse:
# name: Web | Lighthouse
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.web == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up Node.js
# uses: actions/[email protected]
# with:
# node-version-file: web/.node-version
# cache: npm
# cache-dependency-path: web/package-lock.json
# - name: Install dependencies
# working-directory: web
# run: |
# npm ci
# - name: Build
# working-directory: web
# run: |
# npm run build
# - name: Lighthouse
# working-directory: web
# env:
# LHCI_GITHUB_APP_TOKEN: ${{ secrets.LHCI_GITHUB_APP_TOKEN }}
# run: |
# npm run lighthouse
#
# # https://www.chromatic.com/docs/github-actions
# web-visual-test:
# name: Web | Visual Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.web == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 20
# steps:
# - name: Checkout
# uses: actions/[email protected]
# with:
# # Required to retrieve git history
# fetch-depth: 0
# - name: Set up Node.js
# uses: actions/[email protected]
# with:
# node-version-file: web/.node-version
# cache: npm
# cache-dependency-path: web/package-lock.json
# - name: Install dependencies
# working-directory: web
# run: |
# npm ci
# - name: Build
# working-directory: web
# run: |
# npm run build
# npm run storybook:build
# - name: Publish storybook to Chromatic
# working-directory: web
# run: |
# npm run storybook:publish -- --project-token=${{ secrets.CHROMATIC_PROJECT_TOKEN }} --exit-zero-on-changes
#
# mobile-ios-test:
# name: Mobile - iOS | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.mobile-ios == 'true' }}
# runs-on: macos-14
# environment: test
# timeout-minutes: 90
# env:
# # To use a Gemfile which is not at the root
# # https://github.com/ruby/setup-ruby#caching-bundle-install-automatically
# BUNDLE_GEMFILE: ${{ github.workspace }}/mobile/mobile-ios/Gemfile
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up Xcode
# uses: maxim-lobanov/[email protected]
# with:
# xcode-version: 16.1.0
# - name: Set up Ruby
# uses: ruby/setup-ruby@v1
# with:
# working-directory: mobile/mobile-ios
# bundler-cache: true
# - name: Build
# working-directory: mobile/mobile-ios
# run: |
# xcodebuild build-for-testing \
# -project HMMobile.xcodeproj \
# -scheme HMMobile \
# -destination "platform=iOS Simulator,name=iPhone 16 Pro Max,OS=18.1"
# - name: Test
# uses: wandalen/[email protected]
# with:
# current_path: mobile/mobile-ios
# command: |
# xcodebuild test-without-building \
# -project HMMobile.xcodeproj \
# -scheme HMMobile \
# -destination "platform=iOS Simulator,name=iPhone 16 Pro Max,OS=18.1"
# attempt_limit: 3
# attempt_delay: 2000
# - name: Convert coverage to Cobertura XML format
# working-directory: mobile/mobile-ios
# run: |
# bundle exec slather
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: mobile/mobile-ios
#
# mobile-android-lint:
# name: Mobile - Android | Lint
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.mobile-android == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 30
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up Java
# uses: actions/[email protected]
# with:
# distribution: corretto
# # https://developer.android.com/build/jdks#compileSdk
# java-version: '17'
# cache: gradle
# - name: Lint
# working-directory: mobile/mobile-android
# run: |
# ./gradlew lint
#
# mobile-android-test:
# name: Mobile - Android | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.mobile-android == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 30
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up Java
# uses: actions/[email protected]
# with:
# distribution: corretto
# # https://developer.android.com/build/jdks#compileSdk
# java-version: '17'
# cache: gradle
# - name: Test
# working-directory: mobile/mobile-android
# run: |
# ./gradlew test
#
# mobile-android-instrumented-test:
# name: Mobile - Android | Instrumented Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.mobile-android == 'true' }}
# # Ubuntu displays the message: "You're running a Linux VM where hardware acceleration is not available. Please consider using a macOS VM instead to take advantage of native hardware acceleration support provided by HAXM."
# # https://github.com/ReactiveCircus/android-emulator-runner#a-note-on-vm-acceleration-and-why-we-dont-need-haxm-anymore
# runs-on: macos-13
# environment: test
# timeout-minutes: 30
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up Java
# uses: actions/[email protected]
# with:
# distribution: corretto
# # https://developer.android.com/build/jdks#compileSdk
# java-version: '17'
# cache: gradle
# - name: Instrumented Test
# uses: reactivecircus/[email protected]
# with:
# working-directory: mobile/mobile-android
# arch: x86_64
# api-level: 35
# script: ./gradlew connectedAndroidTest
#
# mobile-react-native-test:
# name: Mobile - React Native | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.mobile-react-native == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up Node.js
# uses: actions/[email protected]
# with:
# node-version-file: mobile/mobile-react-native/.node-version
# cache: npm
# cache-dependency-path: mobile/mobile-react-native/package-lock.json
# - name: Install dependencies
# working-directory: mobile/mobile-react-native
# run: |
# npm ci
# - name: Test
# working-directory: mobile/mobile-react-native
# run: |
# npm run test:coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: mobile/mobile-react-native
#
# api-go-test:
# name: API - Go | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.api-go == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up Go
# uses: actions/[email protected]
# with:
# go-version-file: api-go/go.mod
# cache-dependency-path: api-go/go.sum
# - name: Test
# working-directory: api-go
# run: |
# go test ./... -race -coverprofile=coverage.txt -covermode=atomic
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: api-go
#
# api-node-test:
# name: API - Node.js | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.api-node == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up Node.js
# uses: actions/[email protected]
# with:
# node-version-file: api-node/.node-version
# cache: npm
# cache-dependency-path: api-node/package-lock.json
# - name: Install dependencies
# working-directory: api-node
# run: |
# npm ci
# - name: Test
# working-directory: api-node
# run: |
# npm run test:coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: api-node
#
# api-node-mutation-test:
# name: API - Node.js | Mutation Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.api-node == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up Node.js
# uses: actions/[email protected]
# with:
# node-version-file: api-node/.node-version
# cache: npm
# cache-dependency-path: api-node/package-lock.json
# - name: Install dependencies
# working-directory: api-node
# run: |
# npm ci
# - name: Stryker
# working-directory: api-node
# env:
# STRYKER_DASHBOARD_API_KEY: ${{ secrets.STRYKER_DASHBOARD_API_KEY }}
# run: |
# npm run test:stryker
#
# api-python-test:
# name: API - Python | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.api-python == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# # librdkafka is for confluent-kafka
# - name: Install librdkafka
# run: |
# # https://github.com/confluentinc/librdkafka#build-from-source
# wget --no-verbose --output-document=librdkafka.tar.gz https://github.com/edenhill/librdkafka/archive/refs/tags/v2.6.0.tar.gz
# tar -x -f librdkafka.tar.gz
# rm -f librdkafka.tar.gz
# cd librdkafka-2.6.0
# ./configure
# make
# sudo make install
# sudo ldconfig
# cd ..
# rm -r -f librdkafka-2.6.0/
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: api-python/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: api-python/pyproject.toml
# - name: Install dependencies
# working-directory: api-python
# run: |
# uv sync --dev
# - name: Test
# working-directory: api-python
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: api-python
api-rust-test:
name: API - Rust | Test
needs: detect-changes
if: ${{ needs.detect-changes.outputs.api-rust == 'true' }}
runs-on: ubuntu-24.04
environment: test
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/[email protected]
- name: Install OpenCV
run: |
sudo apt install libopencv-dev
- name: Set up Rust
uses: actions-rust-lang/[email protected]
- name: Install dependencies
working-directory: api-rust
run: |
cargo build
- name: Test
working-directory: api-rust
run: |
cargo test --all-features
# airflow-test:
# name: Airflow | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-airflow == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: data-orchestration/hm-airflow/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: data-orchestration/hm-airflow/pyproject.toml
# - name: Install dependencies
# working-directory: data-orchestration/hm-airflow
# run: |
# uv sync --dev
# - name: Test
# working-directory: data-orchestration/hm-airflow
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: data-orchestration/hm-airflow
#
# amazon-sagemaker-pytorch-mnist-test:
# name: Amazon SageMaker (pytorch-mnist) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.amazon-sagemaker-pytorch-mnist == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: cloud-platform/aws/amazon-sagemaker/pytorch-mnist/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: cloud-platform/aws/amazon-sagemaker/pytorch-mnist/pyproject.toml
# - name: Install dependencies
# working-directory: cloud-platform/aws/amazon-sagemaker/pytorch-mnist
# run: |
# uv sync --dev
# - name: Test
# working-directory: cloud-platform/aws/amazon-sagemaker/pytorch-mnist
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: cloud-platform/aws/amazon-sagemaker/pytorch-mnist
#
# amazon-sagamaker-triton-resnet-50-deploy-test:
# name: Amazon SageMaker Triton ResNet 50 (Deploy) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.amazon-sagamaker-triton-resnet-50-deploy == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/triton/amazon-sagamaker-triton-resnet-50/deploy/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/triton/amazon-sagamaker-triton-resnet-50/deploy/pyproject.toml
# - name: Install dependencies
# working-directory: machine-learning/triton/amazon-sagamaker-triton-resnet-50/deploy
# run: |
# uv sync --dev
# - name: Test
# working-directory: machine-learning/triton/amazon-sagamaker-triton-resnet-50/deploy
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: machine-learning/triton/amazon-sagamaker-triton-resnet-50/deploy
#
# amazon-sagamaker-triton-resnet-50-infer-test:
# name: Amazon SageMaker Triton ResNet 50 (Infer) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.amazon-sagamaker-triton-resnet-50-infer == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/triton/amazon-sagamaker-triton-resnet-50/infer/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/triton/amazon-sagamaker-triton-resnet-50/infer/pyproject.toml
# - name: Install dependencies
# working-directory: machine-learning/triton/amazon-sagamaker-triton-resnet-50/infer
# run: |
# uv sync --dev
# - name: Test
# working-directory: machine-learning/triton/amazon-sagamaker-triton-resnet-50/infer
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: machine-learning/triton/amazon-sagamaker-triton-resnet-50/infer
#
# production-aws-glue-spark-scripts-test:
# name: AWS Glue (production spark-scripts) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.production-aws-glue-spark-scripts == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: cloud-infrastructure/terraform/environments/production/aws/general/files/aws-glue/spark-scripts/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: cloud-infrastructure/terraform/environments/production/aws/general/files/aws-glue/spark-scripts/pyproject.toml
# - name: Install dependencies
# working-directory: cloud-infrastructure/terraform/environments/production/aws/general/files/aws-glue/spark-scripts
# run: |
# uv sync --dev
# - name: Test
# working-directory: cloud-infrastructure/terraform/environments/production/aws/general/files/aws-glue/spark-scripts
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: cloud-infrastructure/terraform/environments/production/aws/general/files/aws-glue/spark-scripts
#
# aws-parallelcluster-test:
# name: AWS ParallelCluster | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-aws-parallelcluster == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: cloud-platform/aws/aws-parallelcluster/pcluster/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: cloud-platform/aws/aws-parallelcluster/pcluster/pyproject.toml
# - name: Install dependencies
# working-directory: cloud-platform/aws/aws-parallelcluster/pcluster
# run: |
# uv sync --dev
# - name: Test
# working-directory: cloud-platform/aws/aws-parallelcluster/pcluster
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: cloud-platform/aws/aws-parallelcluster/pcluster
#
# call-matlab-function-in-python:
# name: Call MATLAB Function in Python | Test
# needs: detect-changes
# if: ${{ false }}
# # if: ${{ needs.detect-changes.outputs.call-matlab-function-in-python == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up MATLAB
# uses: matlab-actions/[email protected]
# with:
# release: R2024a
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: matlab/call-matlab-function-in-python/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: matlab/call-matlab-function-in-python/pyproject.toml
# - name: Install dependencies
# working-directory: matlab/call-matlab-function-in-python
# run: |
# uv sync --dev
# - name: Test
# working-directory: matlab/call-matlab-function-in-python
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: matlab/call-matlab-function-in-python
#
# decode-can-data-test:
# name: Decode CAN Data | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.decode-can-data == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: embedded/decode-can-data/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: embedded/decode-can-data/pyproject.toml
# - name: Install dependencies
# working-directory: embedded/decode-can-data
# run: |
# uv sync --dev
# - name: Test
# working-directory: embedded/decode-can-data
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: embedded/decode-can-data
#
# format-can-data-test:
# name: Format CAN Data | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.format-can-data == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: embedded/format-can-data/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: embedded/format-can-data/pyproject.toml
# - name: Install dependencies
# working-directory: embedded/format-can-data
# run: |
# uv sync --dev
# - name: Test
# working-directory: embedded/format-can-data
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: embedded/format-can-data
#
# data-distribution-service-test:
# name: Data Distribution Service | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.data-distribution-service == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: data-distribution-service/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: data-distribution-service/pyproject.toml
# - name: Install dependencies
# working-directory: data-distribution-service
# run: |
# uv sync --dev
# - name: Test
# working-directory: data-distribution-service
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: data-distribution-service
#
# dbt-hm-postgres-test:
# name: dbt (hm-postgres) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.dbt-hm-postgres == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: data-transformation/dbt/projects/dbt_hm_postgres/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: data-transformation/dbt/projects/dbt_hm_postgres/pyproject.toml
# - name: Install dependencies
# working-directory: data-transformation/dbt/projects/dbt_hm_postgres
# run: |
# uv sync --dev
# - name: Test
# working-directory: data-transformation/dbt/projects/dbt_hm_postgres
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: data-transformation/dbt/projects/dbt_hm_postgres
#
# delta-lake-read-delta-lake-by-amazon-athena-test:
# name: Delta Lake (read-delta-lake-by-amazon-athena) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.delta-lake-read-delta-lake-by-amazon-athena == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: data-storage/delta-lake/read-delta-lake-by-amazon-athena/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: data-storage/delta-lake/read-delta-lake-by-amazon-athena/pyproject.toml
# - name: Install dependencies
# working-directory: data-storage/delta-lake/read-delta-lake-by-amazon-athena
# run: |
# uv sync --dev
# - name: Test
# working-directory: data-storage/delta-lake/read-delta-lake-by-amazon-athena
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: data-storage/delta-lake/read-delta-lake-by-amazon-athena
#
# delta-lake-read-delta-lake-by-trino-test:
# name: Delta Lake (read-delta-lake-by-trino) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.delta-lake-read-delta-lake-by-trino == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: data-storage/delta-lake/read-delta-lake-by-trino/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: data-storage/delta-lake/read-delta-lake-by-trino/pyproject.toml
# - name: Install dependencies
# working-directory: data-storage/delta-lake/read-delta-lake-by-trino
# run: |
# uv sync --dev
# - name: Test
# working-directory: data-storage/delta-lake/read-delta-lake-by-trino
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: data-storage/delta-lake/read-delta-lake-by-trino
#
# delta-lake-write-to-delta-lake-test:
# name: Delta Lake (write-to-delta-lake) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.delta-lake-write-to-delta-lake == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: data-storage/delta-lake/write-to-delta-lake/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: data-storage/delta-lake/write-to-delta-lake/pyproject.toml
# - name: Install dependencies
# working-directory: data-storage/delta-lake/write-to-delta-lake
# run: |
# uv sync --dev
# - name: Test
# working-directory: data-storage/delta-lake/write-to-delta-lake
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: data-storage/delta-lake/write-to-delta-lake
#
# duckdb-test:
# name: DuckDB | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-duckdb == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: data-storage/hm-duckdb/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: data-storage/hm-duckdb/pyproject.toml
# - name: Install dependencies
# working-directory: data-storage/hm-duckdb
# run: |
# uv sync --dev
# - name: Test
# working-directory: data-storage/hm-duckdb
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: data-storage/hm-duckdb
#
# autogluon-test:
# name: AutoGluon | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-autogluon == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/hm-autogluon/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/hm-autogluon/pyproject.toml
# - name: Install dependencies
# working-directory: machine-learning/hm-autogluon
# run: |
# uv sync --dev
# - name: Test
# working-directory: machine-learning/hm-autogluon
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: machine-learning/hm-autogluon
#
# feature-store-test:
# name: Feature Store | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.feature-store == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/feature-store/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/feature-store/pyproject.toml
# - name: Install dependencies
# working-directory: machine-learning/feature-store
# run: |
# uv sync --dev
# - name: Test
# working-directory: machine-learning/feature-store
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: machine-learning/feature-store
#
# geopandas-test:
# name: GeoPandas | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-geopandas == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: data-analytics/hm-geopandas/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: data-analytics/hm-geopandas/pyproject.toml
# - name: Install dependencies
# working-directory: data-analytics/hm-geopandas
# run: |
# uv sync --dev
# - name: Test
# working-directory: data-analytics/hm-geopandas
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: data-analytics/hm-geopandas
#
# hugging-face-analyze-sentiment-test:
# name: Hugging Face (analyze-sentiment) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hugging-face-analyze-sentiment == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/hugging-face/analyze-sentiment/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/hugging-face/analyze-sentiment/pyproject.toml
# - name: Install dependencies
# working-directory: machine-learning/hugging-face/analyze-sentiment
# run: |
# uv sync --dev
# - name: Test
# working-directory: machine-learning/hugging-face/analyze-sentiment
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: machine-learning/hugging-face/analyze-sentiment
#
# gradio-classify-image-test:
# name: Gradio (classify-image) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-gradio-classify-image == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/hm-gradio/applications/classify-image/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/hm-gradio/applications/classify-image/pyproject.toml
# - name: Install dependencies
# working-directory: machine-learning/hm-gradio/applications/classify-image
# run: |
# uv sync --dev
# - name: Test
# working-directory: machine-learning/hm-gradio/applications/classify-image
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: machine-learning/hm-gradio/applications/classify-image
#
# streamlit-live-line-chart-test:
# name: Streamlit (live-line-chart) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-streamlit-live-line-chart == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/hm-streamlit/applications/live-line-chart/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/hm-streamlit/applications/live-line-chart/pyproject.toml
# - name: Install dependencies
# working-directory: machine-learning/hm-streamlit/applications/live-line-chart
# run: |
# uv sync --dev
# - name: Test
# working-directory: machine-learning/hm-streamlit/applications/live-line-chart
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: machine-learning/hm-streamlit/applications/live-line-chart
#
# streamlit-map-test:
# name: Streamlit (map) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-streamlit-map == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/hm-streamlit/applications/map/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/hm-streamlit/applications/map/pyproject.toml
# - name: Install dependencies
# working-directory: machine-learning/hm-streamlit/applications/map
# run: |
# uv sync --dev
# - name: Test
# working-directory: machine-learning/hm-streamlit/applications/map
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: machine-learning/hm-streamlit/applications/map
#
# jax-test:
# name: JAX | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-jax == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: high-performance-computing/hm-jax/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: high-performance-computing/hm-jax/pyproject.toml
# - name: Install dependencies
# working-directory: high-performance-computing/hm-jax
# run: |
# uv sync --dev
# - name: Test
# working-directory: high-performance-computing/hm-jax
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: high-performance-computing/hm-jax
#
# flax-test:
# name: Flax | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-flax == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/hm-flax/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/hm-flax/pyproject.toml
# - name: Install dependencies
# working-directory: machine-learning/hm-flax
# run: |
# uv sync --dev
# - name: Test
# working-directory: machine-learning/hm-flax
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: machine-learning/hm-flax
#
# kubeflow-calculate-test:
# name: Kubeflow (calculate) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-kubeflow-calculate == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/hm-kubeflow/pipelines/calculate/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/hm-kubeflow/pipelines/calculate/pyproject.toml
# - name: Install dependencies
# working-directory: machine-learning/hm-kubeflow/pipelines/calculate
# run: |
# uv sync --dev
# - name: Test
# working-directory: machine-learning/hm-kubeflow/pipelines/calculate
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: machine-learning/hm-kubeflow/pipelines/calculate
#
# kubeflow-classify-mnist-test:
# name: Kubeflow (classify-mnist) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-kubeflow-classify-mnist == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/hm-kubeflow/pipelines/classify-mnist/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/hm-kubeflow/pipelines/classify-mnist/pyproject.toml
# - name: Install dependencies
# working-directory: machine-learning/hm-kubeflow/pipelines/classify-mnist
# run: |
# uv sync --dev
# - name: Test
# working-directory: machine-learning/hm-kubeflow/pipelines/classify-mnist
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: machine-learning/hm-kubeflow/pipelines/classify-mnist
#
# langchain-chat-pdf-test:
# name: LangChain (chat-pdf) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-langchain-chat-pdf == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/hm-langchain/applications/chat-pdf/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/hm-langchain/applications/chat-pdf/pyproject.toml
# - name: Install dependencies
# working-directory: machine-learning/hm-langchain/applications/chat-pdf
# run: |
# uv sync --dev
# - name: Test
# working-directory: machine-learning/hm-langchain/applications/chat-pdf
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: machine-learning/hm-langchain/applications/chat-pdf
#
# mlflow-classify-mnist-test:
# name: MLflow (classify-mnist) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-mlflow-classify-mnist == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/hm-mlflow/experiments/classify-mnist/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/hm-mlflow/experiments/classify-mnist/pyproject.toml
# - name: Install dependencies
# working-directory: machine-learning/hm-mlflow/experiments/classify-mnist
# run: |
# uv sync --dev
# - name: Test
# working-directory: machine-learning/hm-mlflow/experiments/classify-mnist
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: machine-learning/hm-mlflow/experiments/classify-mnist
#
# mlflow-predict-diabetes-test:
# name: MLflow (predict-diabetes) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-mlflow-predict-diabetes == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/hm-mlflow/experiments/predict-diabetes/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/hm-mlflow/experiments/predict-diabetes/pyproject.toml
# - name: Install dependencies
# working-directory: machine-learning/hm-mlflow/experiments/predict-diabetes
# run: |
# uv sync --dev
# - name: Test
# working-directory: machine-learning/hm-mlflow/experiments/predict-diabetes
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: machine-learning/hm-mlflow/experiments/predict-diabetes
#
# neural-forecasting-forecast-air-passenger-number-test:
# name: Neural Forecasting (forecast-air-passenger-number) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.neural-forecasting-forecast-air-passenger-number == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/neural-forecasting/forecast-air-passenger-number/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/neural-forecasting/forecast-air-passenger-number/pyproject.toml
# - name: Install dependencies
# working-directory: machine-learning/neural-forecasting/forecast-air-passenger-number
# run: |
# uv sync --dev
# - name: Test
# working-directory: machine-learning/neural-forecasting/forecast-air-passenger-number
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: machine-learning/neural-forecasting/forecast-air-passenger-number
#
# national-instruments-hm-pyvisa-test:
# name: National Instruments (pyvisa) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.national-instruments-hm-pyvisa == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: hardware-in-the-loop/national-instruments/hm-pyvisa/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: hardware-in-the-loop/national-instruments/hm-pyvisa/pyproject.toml
# - name: Install dependencies
# working-directory: hardware-in-the-loop/national-instruments/hm-pyvisa
# run: |
# uv sync --dev
# - name: Test
# working-directory: hardware-in-the-loop/national-instruments/hm-pyvisa
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: hardware-in-the-loop/national-instruments/hm-pyvisa
#
# national-instruments-hm-tdms-test:
# name: National Instruments (tdms) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.national-instruments-hm-tdms == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: hardware-in-the-loop/national-instruments/hm-tdms/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: hardware-in-the-loop/national-instruments/hm-tdms/pyproject.toml
# - name: Install dependencies
# working-directory: hardware-in-the-loop/national-instruments/hm-tdms
# run: |
# uv sync --dev
# - name: Test
# working-directory: hardware-in-the-loop/national-instruments/hm-tdms
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: hardware-in-the-loop/national-instruments/hm-tdms
#
# national-instruments-hm-veristand-test:
# name: National Instruments (ni-veristand) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.national-instruments-hm-veristand == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: hardware-in-the-loop/national-instruments/veristand/hm-veristand/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: hardware-in-the-loop/national-instruments/veristand/hm-veristand/pyproject.toml
# - name: Install dependencies
# working-directory: hardware-in-the-loop/national-instruments/veristand/hm-veristand
# run: |
# uv sync --dev
# - name: Test
# working-directory: hardware-in-the-loop/national-instruments/veristand/hm-veristand
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: hardware-in-the-loop/national-instruments/veristand/hm-veristand
#
# open3d-test:
# name: Open3D | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-open3d == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: computer-vision/hm-open3d/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: computer-vision/hm-open3d/pyproject.toml
# - name: Install dependencies
# working-directory: computer-vision/hm-open3d
# run: |
# uv sync --dev
# - name: Test
# working-directory: computer-vision/hm-open3d
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: computer-vision/hm-open3d
#
# aerosandbox-test:
# name: AeroSandbox | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-aerosandbox == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: aerospace/hm-aerosandbox/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: aerospace/hm-aerosandbox/pyproject.toml
# - name: Install dependencies
# working-directory: aerospace/hm-aerosandbox
# run: |
# uv sync --dev
# - name: Test
# working-directory: aerospace/hm-aerosandbox
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: aerospace/hm-aerosandbox
#
# openaerostruct-test:
# name: OpenAeroStruct | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-openaerostruct == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: aerospace/hm-openaerostruct/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: aerospace/hm-openaerostruct/pyproject.toml
# - name: Install dependencies
# working-directory: aerospace/hm-openaerostruct
# run: |
# uv sync --dev
# - name: Test
# working-directory: aerospace/hm-openaerostruct
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: aerospace/hm-openaerostruct
#
# prefect-calculate-test:
# name: Prefect (calculate) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-prefect-calculate == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: data-orchestration/hm-prefect/workflows/calculate/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: data-orchestration/hm-prefect/workflows/calculate/pyproject.toml
# - name: Install dependencies
# working-directory: data-orchestration/hm-prefect/workflows/calculate
# run: |
# uv sync --dev
# - name: Test
# working-directory: data-orchestration/hm-prefect/workflows/calculate
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: data-orchestration/hm-prefect/workflows/calculate
#
# prefect-greet-test:
# name: Prefect (greet) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-prefect-greet == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: data-orchestration/hm-prefect/workflows/greet/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: data-orchestration/hm-prefect/workflows/greet/pyproject.toml
# - name: Install dependencies
# working-directory: data-orchestration/hm-prefect/workflows/greet
# run: |
# uv sync --dev
# - name: Test
# working-directory: data-orchestration/hm-prefect/workflows/greet
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: data-orchestration/hm-prefect/workflows/greet
#
# prefect-print-platform-test:
# name: Prefect (print-platform) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-prefect-print-platform == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: data-orchestration/hm-prefect/workflows/print-platform/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: data-orchestration/hm-prefect/workflows/print-platform/pyproject.toml
# - name: Install dependencies
# working-directory: data-orchestration/hm-prefect/workflows/print-platform
# run: |
# uv sync --dev
# - name: Test
# working-directory: data-orchestration/hm-prefect/workflows/print-platform
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: data-orchestration/hm-prefect/workflows/print-platform
#
# prowler-test:
# name: Prowler | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-prowler == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: cloud-security/hm-prowler/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: cloud-security/hm-prowler/pyproject.toml
# - name: Install dependencies
# working-directory: cloud-security/hm-prowler
# run: |
# uv sync --dev
# - name: Test
# working-directory: cloud-security/hm-prowler
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: cloud-security/hm-prowler
#
# pulumi-test:
# name: Pulumi | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-pulumi == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: cloud-infrastructure/hm-pulumi/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: cloud-infrastructure/hm-pulumi/pyproject.toml
# - name: Install dependencies
# working-directory: cloud-infrastructure/hm-pulumi
# run: |
# uv sync --dev
# - name: Test
# working-directory: cloud-infrastructure/hm-pulumi
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: cloud-infrastructure/hm-pulumi
#
# pyvista-mount-saint-helens-test:
# name: PyVista (mount-saint-helens) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-pyvista-mount-saint-helens == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: computer-vision/hm-pyvista/mount-saint-helens/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: computer-vision/hm-pyvista/mount-saint-helens/pyproject.toml
# - name: Install dependencies
# working-directory: computer-vision/hm-pyvista/mount-saint-helens
# run: |
# uv sync --dev
# - name: Test
# working-directory: computer-vision/hm-pyvista/mount-saint-helens
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: computer-vision/hm-pyvista/mount-saint-helens
#
# ray-calculate-test:
# name: Ray (calculate) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-ray-calculate == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: cloud-computing/hm-ray/applications/calculate/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: cloud-computing/hm-ray/applications/calculate/pyproject.toml
# - name: Install dependencies
# working-directory: cloud-computing/hm-ray/applications/calculate
# run: |
# uv sync --dev
# - name: Test
# working-directory: cloud-computing/hm-ray/applications/calculate
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: cloud-computing/hm-ray/applications/calculate
#
# ray-process-flight-data-test:
# name: Ray (process-flight-data) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-ray-process-flight-data == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: cloud-computing/hm-ray/applications/process-flight-data/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: cloud-computing/hm-ray/applications/process-flight-data/pyproject.toml
# - name: Install dependencies
# working-directory: cloud-computing/hm-ray/applications/process-flight-data
# run: |
# uv sync --dev
# - name: Test
# working-directory: cloud-computing/hm-ray/applications/process-flight-data
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: cloud-computing/hm-ray/applications/process-flight-data
#
# reinforcement-learning-cart-pole-test:
# name: Reinforcement Learning (cart-pole) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.reinforcement-learning-cart-pole == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/reinforcement-learning/cart-pole/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/reinforcement-learning/cart-pole/pyproject.toml
# - name: Install dependencies
# working-directory: machine-learning/reinforcement-learning/cart-pole
# run: |
# uv sync --dev
# - name: Test
# working-directory: machine-learning/reinforcement-learning/cart-pole
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: machine-learning/reinforcement-learning/cart-pole
#
# serial-test:
# name: Serial | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-serial == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: embedded/hm-serial/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: embedded/hm-serial/pyproject.toml
# - name: Install dependencies
# working-directory: embedded/hm-serial
# run: |
# uv sync --dev
# - name: Test
# working-directory: embedded/hm-serial
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: embedded/hm-serial
#
# pack-unpack-data-test:
# name: Pack Unpack Data | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.pack-unpack-data == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: embedded/pack-unpack-data/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: embedded/pack-unpack-data/pyproject.toml
# - name: Install dependencies
# working-directory: embedded/pack-unpack-data
# run: |
# uv sync --dev
# - name: Test
# working-directory: embedded/pack-unpack-data
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: embedded/pack-unpack-data
#
# skypilot-test:
# name: SkyPilot | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-skypilot == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: cloud-computing/hm-skypilot/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: cloud-computing/hm-skypilot/pyproject.toml
# - name: Install dependencies
# working-directory: cloud-computing/hm-skypilot
# run: |
# uv sync --dev
# - name: Test
# working-directory: cloud-computing/hm-skypilot
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: cloud-computing/hm-skypilot
#
# quantum-computing-test:
# name: Quantum Computing | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.quantum-computing == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: quantum-computing/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: quantum-computing/pyproject.toml
# - name: Install dependencies
# working-directory: quantum-computing
# run: |
# uv sync --dev
# - name: Test
# working-directory: quantum-computing
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: quantum-computing
#
# supervision-detect-objects-test:
# name: supervision (detect-objects) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-supervision-detect-objects == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/hm-supervision/detect-objects/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/hm-supervision/detect-objects/pyproject.toml
# - name: Install dependencies
# working-directory: machine-learning/hm-supervision/detect-objects
# run: |
# uv sync --dev
# - name: Test
# working-directory: machine-learning/hm-supervision/detect-objects
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: machine-learning/hm-supervision/detect-objects
#
# xxhash-test:
# name: xxHash | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-xxhash == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: hm-xxhash/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: hm-xxhash/pyproject.toml
# - name: Install dependencies
# working-directory: hm-xxhash
# run: |
# uv sync --dev
# - name: Test
# working-directory: hm-xxhash
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: hm-xxhash
#
# spark-analyze-coffee-customers-test:
# name: Spark (analyze-coffee-customers) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-spark-analyze-coffee-customers == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: data-processing/hm-spark/applications/analyze-coffee-customers/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: data-processing/hm-spark/applications/analyze-coffee-customers/pyproject.toml
# - name: Install dependencies
# working-directory: data-processing/hm-spark/applications/analyze-coffee-customers
# run: |
# uv sync --dev
# - name: Test
# working-directory: data-processing/hm-spark/applications/analyze-coffee-customers
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: data-processing/hm-spark/applications/analyze-coffee-customers
#
# spark-find-retired-people-python-test:
# name: Spark (find-retired-people-python) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-spark-find-retired-people-python == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: data-processing/hm-spark/applications/find-retired-people-python/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: data-processing/hm-spark/applications/find-retired-people-python/pyproject.toml
# - name: Install dependencies
# working-directory: data-processing/hm-spark/applications/find-retired-people-python
# run: |
# uv sync --dev
# - name: Test
# working-directory: data-processing/hm-spark/applications/find-retired-people-python
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: data-processing/hm-spark/applications/find-retired-people-python
#
# spark-find-retired-people-scala-test:
# name: Spark (find-retired-people-scala) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-spark-find-retired-people-scala == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up Java
# uses: actions/[email protected]
# with:
# distribution: corretto
# java-version: '17'
# cache: sbt
# - name: Set up sbt
# uses: sbt/[email protected]
# - name: Test
# working-directory: data-processing/hm-spark/applications/find-retired-people-scala
# run: |
# sbt test
#
# spark-find-taxi-top-routes-test:
# name: Spark (find-taxi-top-routes) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-spark-find-taxi-top-routes == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: data-processing/hm-spark/applications/find-taxi-top-routes/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: data-processing/hm-spark/applications/find-taxi-top-routes/pyproject.toml
# - name: Install dependencies
# working-directory: data-processing/hm-spark/applications/find-taxi-top-routes
# run: |
# uv sync --dev
# - name: Test
# working-directory: data-processing/hm-spark/applications/find-taxi-top-routes
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: data-processing/hm-spark/applications/find-taxi-top-routes
#
# spark-find-taxi-top-routes-sql-test:
# name: Spark (find-taxi-top-routes-sql) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-spark-find-taxi-top-routes-sql == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: data-processing/hm-spark/applications/find-taxi-top-routes-sql/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: data-processing/hm-spark/applications/find-taxi-top-routes-sql/pyproject.toml
# - name: Install dependencies
# working-directory: data-processing/hm-spark/applications/find-taxi-top-routes-sql
# run: |
# uv sync --dev
# - name: Test
# working-directory: data-processing/hm-spark/applications/find-taxi-top-routes-sql
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: data-processing/hm-spark/applications/find-taxi-top-routes-sql
#
# spark-ingest-from-s3-to-kafka-test:
# name: Spark (ingest-from-s3-to-kafka) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-spark-ingest-from-s3-to-kafka == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up Java
# uses: actions/[email protected]
# with:
# distribution: corretto
# java-version: '17'
# cache: sbt
# - name: Set up sbt
# uses: sbt/[email protected]
# - name: Test
# working-directory: data-processing/hm-spark/applications/ingest-from-s3-to-kafka
# run: |
# sbt test
#
# spark-recommend-movies-test:
# name: Spark (recommend-movies) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-spark-recommend-movies == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: data-processing/hm-spark/applications/recommend-movies/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: data-processing/hm-spark/applications/recommend-movies/pyproject.toml
# - name: Install dependencies
# working-directory: data-processing/hm-spark/applications/recommend-movies
# run: |
# uv sync --dev
# - name: Test
# working-directory: data-processing/hm-spark/applications/recommend-movies
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: data-processing/hm-spark/applications/recommend-movies
#
# flink-stream-tweets-test:
# name: Flink (stream-tweets) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.flink-stream-tweets == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up Java
# uses: actions/[email protected]
# with:
# distribution: corretto
# java-version: '11'
# cache: maven
# - name: Test
# working-directory: data-processing/flink/applications/stream-tweets
# run: |
# mvn test
#
# kafka-rust-proto-consumer-test:
# name: Kafka Rust (proto-consumer) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.kafka-rust-proto-consumer == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# # librdkafka is for rdkafka
# - name: Install librdkafka
# run: |
# # https://github.com/confluentinc/librdkafka#build-from-source
# wget --no-verbose --output-document=librdkafka.tar.gz https://github.com/edenhill/librdkafka/archive/refs/tags/v2.6.0.tar.gz
# tar -x -f librdkafka.tar.gz
# rm -f librdkafka.tar.gz
# cd librdkafka-2.6.0
# ./configure
# make
# sudo make install
# sudo ldconfig
# cd ..
# rm -r -f librdkafka-2.6.0/
# # protoc is for prost
# - name: Install protoc
# uses: arduino/[email protected]
# with:
# repo-token: ${{ secrets.GITHUB_TOKEN }}
# version: 28.3
# - name: Set up Rust
# uses: actions-rust-lang/[email protected]
# - name: Install dependencies
# working-directory: hm-kafka/kafka-client/kafka-rust/proto-consumer
# run: |
# cargo build
# - name: Test
# working-directory: hm-kafka/kafka-client/kafka-rust/proto-consumer
# run: |
# cargo test --all-features
#
# kafka-rust-proto-producer-test:
# name: Kafka Rust (proto-producer) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.kafka-rust-proto-producer == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# # librdkafka is for rdkafka
# - name: Install librdkafka
# run: |
# # https://github.com/confluentinc/librdkafka#build-from-source
# wget --no-verbose --output-document=librdkafka.tar.gz https://github.com/edenhill/librdkafka/archive/refs/tags/v2.6.0.tar.gz
# tar -x -f librdkafka.tar.gz
# rm -f librdkafka.tar.gz
# cd librdkafka-2.6.0
# ./configure
# make
# sudo make install
# sudo ldconfig
# cd ..
# rm -r -f librdkafka-2.6.0/
# # protoc is for prost
# - name: Install protoc
# uses: arduino/[email protected]
# with:
# repo-token: ${{ secrets.GITHUB_TOKEN }}
# version: 28.3
# - name: Set up Rust
# uses: actions-rust-lang/[email protected]
# - name: Install dependencies
# working-directory: hm-kafka/kafka-client/kafka-rust/proto-producer
# run: |
# cargo build
# - name: Test
# working-directory: hm-kafka/kafka-client/kafka-rust/proto-producer
# run: |
# cargo test --all-features
#
# kafka-rust-udp-kafka-bridge-test:
# name: Kafka Rust (udp-kafka-bridge) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.kafka-rust-udp-kafka-bridge == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# # librdkafka is for rdkafka
# - name: Install librdkafka
# run: |
# # https://github.com/confluentinc/librdkafka#build-from-source
# wget --no-verbose --output-document=librdkafka.tar.gz https://github.com/edenhill/librdkafka/archive/refs/tags/v2.6.0.tar.gz
# tar -x -f librdkafka.tar.gz
# rm -f librdkafka.tar.gz
# cd librdkafka-2.6.0
# ./configure
# make
# sudo make install
# sudo ldconfig
# cd ..
# rm -r -f librdkafka-2.6.0/
# # protoc is for prost
# - name: Install protoc
# uses: arduino/[email protected]
# with:
# repo-token: ${{ secrets.GITHUB_TOKEN }}
# version: 28.3
# - name: Set up Rust
# uses: actions-rust-lang/[email protected]
# - name: Install dependencies
# working-directory: hm-kafka/kafka-client/kafka-rust/udp-kafka-bridge
# run: |
# cargo build
# - name: Test
# working-directory: hm-kafka/kafka-client/kafka-rust/udp-kafka-bridge
# run: |
# cargo test --all-features
#
# kafka-rust-zeromq-kafka-bridge-test:
# name: Kafka Rust (zeromq-kafka-bridge) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.kafka-rust-zeromq-kafka-bridge == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# # librdkafka is for rdkafka
# - name: Install librdkafka
# run: |
# # https://github.com/confluentinc/librdkafka#build-from-source
# wget --no-verbose --output-document=librdkafka.tar.gz https://github.com/edenhill/librdkafka/archive/refs/tags/v2.6.0.tar.gz
# tar -x -f librdkafka.tar.gz
# rm -f librdkafka.tar.gz
# cd librdkafka-2.6.0
# ./configure
# make
# sudo make install
# sudo ldconfig
# cd ..
# rm -r -f librdkafka-2.6.0/
# # protoc is for prost
# - name: Install protoc
# uses: arduino/[email protected]
# with:
# repo-token: ${{ secrets.GITHUB_TOKEN }}
# version: 28.3
# - name: Set up Rust
# uses: actions-rust-lang/[email protected]
# - name: Install dependencies
# working-directory: hm-kafka/kafka-client/kafka-rust/zeromq-kafka-bridge
# run: |
# cargo build
# - name: Test
# working-directory: hm-kafka/kafka-client/kafka-rust/zeromq-kafka-bridge
# run: |
# cargo test --all-features
#
# udp-receiver-test:
# name: UDP Receiver | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.udp-receiver == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# # protoc is for prost
# - name: Install protoc
# uses: arduino/[email protected]
# with:
# repo-token: ${{ secrets.GITHUB_TOKEN }}
# version: 28.3
# - name: Set up Rust
# uses: actions-rust-lang/[email protected]
# - name: Install dependencies
# working-directory: network-programmability/udp/udp-receiver
# run: |
# cargo build
# - name: Test
# working-directory: network-programmability/udp/udp-receiver
# run: |
# cargo test --all-features
#
# udp-sender-test:
# name: UDP Sender | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.udp-sender == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# # protoc is for prost
# - name: Install protoc
# uses: arduino/[email protected]
# with:
# repo-token: ${{ secrets.GITHUB_TOKEN }}
# version: 28.3
# - name: Set up Rust
# uses: actions-rust-lang/[email protected]
# - name: Install dependencies
# working-directory: network-programmability/udp/udp-sender
# run: |
# cargo build
# - name: Test
# working-directory: network-programmability/udp/udp-sender
# run: |
# cargo test --all-features
#
# opa-test:
# name: OPA | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.api-go == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up OPA
# uses: open-policy-agent/[email protected]
# with:
# version: 0.70.0
# - name: Test
# run: |
# opa test api-go/internal/graphql_server/policies/*.rego -v
#
# ros-test:
# name: ROS | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.robot-operating-system == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 20
# container:
# image: ubuntu:noble
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Setup ROS
# uses: ros-tooling/[email protected]
# with:
# required-ros-distributions: jazzy
# - name: Build and test
# uses: ros-tooling/[email protected]
# with:
# package-name: turtle_robot
# target-ros2-distro: jazzy
#
# prometheus-test:
# name: Prometheus | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.prometheus == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Test
# run: |
# docker build --file=data-storage/prometheus/Dockerfile.test .
#
# grafana-hm-dashboard-test:
# name: Grafana (hm-dashboard) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.grafana-hm-dashboard == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: data-visualization/grafana/hm-dashboard/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: data-visualization/grafana/hm-dashboard/pyproject.toml
# - name: Install dependencies
# working-directory: data-visualization/grafana/hm-dashboard
# run: |
# uv sync --dev
# - name: Test
# working-directory: data-visualization/grafana/hm-dashboard
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: data-visualization/grafana/hm-dashboard
#
# grafana-hm-panel-plugin-test:
# name: Grafana (hm-panel-plugin) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.grafana-hm-panel-plugin == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up Node.js
# uses: actions/[email protected]
# with:
# node-version-file: data-visualization/grafana/hm-panel-plugin/.node-version
# cache: npm
# cache-dependency-path: data-visualization/grafana/hm-panel-plugin/package-lock.json
# - name: Install dependencies
# working-directory: data-visualization/grafana/hm-panel-plugin
# run: |
# npm ci
# - name: Test
# working-directory: data-visualization/grafana/hm-panel-plugin
# run: |
# npm run test:coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: data-visualization/grafana/hm-panel-plugin
#
# iads-iads-config-reader-test:
# name: IADS (iads-config-reader) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.iads-iads-config-reader == 'true' }}
# runs-on: windows-2022
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: data-visualization/iads/iads-data-manager/iads-config-reader/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: data-visualization/iads/iads-data-manager/iads-config-reader/pyproject.toml
# - name: Install dependencies
# working-directory: data-visualization/iads/iads-data-manager/iads-config-reader
# run: |
# uv sync --dev
# - name: Test
# working-directory: data-visualization/iads/iads-data-manager/iads-config-reader
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: data-visualization/iads/iads-data-manager/iads-config-reader
#
# iads-iads-data-producer-test:
# name: IADS (iads-data-producer) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.iads-iads-data-producer == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up Rust
# uses: actions-rust-lang/[email protected]
# - name: Install dependencies
# working-directory: data-visualization/iads/iads-rtstation/iads-data-producer
# run: |
# cargo build
# - name: Test
# working-directory: data-visualization/iads/iads-rtstation/iads-data-producer
# run: |
# cargo test --all-features
#
# iads-zeromq-iads-bridge-test:
# name: IADS (zeromq-iads-bridge) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.iads-zeromq-iads-bridge == 'true' }}
# runs-on: windows-2022
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# # protoc is for prost
# - name: Install protoc
# uses: arduino/[email protected]
# with:
# repo-token: ${{ secrets.GITHUB_TOKEN }}
# version: 28.3
# - name: Set up Rust
# uses: actions-rust-lang/[email protected]
# - name: Install dependencies
# working-directory: data-visualization/iads/iads-rtstation/zeromq-iads-bridge
# run: |
# cargo build
# - name: Test
# working-directory: data-visualization/iads/iads-rtstation/zeromq-iads-bridge
# run: |
# cargo test --all-features
#
# windows-calculator-test:
# name: Windows (calculator) | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.windows-calculator == 'true' }}
# runs-on: windows-2022
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up Rust
# uses: actions-rust-lang/[email protected]
# - name: Install dependencies
# working-directory: operating-system/windows/calculator
# run: |
# cargo build
# - name: Test
# working-directory: operating-system/windows/calculator
# run: |
# cargo test --all-features
#
# hm-opal-client-build:
# name: HM OPAL Client | Build
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-opal-client == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up Docker Buildx
# uses: docker/[email protected]
# - name: Build Docker image
# uses: docker/[email protected]
# with:
# context: .
# file: ./authorization/hm-opal-client/Dockerfile
# cache-from: type=gha
# cache-to: type=gha,mode=max
#
# rasa-test:
# name: Rasa | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.hm-rasa == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Train and test
# uses: RasaHQ/[email protected]
# with:
# github_token: ${{ secrets.GITHUB_TOKEN }}
# workspace: ${{ github.workspace }}/machine-learning/hm-rasa
#
# graph-neural-network-test:
# name: GNN | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.graph-neural-network == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/graph-neural-network/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/graph-neural-network/pyproject.toml
# - name: Install dependencies
# working-directory: machine-learning/graph-neural-network
# run: |
# uv sync --dev
# - name: Test
# working-directory: machine-learning/graph-neural-network
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: machine-learning/graph-neural-network
#
# graph-neural-network-train:
# name: GNN | Train
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.graph-neural-network == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 20
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up CML
# uses: iterative/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/graph-neural-network/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/graph-neural-network/pyproject.toml
# - name: Install dependencies
# working-directory: machine-learning/graph-neural-network
# run: |
# uv sync --dev
# - name: Train model
# working-directory: machine-learning/graph-neural-network
# env:
# WANDB_API_KEY: ${{ secrets.WANDB_API_KEY }}
# run: |
# uv run poe dev --dataset=ogbg-molhiv --gnn=gcn --feature=simple --epochs=2
#
# convolutional-neural-network-test:
# name: CNN | Test
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.convolutional-neural-network == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/convolutional-neural-network/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/convolutional-neural-network/pyproject.toml
# - name: Install dependencies
# working-directory: machine-learning/convolutional-neural-network
# run: |
# uv sync --dev
# - name: Test
# working-directory: machine-learning/convolutional-neural-network
# run: |
# uv run poe test-coverage
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# directory: machine-learning/convolutional-neural-network
#
# convolutional-neural-network-cml-local-train:
# name: CNN | CML (Local) - Train
# needs: detect-changes
# if: ${{ needs.detect-changes.outputs.convolutional-neural-network == 'true' }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 20
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up CML
# uses: iterative/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/convolutional-neural-network/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/convolutional-neural-network/pyproject.toml
# - name: Install dependencies
# working-directory: machine-learning/convolutional-neural-network
# run: |
# uv sync --dev
# - name: Train model
# working-directory: machine-learning/convolutional-neural-network
# shell: bash -l {0}
# env:
# WANDB_API_KEY: ${{ secrets.WANDB_API_KEY }}
# run: |
# uv run poe dev --should_download_original_data=True
# - name: Write CML report
# working-directory: machine-learning/convolutional-neural-network
# shell: bash -l {0}
# env:
# REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# run: |
# echo "# CML (Local) Report" >> report.md
# echo "## Params" >> report.md
# cat output/reports/params.txt >> report.md
# cml comment create report.md
#
# convolutional-neural-network-cml-cloud-set-up:
# name: CNN | CML (Cloud) - Set Up
# runs-on: ubuntu-24.04
# environment: test
# needs: detect-changes
# if: ${{ false }}
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Set up CML
# uses: iterative/[email protected]
# - name: Set up cloud
# shell: bash
# env:
# REPO_TOKEN: ${{ secrets.CML_ACCESS_TOKEN }}
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# run: |
# cml-runner \
# --cloud=aws \
# --cloud-region=us-west-2 \
# --cloud-type=t2.small \
# --labels=cml-runner
#
# convolutional-neural-network-cml-cloud-train:
# name: CNN | CML (Cloud) - Train
# needs: convolutional-neural-network-cml-cloud-set-up
# runs-on: [self-hosted, cml-runner]
# environment: test
# # container:
# # image: docker://iterativeai/cml:0-dvc2-base1-gpu
# container:
# image: docker://iterativeai/cml:0-dvc2-base1
# steps:
# - name: Checkout
# uses: actions/[email protected]
# - name: Install uv
# uses: astral-sh/[email protected]
# with:
# version: 0.5.6
# enable-cache: true
# cache-dependency-glob: machine-learning/convolutional-neural-network/uv.lock
# - name: Set up Python
# uses: actions/[email protected]
# with:
# python-version-file: machine-learning/convolutional-neural-network/pyproject.toml
# - name: Install dependencies
# working-directory: convolutional-neural-network
# run: |
# uv sync --dev
# - name: Pull Data
# working-directory: convolutional-neural-network
# env:
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# run: |
# uv run poe dvc-pull
# - name: Train model
# working-directory: convolutional-neural-network
# shell: bash -l {0}
# env:
# WANDB_API_KEY: ${{ secrets.WANDB_API_KEY }}
# run: |
# uv run poe dvc-repro
# - name: Write CML report
# working-directory: convolutional-neural-network
# shell: bash -l {0}
# env:
# REPO_TOKEN: ${{ secrets.CML_ACCESS_TOKEN }}
# run: |
# echo "# CML (Cloud) Report" >> report.md
# echo "## Params" >> report.md
# cat output/reports/params.txt >> report.md
# cml comment create report.md
#
# code-review:
# name: Code Review
# if: ${{ false }}
# runs-on: ubuntu-24.04
# environment: test
# timeout-minutes: 10
# permissions:
# contents: read
# pull-requests: write
# steps:
# - name: Code Review
# uses: anc95/[email protected]
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}