Skip to content

Git tag and latest commit sha as version displayed in sidebar (#580) #101

Git tag and latest commit sha as version displayed in sidebar (#580)

Git tag and latest commit sha as version displayed in sidebar (#580) #101

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