Skip to content

chore(workflows): update dependency ubuntu to v24 #26777

chore(workflows): update dependency ubuntu to v24

chore(workflows): update dependency ubuntu to v24 #26777

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-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-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 }}
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-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-data-producer:
- '.github/workflows/test.yml'
- 'data-visualization/iads/iads-data-producer/**'
iads-zeromq-iads-bridge:
- '.github/workflows/test.yml'
- 'data-visualization/iads/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/**'
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/.nvmrc
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/.nvmrc
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/.nvmrc
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/.nvmrc
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/.nvmrc
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/.nvmrc
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/.nvmrc
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/edenhill/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.2
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: 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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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/edenhill/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/edenhill/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/edenhill/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/edenhill/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: Download OPA Binary
run: |
curl --silent --fail --show-error --location --output opa https://openpolicyagent.org/downloads/latest/opa_linux_amd64
chmod 755 ./opa
- 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.2
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
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-data-producer
run: |
cargo build
- name: Test
working-directory: data-visualization/iads/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: 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: data-visualization/iads/zeromq-iads-bridge
run: |
cargo build
- name: Test
working-directory: data-visualization/iads/zeromq-iads-bridge
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.2
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.2
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_MODE: offline
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.2
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.2
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_MODE: offline
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.2
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 }}