Skip to content

feat(matlab): generate 5G NR waveform #15220

feat(matlab): generate 5G NR waveform

feat(matlab): generate 5G NR waveform #15220

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-22.04
environment: test
timeout-minutes: 10
permissions:
pull-requests: read
outputs:
api-go: ${{ steps.filter.outputs.api-go }}
api-node: ${{ steps.filter.outputs.api-node }}
api-python: ${{ steps.filter.outputs.api-python }}
convolutional-neural-network: ${{ steps.filter.outputs.convolutional-neural-network }}
grafana-hm-panel-plugin: ${{ steps.filter.outputs.grafana-hm-panel-plugin }}
graph-neural-network: ${{ steps.filter.outputs.graph-neural-network }}
hm-opal-client: ${{ steps.filter.outputs.hm-opal-client }}
hm-rasa: ${{ steps.filter.outputs.hm-rasa }}
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 }}
mobile-android: ${{ steps.filter.outputs.mobile-android }}
mobile-ios: ${{ steps.filter.outputs.mobile-ios }}
mobile-react-native: ${{ steps.filter.outputs.mobile-react-native }}
prometheus: ${{ steps.filter.outputs.prometheus }}
robot-operating-system: ${{ steps.filter.outputs.robot-operating-system }}
streaming: ${{ steps.filter.outputs.streaming }}
web: ${{ steps.filter.outputs.web }}
web-cypress: ${{ steps.filter.outputs.web-cypress }}
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: dorny/paths-filter@v2
id: filter
with:
filters: |
api-go:
- '.github/workflows/test.yml'
- 'api-go/**'
api-node:
- '.github/workflows/test.yml'
- 'api-node/**'
api-python:
- '.github/workflows/test.yml'
- 'api-python/**'
convolutional-neural-network:
- '.github/workflows/test.yml'
- 'convolutional-neural-network/**'
grafana-hm-panel-plugin:
- '.github/workflows/test.yml'
- 'grafana/hm-panel-plugin/**'
graph-neural-network:
- '.github/workflows/test.yml'
- 'graph-neural-network/**'
hm-opal-client:
- '.github/workflows/test.yml'
- 'hm-opal-client/**'
hm-rasa:
- '.github/workflows/test.yml'
- 'hm-rasa/**'
hm-spark-find-retired-people-scala:
- '.github/workflows/test.yml'
- 'hm-spark/applications/find-retired-people-scala/**'
hm-spark-find-taxi-top-routes:
- '.github/workflows/test.yml'
- 'hm-spark/applications/find-taxi-top-routes/**'
hm-spark-find-taxi-top-routes-sql:
- '.github/workflows/test.yml'
- 'hm-spark/applications/find-taxi-top-routes-sql/**'
hm-spark-ingest-from-s3-to-kafka:
- '.github/workflows/test.yml'
- 'hm-spark/applications/ingest-from-s3-to-kafka/**'
mobile-android:
- '.github/workflows/test.yml'
- 'mobile-android/**'
mobile-ios:
- '.github/workflows/test.yml'
- 'mobile-ios/**'
mobile-react-native:
- '.github/workflows/test.yml'
- 'mobile-react-native/**'
prometheus:
- '.github/workflows/test.yml'
- 'prometheus/**'
robot-operating-system:
- '.github/workflows/test.yml'
- 'robot-operating-system/**'
streaming:
- '.github/workflows/test.yml'
- 'streaming/**'
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-22.04
environment: test
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
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/codecov-action@v3
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-22.04
environment: test
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
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/action-docker-layer-caching@v0.1.1
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:5000
- 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-22.04
environment: test
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
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-22.04
environment: test
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@v4
with:
# Required to retrieve git history
fetch-depth: 0
- name: Set up Node.js
uses: actions/setup-node@v4
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-13
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-ios/Gemfile
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '14.2'
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
working-directory: mobile-ios
bundler-cache: true
- name: Build
working-directory: mobile-ios
run: |
xcodebuild build-for-testing \
-project HMMobile.xcodeproj \
-scheme HMMobile \
-destination "platform=iOS Simulator,name=iPhone 14 Pro,OS=16.2"
- name: Test
uses: wandalen/wretry.action@v1
with:
current_path: mobile-ios
command: |
xcodebuild test-without-building \
-project HMMobile.xcodeproj \
-scheme HMMobile \
-destination "platform=iOS Simulator,name=iPhone 14 Pro,OS=16.2"
attempt_limit: 3
attempt_delay: 2000
- name: Convert coverage to Cobertura XML format
working-directory: mobile-ios
run: |
bundle exec slather
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
directory: mobile-ios
mobile-android-lint:
name: Mobile - Android | Lint
needs: detect-changes
if: ${{ needs.detect-changes.outputs.mobile-android == 'true' }}
runs-on: ubuntu-22.04
environment: test
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: corretto
java-version: '17'
cache: gradle
- name: Lint
working-directory: 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-22.04
environment: test
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: corretto
java-version: '17'
cache: gradle
- name: Test
working-directory: 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' }}
runs-on: macos-13
environment: test
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: corretto
java-version: '17'
cache: gradle
- name: Instrumented Test
uses: reactivecircus/android-emulator-runner@v2
with:
working-directory: mobile-android
api-level: 29
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-22.04
environment: test
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version-file: mobile-react-native/.nvmrc
cache: npm
cache-dependency-path: mobile-react-native/package-lock.json
- name: Install dependencies
working-directory: mobile-react-native
run: |
npm ci
- name: Test
working-directory: mobile-react-native
run: |
npm run test:coverage
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
directory: mobile-react-native
api-go-test:
name: API - Go | Test
needs: detect-changes
if: ${{ needs.detect-changes.outputs.api-go == 'true' }}
runs-on: ubuntu-22.04
environment: test
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v4
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/codecov-action@v3
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-22.04
environment: test
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
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/codecov-action@v3
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-22.04
environment: test
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
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-22.04
environment: test
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
# 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/v1.9.2.tar.gz
tar -x -f librdkafka.tar.gz
rm -f librdkafka.tar.gz
cd librdkafka-1.9.2
./configure
make
sudo make install
sudo ldconfig
cd ..
rm -r -f librdkafka-1.9.2/
- name: Install Poetry
run: |
pipx install poetry
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
cache: poetry
cache-dependency-path: api-python/poetry.lock
- name: Set Poetry environment
working-directory: api-python
run: |
poetry env use python3.11
- name: Install dependencies
working-directory: api-python
run: |
poetry install --no-root
- name: Test
working-directory: api-python
run: |
poetry run poe test-coverage
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
directory: api-python
spark-find-retired-people-scala:
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-22.04
environment: test
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: corretto
java-version: '17'
cache: sbt
- name: Test
working-directory: hm-spark/applications/find-retired-people-scala
run: |
sbt test
find-taxi-top-routes:
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-22.04
environment: test
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Poetry
run: |
pipx install poetry
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.12'
cache: poetry
cache-dependency-path: hm-spark/applications/find-taxi-top-routes/poetry.lock
- name: Set Poetry environment
working-directory: hm-spark/applications/find-taxi-top-routes
run: |
poetry env use python3.12
- name: Install dependencies
working-directory: hm-spark/applications/find-taxi-top-routes
run: |
poetry install --no-root
- name: Test
working-directory: hm-spark/applications/find-taxi-top-routes
run: |
poetry run poe test-coverage
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
directory: hm-spark/applications/find-taxi-top-routes
find-taxi-top-routes-sql:
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-22.04
environment: test
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Poetry
run: |
pipx install poetry
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.12'
cache: poetry
cache-dependency-path: hm-spark/applications/find-taxi-top-routes-sql/poetry.lock
- name: Set Poetry environment
working-directory: hm-spark/applications/find-taxi-top-routes-sql
run: |
poetry env use python3.12
- name: Install dependencies
working-directory: hm-spark/applications/find-taxi-top-routes-sql
run: |
poetry install --no-root
- name: Test
working-directory: hm-spark/applications/find-taxi-top-routes-sql
run: |
poetry run poe test-coverage
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
directory: hm-spark/applications/find-taxi-top-routes-sql
spark-ingest-from-s3-to-kafka:
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-22.04
environment: test
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: corretto
java-version: '17'
cache: sbt
- name: Test
working-directory: hm-spark/applications/ingest-from-s3-to-kafka
run: |
sbt test
streaming-test:
name: Streaming | Test
needs: detect-changes
if: ${{ needs.detect-changes.outputs.streaming == 'true' }}
runs-on: ubuntu-22.04
environment: test
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: corretto
java-version: '11'
cache: maven
- name: Test
working-directory: streaming
run: |
mvn test
opa-test:
name: OPA | Test
needs: detect-changes
if: ${{ needs.detect-changes.outputs.api-go == 'true' }}
runs-on: ubuntu-22.04
environment: test
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- 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-22.04
environment: test
timeout-minutes: 20
container: ubuntu:jammy
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup ROS
uses: ros-tooling/setup-ros@v0.7
with:
required-ros-distributions: humble
- name: Build and test
uses: ros-tooling/action-ros-ci@v0.3
with:
package-name: turtle_robot
target-ros2-distro: humble
rasa-test:
name: Rasa | Test
needs: detect-changes
if: ${{ needs.detect-changes.outputs.hm-rasa == 'true' }}
runs-on: ubuntu-22.04
environment: test
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Train and test
uses: RasaHQ/rasa-train-test-gha@main
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
workspace: ${{ github.workspace }}/hm-rasa
prometheus-test:
name: Prometheus | Test
needs: detect-changes
if: ${{ needs.detect-changes.outputs.prometheus == 'true' }}
runs-on: ubuntu-22.04
environment: test
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Test
run: |
docker build --file=prometheus/Dockerfile.test .
grafana-hm-panel-plugin-end-to-end-test:
name: Grafana (hm-panel-plugin) | End-to-End Test
needs: detect-changes
if: ${{ needs.detect-changes.outputs.grafana-hm-panel-plugin == 'true' }}
runs-on: ubuntu-22.04
environment: test
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version-file: grafana/hm-panel-plugin/.nvmrc
cache: npm
cache-dependency-path: grafana/hm-panel-plugin/package-lock.json
- name: Install dependencies
working-directory: grafana/hm-panel-plugin
run: |
npm ci
- name: Build
working-directory: grafana/hm-panel-plugin
run: |
npm run build
- name: Pull Docker images
working-directory: grafana/hm-panel-plugin
run: |
docker-compose pull
- name: Cache Docker images
uses: jpribyl/action-docker-layer-caching@v0.1.1
continue-on-error: true
- name: Start Docker
working-directory: grafana/hm-panel-plugin
run: |
docker-compose up --detach
- name: Run e2e tests
working-directory: grafana/hm-panel-plugin
run: |
npm run e2e
- name: Stop Docker
working-directory: grafana/hm-panel-plugin
run: |
docker-compose down
grafana-hm-panel-plugin-compatibility-test:
name: Grafana (hm-panel-plugin) | Compatibility Test
needs: detect-changes
if: ${{ needs.detect-changes.outputs.grafana-hm-panel-plugin == 'true' }}
runs-on: ubuntu-22.04
environment: test
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version-file: grafana/hm-panel-plugin/.nvmrc
cache: npm
cache-dependency-path: grafana/hm-panel-plugin/package-lock.json
- name: Install dependencies
working-directory: grafana/hm-panel-plugin
run: |
npm ci
- name: Build
working-directory: grafana/hm-panel-plugin
run: |
npm run build
- name: Check compatibility
working-directory: grafana/hm-panel-plugin
run: |
npx @grafana/levitate@latest is-compatible --path=src/module.ts --target=@grafana/data,@grafana/ui,@grafana/runtime
hm-opal-client-build:
name: HM OPAL Client | Build
needs: detect-changes
if: ${{ needs.detect-changes.outputs.hm-opal-client == 'true' }}
runs-on: ubuntu-22.04
environment: test
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build Docker image
uses: docker/build-push-action@v5
with:
context: .
file: ./hm-opal-client/Dockerfile
cache-from: type=gha
cache-to: type=gha,mode=max
gnn-train:
name: GNN | Train
needs: detect-changes
if: ${{ needs.detect-changes.outputs.graph-neural-network == 'true' }}
runs-on: ubuntu-22.04
environment: test
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up CML
uses: iterative/setup-cml@v1
- name: Install Poetry
run: |
pipx install poetry
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.8'
cache: poetry
cache-dependency-path: graph-neural-network/poetry.lock
- name: Set Poetry environment
working-directory: graph-neural-network
run: |
poetry env use python3.8
- name: Install dependencies
working-directory: graph-neural-network
run: |
poetry install --no-root
- name: Train model
working-directory: graph-neural-network
env:
WANDB_MODE: offline
run: |
poetry run poe dev -- --dataset=ogbg-molhiv --gnn=gcn --feature=simple --epochs=2
cnn-cml-local-train:
name: CNN | CML (Local) - Train
needs: detect-changes
if: ${{ needs.detect-changes.outputs.convolutional-neural-network == 'true' }}
runs-on: ubuntu-22.04
environment: test
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up CML
uses: iterative/setup-cml@v1
- name: Install Poetry
run: |
pipx install poetry
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
cache: poetry
cache-dependency-path: convolutional-neural-network/poetry.lock
- name: Set Poetry environment
working-directory: convolutional-neural-network
run: |
poetry env use python3.10
- name: Install dependencies
working-directory: convolutional-neural-network
run: |
poetry install --no-root
- name: Train model
working-directory: convolutional-neural-network
shell: bash -l {0}
env:
WANDB_MODE: offline
run: |
poetry run poe dev -- --should_download_original_data=True
- name: Write CML report
working-directory: 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
cnn-cml-cloud-set-up:
name: CNN | CML (Cloud) - Set Up
runs-on: ubuntu-22.04
environment: test
needs: detect-changes
if: ${{ false }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up CML
uses: iterative/setup-cml@v1
- 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
cnn-cml-cloud-train:
name: CNN | CML (Cloud) - Train
needs: cnn-cml-cloud-set-up
runs-on: [self-hosted, cml-runner]
environment: test
# container: docker://iterativeai/cml:0-dvc2-base1-gpu
container: docker://iterativeai/cml:0-dvc2-base1
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Poetry
run: |
pipx install poetry
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
cache: poetry
cache-dependency-path: convolutional-neural-network/poetry.lock
- name: Set Poetry environment
working-directory: convolutional-neural-network
run: |
poetry env use python3.10
- name: Install dependencies
working-directory: convolutional-neural-network
run: |
poetry install --no-root
- 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: |
poetry 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: |
poetry 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-22.04
environment: test
timeout-minutes: 10
permissions:
contents: read
pull-requests: write
steps:
- name: Code Review
uses: anc95/ChatGPT-CodeReview@v1.0.11
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}