From 5d3d4acde7a7935cc561f4098f740a912f3a027f Mon Sep 17 00:00:00 2001 From: Wanjohi <71614375+wanjohiryan@users.noreply.github.com> Date: Thu, 4 Apr 2024 04:17:33 +0300 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(server):=20Integrate=20ffmpeg?= =?UTF-8?q?=20and=20warp=20into=20the=20server?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/server.yml | 57 ++++++++++++++++++++++++++++++++++++ .github/workflows/warp.yml | 37 +++++++++-------------- server.Dockerfile | 5 ++-- 3 files changed, 74 insertions(+), 25 deletions(-) diff --git a/.github/workflows/server.yml b/.github/workflows/server.yml index bf21cb61..e2289516 100644 --- a/.github/workflows/server.yml +++ b/.github/workflows/server.yml @@ -31,14 +31,63 @@ concurrency: cancel-in-progress: true jobs: + build-cargo: + defaults: + run: + working-directory: moq-server + runs-on: ubuntu-20.04 + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Install Rust + id: toolchain + uses: dtolnay/rust-toolchain@stable + with: + targets: x86_64-unknown-linux-gnu + toolchain: stable + components: clippy, rustfmt + + - name: Cache Rust Dependencies + uses: Swatinem/rust-cache@v2 + with: + save-if: false + prefix-key: 'v0-rust-deps' + shared-key: x86_64-unknown-linux-gnu + + - name: Cargo build + run: cargo build --target x86_64-unknown-linux-gnu --manifest-path ./moq-pub/Cargo.toml --release + + - name: Copy and rename artifacts (Linux) + run: | + cp target/x86_64-unknown-linux-gnu/release/moq-pub ./warp + + - name: Publish artifacts + uses: actions/upload-artifact@v3 + with: + name: warp + path: ./moq-server/warp + if-no-files-found: error + retention-days: 5 + build-docker-pr: name: Build image on pr + needs: + - build-cargo runs-on: ubuntu-latest if: ${{ github.event_name == 'pull_request' }} steps: - name: Checkout repo uses: actions/checkout@v4 + - + name: Download go binary + uses: actions/download-artifact@v3 + with: + name: warp + path: ./ - name: Setup Docker Buildx uses: docker/setup-buildx-action@v3 @@ -56,6 +105,8 @@ jobs: name: Build image on merge to main if: ${{github.ref == 'refs/heads/main'}} runs-on: ubuntu-latest + needs: + - build-cargo permissions: contents: read packages: write @@ -63,6 +114,12 @@ jobs: - name: Checkout repo uses: actions/checkout@v4 + - + name: Download warp + uses: actions/download-artifact@v3 + with: + name: warp + path: ./ - name: Log into registry ${{ env.REGISTRY }} uses: docker/login-action@v3 diff --git a/.github/workflows/warp.yml b/.github/workflows/warp.yml index ee599ade..cc871141 100644 --- a/.github/workflows/warp.yml +++ b/.github/workflows/warp.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: schedule: - cron: 0 0 * * * # At the end of everyday - pull_request: + pull_request: #TODO: run only on dependabot updates release: types: [published] @@ -59,7 +59,7 @@ jobs: id: toolchain uses: dtolnay/rust-toolchain@stable with: - targets: ${{ matrix.settings.target }} + targets: x86_64-unknown-linux-gnu toolchain: stable components: clippy, rustfmt @@ -68,25 +68,25 @@ jobs: with: save-if: false prefix-key: 'v0-rust-deps' - shared-key: ${{ matrix.settings.target }} + shared-key: x86_64-unknown-linux-gnu - name: Cargo build - run: cargo build --target ${{ matrix.settings.target }} --manifest-path ./moq-pub/Cargo.toml --release + run: cargo build --target x86_64-unknown-linux-gnu --manifest-path ./moq-pub/Cargo.toml --release - name: Copy and rename artifacts (Linux) if: ${{ matrix.settings.host == 'ubuntu-20.04' }} run: | - cp target/${{ matrix.settings.target }}/release/moq-pub ./warp + cp target/x86_64-unknown-linux-gnu/release/moq-pub ./warp - name: Copy and rename artifacts (Windows) if: ${{ matrix.settings.host == 'windows-latest' }} run: | - cp "target/${{ matrix.settings.target }}/release/moq-pub.exe" ./warp.exe + cp "target/x86_64-unknown-linux-gnu/release/moq-pub.exe" ./warp.exe - name: Copy and rename artifacts (macOS) if: ${{ matrix.settings.host == 'macos-latest' }} run: | - cp target/${{ matrix.settings.target }}/release/moq-pub ./warp + cp target/x86_64-unknown-linux-gnu/release/moq-pub ./warp - name: Publish release for (${{ matrix.settings.host }}) if: ${{ matrix.settings.host == 'windows-latest' }} @@ -112,16 +112,7 @@ jobs: defaults: run: working-directory: moq-server - strategy: - fail-fast: false - matrix: - settings: - - host: ubuntu-20.04 - target: x86_64-unknown-linux-gnu - bundles: appimage - asset_name: warp-ubuntu-amd64 - - runs-on: ${{ matrix.settings.host }} + runs-on: ubuntu-20.04 steps: - name: Checkout repository uses: actions/checkout@v3 @@ -132,7 +123,7 @@ jobs: id: toolchain uses: dtolnay/rust-toolchain@stable with: - targets: ${{ matrix.settings.target }} + targets: x86_64-unknown-linux-gnu toolchain: stable components: clippy, rustfmt @@ -141,19 +132,19 @@ jobs: with: save-if: false prefix-key: 'v0-rust-deps' - shared-key: ${{ matrix.settings.target }} + shared-key: x86_64-unknown-linux-gnu - name: Cargo build - run: cargo build --target ${{ matrix.settings.target }} --manifest-path ./moq-pub/Cargo.toml --release + run: cargo build --target x86_64-unknown-linux-gnu --manifest-path ./moq-pub/Cargo.toml --release - name: Copy and rename artifacts (Linux) run: | - cp target/${{ matrix.settings.target }}/release/moq-pub ./warp + cp target/x86_64-unknown-linux-gnu/release/moq-pub ./warp - - name: Publish artifacts (${{ matrix.settings.host }}) + - name: Publish artifacts uses: actions/upload-artifact@v3 with: - name: ${{ matrix.settings.asset_name }} + name: warp-ubuntu-amd64 path: ./moq-server/warp if-no-files-found: error retention-days: 5 \ No newline at end of file diff --git a/server.Dockerfile b/server.Dockerfile index aaff4dce..25f93034 100644 --- a/server.Dockerfile +++ b/server.Dockerfile @@ -2,7 +2,7 @@ #NOTE: KEEP THIS IMAGE AS LEAN AS POSSIBLE. FROM ghcr.io/wanjohiryan/netris/recorder:nightly as recorder -FROM ubuntu:23.10 +FROM ghcr.io/wanjohiryan/netris/ffmpeg:nightly ENV DEBIAN_FRONTEND=noninteractive \ TIMEZONE=Africa/Nairobi @@ -118,8 +118,9 @@ RUN apt-get update -y \ && echo "load-module module-native-protocol-tcp auth-anonymous=1" >> /etc/pulse/default.pa COPY .scripts/ /usr/bin/netris/ +COPY warp /usr/bin/netris/ RUN ls -la /usr/bin/netris \ - && chmod +x /usr/bin/netris/proton /usr/bin/netris/entrypoint.sh + && chmod +x /usr/bin/netris/proton /usr/bin/netris/entrypoint.sh /usr/bin/netris/warp #Install proton RUN /usr/bin/netris/proton -i