Git tag and latest commit sha as version displayed in sidebar (#580) #101
This file contains 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: 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 | |