123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- name: Build Dim Bin and Dockerize
- on:
- push:
- branches: [ 'master', 'docker-build' ]
- tags: 'v*'
- workflow_dispatch:
- env:
- CARGO_TERM_COLOR: always
-
- jobs:
- create-ui:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout repository
- uses: actions/checkout@v3
- - name: Build UI
- uses: actions/setup-node@v3
- with:
- node-version: '18'
- cache: 'yarn'
- - run: npm install -g yarn
- - run: yarn -d --cwd ui/ install
- env:
- NODE_OPTIONS: --openssl-legacy-provider
- - run: yarn -d --cwd ui/ build
- env:
- NODE_OPTIONS: --openssl-legacy-provider
- - name: upload ui artifacts
- uses: actions/upload-artifact@v3
- with:
- name: ui
- path: ui/build
- build-armhf:
- needs: [create-ui]
- runs-on: ubuntu-latest
- container:
- image: rust:1.63
- env:
- CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER: arm-linux-gnueabihf-gcc
- OPENSSL_INCLUDE_DIR: "/usr/include/openssl/"
- OPENSSL_LIB_DIR: "/usr/lib/arm-linux-gnueabihf/"
- CARGO_TERM_COLOR: always
- steps:
- - name: add armhf architecture
- run: dpkg --add-architecture armhf
- - name: install runtime
- run: apt update && apt install -y pkg-config gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf libc6-armhf-cross libc6-dev-armhf-cross tar ca-certificates
- - name: Checkout repository
- uses: actions/checkout@v2
- - name: Download webui
- uses: actions/download-artifact@v3
- with:
- name: ui
- path: ui/build
- - uses: actions/cache@v3
- with:
- path: |
- .cargo/bin
- .cargo/registry/index
- .cargo/registry/cache
- .cargo/git/db
- target
- key: dim-bin-armhf-${{ hashFiles('**/Cargo.lock') }}
- restore-keys: |
- dim-bin-armhf-
- - name: add armhf target
- run: rustup target add armv7-unknown-linux-gnueabihf
- - name: smoke test
- run: rustc --version
- - name: compile armhf
- run: cargo build --target=armv7-unknown-linux-gnueabihf --release
- - name: check path
- run: ls -al target/
- - name: upload armhf artifacts
- uses: actions/upload-artifact@v3
- with:
- name: armhf-bin
- path: target/armv7-unknown-linux-gnueabihf/release/dim
- build-aarch64:
- needs: [create-ui]
- runs-on: ubuntu-latest
- container:
- image: rust:1.63
- env:
- CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
- OPENSSL_INCLUDE_DIR: "/usr/include/openssl/"
- OPENSSL_LIB_DIR: "/usr/lib/aarch64-linux-gnu/"
- CARGO_TERM_COLOR: always
- steps:
- - name: add arm64 architecture
- run: dpkg --add-architecture arm64
- - name: install runtime
- run: apt update && apt install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libc6-arm64-cross libc6-dev-arm64-cross libssl-dev:arm64
- - name: Checkout repository
- uses: actions/checkout@v2
- - name: Download webui
- uses: actions/download-artifact@v3
- with:
- name: ui
- path: ui/build
- - uses: actions/cache@v3
- with:
- path: |
- .cargo/bin
- .cargo/registry/index
- .cargo/registry/cache
- .cargo/git/db
- target
- key: dim-bin-aarch64-${{ hashFiles('**/Cargo.lock') }}
- restore-keys: |
- dim-bin-aarch64-
- - name: add arm64 target
- run: rustup target add aarch64-unknown-linux-gnu
- - name: smoke test
- run: rustc --version
- - name: compile aarch64
- run: cargo build --target=aarch64-unknown-linux-gnu --release
- - name: check path
- run: ls -al target/
- - name: upload aarch64 artifacts
- uses: actions/upload-artifact@v3
- with:
- name: aarch64-bin
- path: target/aarch64-unknown-linux-gnu/release/dim
-
- build-amd64:
- needs: [create-ui]
- runs-on: ubuntu-latest
- container:
- image: rust:1.63
- env:
- CARGO_TERM_COLOR: always
- steps:
- - name: install runtime
- run: apt update && apt install -y gcc-x86-64-linux-gnu g++-x86-64-linux-gnu libc6-dev libssl-dev libva-dev libva-drm2 libva2
- - name: Checkout repository
- uses: actions/checkout@v2
- - name: Download webui
- uses: actions/download-artifact@v3
- with:
- name: ui
- path: ui/build
- - uses: actions/cache@v3
- with:
- path: |
- .cargo/bin
- .cargo/registry/index
- .cargo/registry/cache
- .cargo/git/db
- target
- key: dim-bin-amd64-${{ hashFiles('**/Cargo.lock') }}
- restore-keys: |
- dim-bin-amd64-
- - name: add x86_64 target
- run: rustup target add x86_64-unknown-linux-gnu
- - name: smoke test
- run: rustc --version
- - name: compile amd64
- run: cargo build --features vaapi --target=x86_64-unknown-linux-gnu --release
- - name: check path
- run: ls -al target/
- - name: upload amd64 artifacts
- uses: actions/upload-artifact@v3
- with:
- name: amd64-bin
- path: target/x86_64-unknown-linux-gnu/release/dim
- build-docker-image:
- needs: [build-armhf,build-aarch64,build-amd64]
- name: Build Docker image
- runs-on: ubuntu-latest
- permissions:
- contents: read
- packages: write
- steps:
- - name: fetch repo
- uses: actions/checkout@v3
- - name: Download armhf dim artifacts
- uses: actions/download-artifact@v3
- with:
- name: armhf-bin
- path: bin/armhf-bin
- - name: Download armhf dim artifacts
- uses: actions/download-artifact@v3
- with:
- name: aarch64-bin
- path: bin/aarch64-bin
- - name: Download amd64 dim artifacts
- uses: actions/download-artifact@v3
- with:
- name: amd64-bin
- path: bin/amd64-bin
- - name: check path
- run: ls -al
- - name: check bin path
- run: ls -al bin/
- - name: setup qemu
- uses: docker/setup-qemu-action@v2
- - uses: docker/setup-buildx-action@v2
- - uses: docker/metadata-action@v4
- id: meta
- with:
- images: ghcr.io/${{ github.repository }}
- tags: |
- type=ref,event=branch
- type=ref,event=pr
- type=semver,pattern={{version}}
- type=semver,pattern={{major}}.{{minor}}
- - uses: docker/login-action@v2
- with:
- registry: ghcr.io
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
- - uses: docker/build-push-action@v4
- with:
- #push: true
- push: ${{ github.event_name != 'pull_request' }}
- context: .
- platforms: linux/amd64,linux/arm64,linux/arm/v7
- file: ./.github/workflows/Dockerfile.ci
- tags: ${{ steps.meta.outputs.tags }}
- labels: ${{ steps.meta.outputs.labels }}
- cache-to: type=gha,mode=max
- cache-from: type=gha
|