CHANGES のリリース日を 2026-08-07 に設定する #3642
Workflow file for this run
This file contains hidden or 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: CI | |
| on: | |
| workflow_dispatch: | |
| push: | |
| branches: | |
| - "develop" | |
| - "feature/**" | |
| - "hotfix/**" | |
| paths-ignore: | |
| - "**.md" | |
| schedule: | |
| # UTC の 01:00 は JST だと 10:00 。 | |
| # 1-5 で 月曜日から金曜日 | |
| - cron: "0 1 * * 1-5" | |
| env: | |
| RUST_BACKTRACE: 1 | |
| CUDA_VERSION: 13.0.2 | |
| jobs: | |
| check: | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - run: rustup update stable | |
| - run: rustup default stable | |
| - name: Install packages to build external dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y meson ninja-build nasm yasm build-essential autoconf automake libtool pkg-config yasm cmake | |
| - name: Cache cargo | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry/ | |
| ~/.cargo/git/ | |
| target/ | |
| # 以下のファイルのタイムスタンプが変わってしまうと build.rs が常に再実行されてしまうのでキャッシュする | |
| **/build.rs | |
| **/Cargo.toml | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/build.rs') }}-${{ github.job }}-${{ hashFiles('Cargo.lock') }} | |
| restore-keys: | | |
| # Cargo.toml と build.rs はキャッシュから復元するので、古いものを復元するのを避けるために候補キーに含める | |
| ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/build.rs') }}-${{ github.job }}- | |
| ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/build.rs') }}- | |
| - run: cargo check --workspace --exclude shiguredo_fdk_aac --exclude shiguredo_audio_toolbox --exclude shiguredo_video_toolbox | |
| clippy: | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - run: rustup update stable | |
| - run: rustup default stable | |
| - run: rustup component add clippy | |
| - name: Install packages to build external dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y meson ninja-build nasm yasm build-essential autoconf automake libtool pkg-config yasm cmake | |
| - name: Cache cargo | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry/ | |
| ~/.cargo/git/ | |
| target/ | |
| # 以下のファイルのタイムスタンプが変わってしまうと build.rs が常に再実行されてしまうのでキャッシュする | |
| **/build.rs | |
| **/Cargo.toml | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/build.rs') }}-${{ github.job }}-${{ hashFiles('Cargo.lock') }} | |
| restore-keys: | | |
| # Cargo.toml と build.rs はキャッシュから復元するので、古いものを復元するのを避けるために候補キーに含める | |
| ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/build.rs') }}-${{ github.job }}- | |
| ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/build.rs') }}- | |
| - run: cargo clippy --workspace --exclude shiguredo_fdk_aac --exclude shiguredo_audio_toolbox --exclude shiguredo_video_toolbox -- --deny warnings | |
| test: | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - run: rustup update stable | |
| - run: rustup default stable | |
| - name: Install packages to build external dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y meson ninja-build nasm yasm build-essential autoconf automake libtool pkg-config yasm cmake | |
| - name: Cache cargo | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry/ | |
| ~/.cargo/git/ | |
| target/ | |
| # 以下のファイルのタイムスタンプが変わってしまうと build.rs が常に再実行されてしまうのでキャッシュする | |
| **/build.rs | |
| **/Cargo.toml | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/build.rs') }}-${{ github.job }}-${{ hashFiles('Cargo.lock') }} | |
| restore-keys: | | |
| # Cargo.toml と build.rs はキャッシュから復元するので、古いものを復元するのを避けるために候補キーに含める | |
| ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/build.rs') }}-${{ github.job }}- | |
| ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/build.rs') }}- | |
| - run: cargo test --workspace --exclude shiguredo_fdk_aac --exclude shiguredo_openh264 --exclude shiguredo_audio_toolbox --exclude shiguredo_video_toolbox | |
| test-nvidia-video-codec: | |
| runs-on: | |
| group: Self | |
| labels: [self-hosted, linux, x64, NVIDIA-Video-Codec-SDK] | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Install rustup | |
| run: | | |
| curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y | |
| - name: Update PATH | |
| run: echo "PATH=$HOME/.cargo/bin:$PATH" >> $GITHUB_ENV | |
| - run: cargo check --no-default-features --features nvcodec -p hisui | |
| - run: cargo clippy --no-default-features --features nvcodec -p hisui -- --deny warnings | |
| - run: cargo test --no-default-features --features nvcodec -p hisui -- --test-threads=1 | |
| test-apple-toolbox: | |
| runs-on: | |
| group: Self | |
| labels: [self-hosted, macOS, ARM64] | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: 🍺 Set up Homebrew | |
| uses: Homebrew/actions/setup-homebrew@master | |
| - name: Install rustup | |
| run: | | |
| curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y | |
| - name: Update PATH | |
| run: echo "PATH=$HOME/.cargo/bin:$PATH" >> $GITHUB_ENV | |
| - name: Install packages to build external dependencies | |
| run: | | |
| brew update | |
| brew install meson ninja nasm yasm cmake automake autoconf libtool pkg-config | |
| - run: cargo check --no-default-features --workspace --exclude shiguredo_fdk_aac --exclude shiguredo_libvpx | |
| - run: cargo clippy --no-default-features --workspace --exclude shiguredo_fdk_aac --exclude shiguredo_libvpx -- --deny warnings | |
| - run: cargo test --no-default-features --workspace --exclude shiguredo_fdk_aac --exclude shiguredo_libvpx --exclude shiguredo_openh264 | |
| test-fdk-aac: | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - run: rustup update stable | |
| - run: rustup default stable | |
| - name: Install packages to build external dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y meson ninja-build nasm yasm build-essential autoconf automake libtool pkg-config yasm cmake libfdk-aac-dev | |
| - name: Cache cargo | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry/ | |
| ~/.cargo/git/ | |
| target/ | |
| # 以下のファイルのタイムスタンプが変わってしまうと build.rs が常に再実行されてしまうのでキャッシュする | |
| **/build.rs | |
| **/Cargo.toml | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/build.rs') }}-${{ github.job }}-${{ hashFiles('Cargo.lock') }} | |
| restore-keys: | | |
| # Cargo.toml と build.rs はキャッシュから復元するので、古いものを復元するのを避けるために候補キーに含める | |
| ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/build.rs') }}-${{ github.job }}- | |
| ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/build.rs') }}- | |
| - run: cargo test --package shiguredo_fdk_aac | |
| # shiguredo_fdk_aac はリリースビルドでだけセグフォすることがあったので、それもテストする | |
| # (最終的にはリリースバイナリを使った e2e で置き換えるべき) | |
| - run: cargo test --release --package shiguredo_fdk_aac | |
| - run: cargo test --no-default-features --features fdk-aac | |
| - run: cargo build --no-default-features --features fdk-aac | |
| - run: ldd target/debug/hisui | |
| - name: FDK-AAC が動的リンクされることを確認する | |
| run: ldd target/debug/hisui | grep fdk-aac | |
| - run: cargo build | |
| - run: ldd target/debug/hisui | |
| - name: FDK-AAC がリンクされないことを確認する | |
| run: if ldd target/debug/hisui | grep -q fdk-aac; then exit 1; else exit 0; fi | |
| test-openh264: | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 20 | |
| env: | |
| OPENH264_VERSION: "2.6.0" | |
| OPENH264_PATH: ${{ github.workspace }}/libopenh264.so | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - run: rustup update stable | |
| - run: rustup default stable | |
| - name: Install packages to build external dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y meson ninja-build nasm yasm build-essential autoconf automake libtool pkg-config yasm cmake | |
| - name: Cache cargo | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry/ | |
| ~/.cargo/git/ | |
| target/ | |
| # 以下のファイルのタイムスタンプが変わってしまうと build.rs が常に再実行されてしまうのでキャッシュする | |
| **/build.rs | |
| **/Cargo.toml | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/build.rs') }}-${{ github.job }}-${{ hashFiles('Cargo.lock') }} | |
| restore-keys: | | |
| # Cargo.toml と build.rs はキャッシュから復元するので、古いものを復元するのを避けるために候補キーに含める | |
| ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/build.rs') }}-${{ github.job }}- | |
| ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/build.rs') }}- | |
| - name: Download libopenh264 v${{ env.OPENH264_VERSION }} | |
| run: | | |
| curl -LO http://ciscobinary.openh264.org/libopenh264-${{ env.OPENH264_VERSION }}-linux64.8.so.bz2 | |
| bzip2 -d libopenh264-${{ env.OPENH264_VERSION }}-linux64.8.so.bz2 | |
| mv libopenh264-${{ env.OPENH264_VERSION }}-linux64.8.so ${{ env.OPENH264_PATH }} | |
| - run: cargo test --no-default-features -p hisui -p shiguredo_openh264 | |
| ubuntu-binary: | |
| name: "Upload Binary for Ubuntu" | |
| needs: [test] | |
| strategy: | |
| matrix: | |
| platform: | |
| - name: ubuntu-24.04_x86_64 | |
| runs-on: ubuntu-24.04 | |
| - name: ubuntu-24.04_arm64 | |
| runs-on: ubuntu-24.04-arm | |
| - name: ubuntu-22.04_x86_64 | |
| runs-on: ubuntu-22.04 | |
| - name: ubuntu-22.04_arm64 | |
| runs-on: ubuntu-22.04-arm | |
| runs-on: ${{ matrix.platform.runs-on }} | |
| timeout-minutes: 20 | |
| steps: | |
| - name: Checkout sources | |
| uses: actions/checkout@v5 | |
| - name: Install packages to build external dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y meson ninja-build nasm yasm build-essential autoconf automake libtool pkg-config yasm cmake | |
| # CUDA のインストール (x86_64 のみ) | |
| - uses: shiguredo/github-actions/.github/actions/setup-cuda-toolkit@main | |
| if: contains(matrix.platform.name, 'x86_64') | |
| id: cuda | |
| with: | |
| cuda_version: ${{ env.CUDA_VERSION }} | |
| platform: ${{ matrix.platform.runs-on }} | |
| - run: rustup update stable | |
| - run: rustup default stable | |
| # x86_64 では nvcodec feature を有効化 | |
| - name: Build with NVCODEC (x86_64) | |
| if: contains(matrix.platform.name, 'x86_64') | |
| run: cargo build --release --features nvcodec | |
| # ARM では通常ビルド | |
| - name: Build (ARM) | |
| if: contains(matrix.platform.name, 'arm64') | |
| run: cargo build --release | |
| - name: Get the version | |
| id: get_version | |
| run: | | |
| VERSION=$(cargo metadata --format-version 1 --no-deps | jq -r '.packages[] | select(.name == "hisui") | .version') | |
| echo "VERSION=$VERSION" >> $GITHUB_OUTPUT | |
| - run: | | |
| mkdir -p hisui-${{ steps.get_version.outputs.version }}_${{ matrix.platform.name }} | |
| cp target/release/hisui hisui-${{ steps.get_version.outputs.version }}_${{ matrix.platform.name }}/ | |
| tar -czf hisui-${{ steps.get_version.outputs.version }}_${{ matrix.platform.name }}.tar.gz \ | |
| hisui-${{ steps.get_version.outputs.version }}_${{ matrix.platform.name }} | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: hisui-binary-${{ matrix.platform.name }} | |
| path: hisui-${{ steps.get_version.outputs.version }}_${{ matrix.platform.name }}.tar.gz | |
| macos-binary: | |
| name: "Upload Binary for MacOS" | |
| needs: [test-apple-toolbox] | |
| strategy: | |
| matrix: | |
| platform: | |
| - name: macos-26_arm64 | |
| runs-on: macos-26 | |
| - name: macos-15_arm64 | |
| runs-on: macos-15 | |
| - name: macos-14_arm64 | |
| runs-on: macos-14 | |
| runs-on: ${{ matrix.platform.runs-on }} | |
| timeout-minutes: 20 | |
| steps: | |
| - name: Checkout sources | |
| uses: actions/checkout@v5 | |
| - name: Get the version | |
| id: get_version | |
| run: | | |
| VERSION=$(cargo metadata --format-version 1 --no-deps | jq -r '.packages[] | select(.name == "hisui") | .version') | |
| echo "VERSION=$VERSION" >> $GITHUB_OUTPUT | |
| - run: rustup update stable | |
| - run: rustup default stable | |
| - name: Install packages to build external dependencies | |
| run: | | |
| brew update | |
| brew install meson nasm yasm automake autoconf libtool pkg-config | |
| - run: cargo build --release | |
| - run: | | |
| mkdir -p hisui-${{ steps.get_version.outputs.version }}_${{ matrix.platform.name }} | |
| cp target/release/hisui hisui-${{ steps.get_version.outputs.version }}_${{ matrix.platform.name }}/ | |
| tar -czf hisui-${{ steps.get_version.outputs.version }}_${{ matrix.platform.name }}.tar.gz \ | |
| hisui-${{ steps.get_version.outputs.version }}_${{ matrix.platform.name }} | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: hisui-binary-${{ matrix.platform.name }} | |
| path: hisui-${{ steps.get_version.outputs.version }}_${{ matrix.platform.name }}.tar.gz | |
| docs_rs: | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 20 | |
| env: | |
| DOCS_RS: 1 | |
| steps: | |
| # docs.rs 向けでは外部ライブラリのビルドは走らないので依存パッケージなどのインストールは不要 | |
| - uses: actions/checkout@v5 | |
| - run: rustup update stable | |
| - run: rustup default stable | |
| - run: cargo doc --workspace --exclude hisui | |
| slack_notify_failed: | |
| needs: | |
| - check | |
| - clippy | |
| - test | |
| - test-nvidia-video-codec | |
| - test-apple-toolbox | |
| - test-fdk-aac | |
| - test-openh264 | |
| - ubuntu-binary | |
| - macos-binary | |
| - docs_rs | |
| timeout-minutes: 20 | |
| runs-on: ubuntu-24.04 | |
| if: failure() | |
| steps: | |
| - name: Slack Notification | |
| uses: rtCamp/action-slack-notify@v2 | |
| env: | |
| SLACK_CHANNEL: hisui | |
| SLACK_COLOR: danger | |
| SLACK_ICON_EMOJI: ":japanese_ogre:" | |
| SLACK_TITLE: "FAILED" | |
| SLACK_MESSAGE: <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|${{github.event.head_commit.message }}> | |
| SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} |