refactor: cleaning up file management #35
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: Hexwave CI | |
on: | |
push: | |
paths: | |
- '**.cpp' | |
- '**.h' | |
- '**.hpp' | |
- '**.cmake' | |
- '**ci.yml' | |
- '**CMakeLists.txt' | |
pull_request: | |
paths: | |
- '**.cpp' | |
- '**.h' | |
- '**.hpp' | |
- '**.cmake' | |
- '**ci.yml' | |
- '**CMakeLists.txt' | |
permissions: | |
contents: read | |
jobs: | |
linux: | |
permissions: | |
contents: write | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.cfg.arch }}-(${{ matrix.cfg.cpp-version }}) | |
cancel-in-progress: true | |
name: Linux ${{matrix.cfg.arch}} (${{matrix.cfg.cpp-version}}) | |
runs-on: ${{matrix.cfg.os}} | |
strategy: | |
fail-fast: false # Don't fail everything if one fails. We want to test each OS/Compiler individually | |
matrix: | |
cfg: # 20.04 LTS cis are off until further notice. | |
#- { arch: 'amd64', concurrency: 2, os: ubuntu-20.04, package: clang-10, cpp-version: clang++-10 } | |
- { arch: 'amd64', concurrency: 2, os: ubuntu-22.04, package: clang-11, cpp-version: clang++-11 } | |
- { arch: 'amd64', concurrency: 2, os: ubuntu-22.04, package: clang-12, cpp-version: clang++-12 } | |
- { arch: 'amd64', concurrency: 2, os: ubuntu-22.04, package: clang-13, cpp-version: clang++-13 } | |
- { arch: 'amd64', concurrency: 2, os: ubuntu-22.04, package: clang-14, cpp-version: clang++-14 } | |
- { arch: 'amd64', concurrency: 2, os: ubuntu-22.04, package: clang-15, cpp-version: clang++-15 } | |
- { arch: 'amd64', concurrency: 2, os: ubuntu-22.04, package: g++-12, cpp-version: g++-12 } | |
- { arch: 'amd64', concurrency: 2, os: ubuntu-22.04, package: g++-11, cpp-version: g++-11 } | |
- { arch: 'amd64', concurrency: 2, os: ubuntu-22.04, package: g++-10, cpp-version: g++-10 } | |
#- { arch: 'amd64', concurrency: 2, os: ubuntu-20.04, package: g++-9, cpp-version: g++-9 } | |
#- { arch: 'amd64', concurrency: 2, os: ubuntu-20.04, package: g++-8, cpp-version: g++-8 } | |
steps: | |
- name: Harden Runner | |
uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 | |
with: | |
egress-policy: audit | |
- name: Checkout Hexwave | |
uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 | |
with: | |
submodules: recursive | |
- name: Install apt packages | |
run: sudo sed -i 's/azure\.//' /etc/apt/sources.list && sudo add-apt-repository ppa:ubuntuhandbook1/ffmpeg6 && sudo apt update && sudo apt install -y ${{ matrix.cfg.package }} ffmpeg pkg-config libavcodec-dev libavformat-dev libswscale-dev xorg-dev | |
- name: Generate CMake | |
run: cmake -B build | |
env: | |
CXX: ${{matrix.cfg.cpp-version}} | |
- name: Build Project | |
run: cmake --build build -j${{ matrix.cfg.concurrency }} | |
steam-deck: # NOTE: This actually isn't a steam deck, but rather a linux machine mimicing the exact ffmpeg version on Steam Deck. | |
permissions: | |
contents: write | |
concurrency: | |
group: Deck-${{ github.workflow }}-${{ github.ref }}-${{ matrix.cfg.arch }}-(${{ matrix.cfg.cpp-version }}) | |
cancel-in-progress: true | |
name: Fake Steam Deck ${{matrix.cfg.arch}} (${{matrix.cfg.cpp-version}}) | |
runs-on: ${{matrix.cfg.os}} | |
strategy: | |
fail-fast: false # Don't fail everything if one fails. We want to test each OS/Compiler individually | |
matrix: | |
cfg: | |
- { arch: 'amd64', concurrency: 2, os: ubuntu-22.04, package: g++-12, cpp-version: g++-12 } | |
steps: | |
- name: Harden Runner | |
uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 | |
with: | |
egress-policy: audit | |
- name: Checkout Hexwave | |
uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 | |
with: | |
submodules: recursive | |
- name: Install FFmpeg dependencies | |
run: sudo apt-get update -qq && sudo apt-get -y install autoconf automake libass-dev libfreetype6-dev libgnutls28-dev libmp3lame-dev libsdl2-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev meson ninja-build pkg-config texinfo yasm zlib1g-dev | |
- name: Install FFmpeg 6.0 | |
run: wget https://ffmpeg.org/releases/ffmpeg-6.0.1.tar.xz && tar -xvf ffmpeg-6.0.1.tar.xz && cd ffmpeg-6.0.1 && ./configure && make && sudo make install | |
- name: Install apt packages | |
run: sudo sed -i 's/azure\.//' /etc/apt/sources.list && sudo apt update && sudo apt install -y ${{ matrix.cfg.package }} libavcodec-dev libavformat-dev libswscale-dev xorg-dev | |
- name: Generate CMake | |
run: cmake -B build | |
env: | |
CXX: ${{matrix.cfg.cpp-version}} | |
- name: Build Project | |
run: cmake --build build -j${{ matrix.cfg.concurrency }} | |
- name: Upload zip | |
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 | |
with: | |
name: "hexwave-steamdeck" | |
path: '${{github.workspace}}/build/' |