+
Skip to content

Nightly

Nightly #75

Workflow file for this run

name: Nightly
on:
schedule:
# Run every night at 2 AM UTC
- cron: '0 2 * * *'
workflow_dispatch: # Allow manual triggering
env:
BUILD_TYPE: Release
jobs:
nightly-build:
name: Nightly Build - ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- {
name: "Windows MSVC Latest",
os: windows-latest,
generator: "Ninja",
cc: "cl",
cxx: "cl"
}
- {
name: "Ubuntu GCC Latest",
os: ubuntu-latest,
generator: "Ninja",
cc: "gcc-14",
cxx: "g++-14"
}
- {
name: "Ubuntu Clang Latest",
os: ubuntu-latest,
generator: "Ninja",
cc: "clang",
cxx: "clang++"
}
- {
name: "macOS Clang Latest",
os: macos-latest,
generator: "Ninja",
cc: "clang",
cxx: "clang++",
min_clang_version: "17"
}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup CMake and Ninja
uses: lukka/get-cmake@latest
- name: Install Linux dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y build-essential gcc-14 g++-14
- name: Check macOS Clang version
if: runner.os == 'macOS'
id: clang_check
run: |
# Check current Clang version
clang_version=$(clang --version | head -n1 | grep -o '[0-9]\+\.[0-9]\+' | head -n1 | cut -d. -f1)
echo "Current Clang version: $clang_version"
echo "clang_version=$clang_version" >> $GITHUB_OUTPUT
if [[ "${{ matrix.config.min_clang_version }}" != "" ]] && [[ $clang_version -lt ${{ matrix.config.min_clang_version }} ]]; then
echo "Clang version $clang_version is less than required ${{ matrix.config.min_clang_version }}"
echo "Skipping this build as it's not compatible with older Clang versions"
echo "skip_build=true" >> $GITHUB_OUTPUT
else
echo "skip_build=false" >> $GITHUB_OUTPUT
fi
- name: Skip build notification
if: runner.os == 'macOS' && steps.clang_check.outputs.skip_build == 'true'
run: |
echo "::notice::Skipping macOS build due to incompatible Clang version (${{ steps.clang_check.outputs.clang_version }} < ${{ matrix.config.min_clang_version }})"
- name: Setup MSVC
if: runner.os == 'Windows'
uses: ilammy/msvc-dev-cmd@v1
- name: Configure CMake
if: steps.clang_check.outputs.skip_build != 'true'
shell: bash
run: |
cmake -B build \
-G "${{ matrix.config.generator }}" \
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
-DCMAKE_C_COMPILER=${{ matrix.config.cc }} \
-DCMAKE_CXX_COMPILER=${{ matrix.config.cxx }} \
-DOULY_BUILD_TESTS=ON \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
working-directory: ${{ github.workspace }}
env:
CC: ${{ matrix.config.cc }}
CXX: ${{ matrix.config.cxx }}
- name: Build
if: steps.clang_check.outputs.skip_build != 'true'
working-directory: build
run: cmake --build . --config ${{ env.BUILD_TYPE }} --parallel
- name: Test
if: steps.clang_check.outputs.skip_build != 'true'
working-directory: build
run: ctest -C ${{ env.BUILD_TYPE }} --output-on-failure --parallel
- name: Report Status
if: failure() && steps.clang_check.outputs.skip_build != 'true'
run: |
echo "::warning::Nightly build failed for ${{ matrix.config.name }}"
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载