Adding sample checks & DTS generation for multistream sample #3
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Producer CPP Sample Checks | |
| on: | |
| push: | |
| branches: | |
| - develop | |
| - master | |
| pull_request: | |
| branches: | |
| - develop | |
| - master | |
| jobs: | |
| sample-checks: | |
| name: ${{ matrix.runner.id }} - ${{ matrix.sample.name }} | |
| strategy: | |
| matrix: | |
| sample: | |
| - name: kvs_gstreamer_audio_video_sample | |
| args: sample.mp4 | |
| - name: kvs_gstreamer_file_uploader_sample | |
| args: sample.mp4 0 audio-video | |
| # - name: kvs_gstreamer_multistream_sample | |
| # args: "" | |
| - name: kvs_gstreamer_sample | |
| args: sample.mp4 | |
| - name: kvssink_gstreamer_sample | |
| args: sample.mp4 | |
| runner: | |
| - id: macos-latest | |
| image: macos-latest | |
| - id: ubuntu-22.04 | |
| image: ubuntu-latest | |
| docker: public.ecr.aws/ubuntu/ubuntu:22.04_stable | |
| - id: ubuntu-20.04 | |
| image: ubuntu-latest | |
| docker: public.ecr.aws/ubuntu/ubuntu:20.04_stable | |
| - id: windows-2022 | |
| image: windows-2022 | |
| fail-fast: false | |
| runs-on: ${{ matrix.runner.image }} | |
| container: ${{ matrix.runner.docker || '' }} | |
| timeout-minutes: 30 | |
| env: | |
| AWS_KVS_LOG_LEVEL: 2 | |
| KVS_DEBUG_DUMP_DATA_FILE_DIR: ./debug_output | |
| DEBIAN_FRONTEND: noninteractive | |
| permissions: | |
| id-token: write | |
| contents: read | |
| steps: | |
| - name: Clone repository | |
| uses: actions/checkout@v4 | |
| - name: Install dependencies (macOS) | |
| if: runner.os == 'macOS' | |
| run: | | |
| brew install gstreamer log4cplus mkvtoolnix | |
| - name: Install dependencies (Linux) | |
| if: runner.os == 'Linux' | |
| run: | | |
| apt-get update | |
| apt-get install -y git cmake build-essential pkg-config libssl-dev libcurl4-openssl-dev \ | |
| liblog4cplus-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \ | |
| gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-bad gstreamer1.0-plugins-good \ | |
| gstreamer1.0-plugins-ugly gstreamer1.0-tools curl mkvtoolnix | |
| - name: Install dependencies (Windows) | |
| if: runner.os == 'Windows' | |
| run: | | |
| choco install nasm strawberryperl pkgconfiglite | |
| - name: Build samples (Linux & Mac) | |
| if: runner.os == 'Linux' || runner.os == 'macOS' | |
| run: | | |
| mkdir build && cd build | |
| mkdir -p $KVS_DEBUG_DUMP_DATA_FILE_DIR | |
| cmake .. -DBUILD_GSTREAMER_PLUGIN=ON -DBUILD_DEPENDENCIES=OFF | |
| make -j$(nproc) | |
| - name: Build samples (Windows) | |
| if: runner.os == 'Windows' | |
| run: | | |
| $env:Path += ';C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\Strawberry\c\bin;C:\Program Files\NASM;D:\a\amazon-kinesis-video-streams-producer-c\amazon-kinesis-video-streams-producer-c\open-source\lib;D:\a\amazon-kinesis-video-streams-producer-c\amazon-kinesis-video-streams-producer-c\open-source\bin' | |
| git config --system core.longpaths true | |
| .github/build_windows.bat | |
| New-Item -ItemType Directory -Path $env:KVS_DEBUG_DUMP_DATA_FILE_DIR -Force | |
| - name: Configure AWS Credentials | |
| uses: aws-actions/configure-aws-credentials@v4 | |
| with: | |
| role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
| role-session-name: ${{ secrets.AWS_ROLE_SESSION_NAME }} | |
| aws-region: ${{ secrets.AWS_REGION }} | |
| role-duration-seconds: 10800 | |
| - name: Run ${{ matrix.sample.name }} (Linux & Mac) | |
| if: runner.os == 'Linux' || runner.os == 'macOS' | |
| env: | |
| GST_PLUGIN_PATH: ${{ github.workspace }}/build | |
| KVS_DEBUG_DUMP_DATA_FILE_DIR: ${{ github.workspace }}/build/debug_output | |
| working-directory: ./build | |
| run: | | |
| curl -fsSL -o sample.mp4 https://awsj-iot-handson.s3-ap-northeast-1.amazonaws.com/kvs-workshop/sample.mp4 | |
| ./${{ matrix.sample.name }} demo-stream-producer-cpp-${{ matrix.runner.id }}-ci-${{ matrix.sample.name }} ${{ matrix.sample.args }} | |
| - name: Run ${{ matrix.sample.name }} (Windows) | |
| if: runner.os == 'Windows' | |
| env: | |
| GST_PLUGIN_PATH: ${{ github.workspace }}/build | |
| KVS_DEBUG_DUMP_DATA_FILE_DIR: ${{ github.workspace }}/build/debug_output | |
| working-directory: ./build | |
| run: | | |
| Invoke-WebRequest -Uri https://awsj-iot-handson.s3-ap-northeast-1.amazonaws.com/kvs-workshop/sample.mp4 -OutFile sample.mp4 | |
| $exePath = Join-Path $PWD ${{ matrix.sample.name }} | |
| & $exePath.exe demo-stream-producer-cpp-${{ matrix.runner.id }}-ci-${{ matrix.sample.name }} ${{ matrix.sample.args }} | |
| - name: Verify MKV dump | |
| working-directory: ./build/debug_output | |
| run: | | |
| mkvfiles=(*.mkv) | |
| if [ ${#mkvfiles[@]} -eq 0 ]; then | |
| echo "No MKV files found in debug_output" | |
| exit 1 | |
| fi | |
| for file in "${mkvfiles[@]}"; do | |
| echo "Verifying $file with mkvinfo (verbose and hexdump):" | |
| mkvinfo -v -X "$file" | |
| done |