build: optimize the workflow (#331)

This commit is contained in:
ykiko
2025-12-29 09:19:45 +08:00
committed by GitHub
parent 7105e36803
commit 7a29560065
22 changed files with 7160 additions and 7634 deletions

View File

@@ -21,7 +21,6 @@ jobs:
- os: windows-2025
llvm_mode: RelWithDebInfo
lto: ON
- os: ubuntu-24.04
llvm_mode: Debug
lto: OFF
@@ -31,7 +30,6 @@ jobs:
- os: ubuntu-24.04
llvm_mode: RelWithDebInfo
lto: ON
- os: macos-15
llvm_mode: Debug
lto: OFF
@@ -41,9 +39,7 @@ jobs:
- os: macos-15
llvm_mode: RelWithDebInfo
lto: ON
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v4

View File

@@ -1,16 +1,7 @@
name: format
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
pull-requests: write
checks: write
issues: write
workflow_call:
jobs:
check-format:
@@ -19,14 +10,9 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Pixi
uses: prefix-dev/setup-pixi@v0.9.3
- uses: ./.github/actions/setup-pixi
with:
pixi-version: v0.61.0
environments: format
activate-environment: true
cache: true
locked: true
- name: Run formatter
run: pixi run format

View File

@@ -1,57 +0,0 @@
name: cmake
on:
push:
branches: [main]
paths:
- ".github/workflows/cmake.yml"
- "include/**"
- "src/**"
- "tests/**"
- "CMakeLists.txt"
pull_request:
branches: [main]
paths:
- ".github/workflows/cmake.yml"
- "include/**"
- "src/**"
- "tests/**"
- "config/**"
- "CMakeLists.txt"
jobs:
build:
strategy:
fail-fast: false
matrix:
include:
- os: windows-2025
build_type: RelWithDebInfo
- os: ubuntu-24.04
build_type: Debug
- os: macos-15
build_type: Debug
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Pixi
uses: prefix-dev/setup-pixi@v0.9.3
with:
pixi-version: v0.61.0
environments: develop
activate-environment: true
cache: true
locked: true
- name: Build
run: |
pixi run ci-cmake-build ${{ matrix.build_type }}
- name: Test
run: |
pixi run ci-cmake-test

28
.github/workflows/deploy-docs.yml vendored Normal file
View File

@@ -0,0 +1,28 @@
name: deploy
on:
workflow_call:
jobs:
deploy-docs:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- uses: ./.github/actions/setup-pixi
with:
environments: node
- name: Build docs
run: pixi run build-docs
- name: Deploy to GitHub Pages
if: github.ref == 'refs/heads/main'
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: docs/.vitepress/dist
cname: clice.io

View File

@@ -1,43 +0,0 @@
name: deploy
on:
push:
branches: [main]
paths:
- "docs/**"
- ".github/workflows/deploy.yml"
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: "npm"
cache-dependency-path: docs/package-lock.json
- name: Install dependencies in docs
run: |
cd docs
npm install
- name: Build docs
run: |
cd docs
npm run docs:build
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: docs/.vitepress/dist
cname: clice.io

122
.github/workflows/main.yml vendored Normal file
View File

@@ -0,0 +1,122 @@
name: main
on:
push:
branches: [main]
tags: ["v*"]
pull_request:
branches: [main]
jobs:
changes:
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
runs-on: ubuntu-latest
permissions:
pull-requests: read
outputs:
format: ${{ steps.filter.outputs.format }}
docs: ${{ steps.filter.outputs.docs }}
clice: ${{ steps.filter.outputs.clice }}
vscode: ${{ steps.filter.outputs.vscode }}
cmake: ${{ steps.filter.outputs.cmake }}
xmake: ${{ steps.filter.outputs.xmake }}
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v3
id: filter
with:
filters: |
format:
- '**/*.{h,c,cpp,hpp,ts,js,lua,md,yml,yaml}'
docs:
- 'docs/**'
- '.github/workflows/deploy-docs.yml'
clice:
- 'src/**'
- 'include/**'
- 'CMakeLists.txt'
- '.github/workflows/publish-clice.yml'
vscode:
- 'editors/vscode/**'
- '.github/workflows/publish-vscode.yml'
cmake:
- 'CMakeLists.txt'
- 'src/**'
- 'include/**'
- 'tests/**'
- 'config/**'
- '.github/workflows/test-cmake.yml'
xmake:
- 'xmake.lua'
- 'src/**'
- 'include/**'
- 'tests/**'
- 'config/**'
- '.github/workflows/test-xmake.yml'
format:
needs: changes
permissions:
contents: read
checks: write
issues: write
pull-requests: write
if: ${{ needs.changes.outputs.format == 'true' }}
uses: ./.github/workflows/check-format.yml
deploy:
needs: changes
if: ${{ needs.changes.outputs.docs == 'true' }}
permissions:
contents: write
uses: ./.github/workflows/deploy-docs.yml
clice:
needs: changes
if: ${{ needs.changes.outputs.clice == 'true' }}
uses: ./.github/workflows/publish-clice.yml
vscode:
needs: changes
if: ${{ needs.changes.outputs.vscode == 'true' }}
uses: ./.github/workflows/publish-vscode.yml
cmake:
needs: changes
if: ${{ needs.changes.outputs.cmake == 'true' }}
uses: ./.github/workflows/test-cmake.yml
xmake:
needs: changes
if: ${{ needs.changes.outputs.xmake == 'true' }}
uses: ./.github/workflows/test-xmake.yml
release-clice:
permissions:
contents: write
if: startsWith(github.ref, 'refs/tags/v')
uses: ./.github/workflows/publish-clice.yml
secrets: inherit
release-vscode:
permissions:
contents: write
if: startsWith(github.ref, 'refs/tags/v')
uses: ./.github/workflows/publish-vscode.yml
secrets: inherit
checks-passed:
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
needs:
- format
- deploy
- clice
- vscode
- cmake
- xmake
runs-on: ubuntu-latest
steps:
- name: Check results
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}

View File

@@ -1,20 +1,10 @@
name: package
permissions:
contents: write
name: clice
on:
push:
tags:
- "v*"
pull_request:
branches: [main]
paths:
- ".github/workflows/package.yml"
workflow_call:
jobs:
package:
publish-clice:
strategy:
fail-fast: false
matrix:
@@ -24,21 +14,18 @@ jobs:
asset_name: clice-x64-windows-msvc.zip
symbol_artifact_name: clice-symbol.zip
symbol_asset_name: clice-x64-windows-msvc-symbol.zip
toolchain: clang-cl
- os: ubuntu-24.04
artifact_name: clice.tar.gz
asset_name: clice-x86_64-linux-gnu.tar.gz
symbol_artifact_name: clice-symbol.tar.gz
symbol_asset_name: clice-x86_64-linux-gnu-symbol.tar.gz
toolchain: clang-20
- os: macos-15
artifact_name: clice.tar.gz
asset_name: clice-arm64-macos-darwin.tar.gz
symbol_artifact_name: clice-symbol.tar.gz
symbol_asset_name: clice-arm64-macos-darwin-symbol.tar.gz
toolchain: clang
runs-on: ${{ matrix.os }}
@@ -57,13 +44,9 @@ jobs:
build-cache: true
build-cache-key: ${{ matrix.os }}-build-release-v1
- name: Setup Pixi
uses: prefix-dev/setup-pixi@v0.9.3
- uses: ./.github/actions/setup-pixi
with:
pixi-version: v0.61.0
activate-environment: true
cache: true
locked: true
environments: develop
- name: Remove ci llvm toolchain on Windows
if: runner.os == 'Windows'

View File

@@ -1,48 +1,31 @@
name: CI/CD VS Code Extension
name: vscode
on:
push:
tags: ["v*"]
branches: ["main"]
paths: ["editors/vscode/**"]
pull_request:
branches: ["main"]
paths: ["editors/vscode/**"]
workflow_call:
jobs:
publish:
publish-vscode:
runs-on: ubuntu-latest
permissions:
contents: write
defaults:
run:
working-directory: editors/vscode
steps:
- name: Checkout
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
- uses: ./.github/actions/setup-pixi
with:
node-version: "20"
- name: Install dependencies
run: npm ci
- name: Install vsce
run: npm install -g vsce
environments: node
- name: Publish and Package to Marketplace
env:
VSCE_PAT: ${{ secrets.VSCE_PAT }}
run: |
FLAG="${{ contains(github.ref_name, '-') && '--pre-release' || '' }}"
npm run package -- $FLAG
pixi run build-vscode $FLAG
if [[ "${{ github.ref }}" == "refs/tags/"* ]]; then
npm run publish -- -p "$VSCE_PAT" $FLAG
pixi run publish-vscode -p "$VSCE_PAT" $FLAG
fi
- name: Upload .vsix to Release

31
.github/workflows/test-cmake.yml vendored Normal file
View File

@@ -0,0 +1,31 @@
name: cmake
on:
workflow_call:
jobs:
build:
strategy:
fail-fast: false
matrix:
include:
- os: windows-2025
build_type: RelWithDebInfo
- os: ubuntu-24.04
build_type: Debug
- os: macos-15
build_type: Debug
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- uses: ./.github/actions/setup-pixi
with:
environments: develop
- name: Build
run: pixi run ci-cmake-build ${{ matrix.build_type }}
- name: Test
run: pixi run ci-cmake-test

View File

@@ -1,24 +1,7 @@
name: xmake
on:
push:
branches: [main]
paths:
- ".github/workflows/xmake.yml"
- "include/**"
- "src/**"
- "tests/**"
- "xmake.lua"
pull_request:
branches: [main]
paths:
- ".github/workflows/xmake.yml"
- "include/**"
- "src/**"
- "tests/**"
- "config/**"
- "xmake.lua"
workflow_call:
jobs:
build:
@@ -30,9 +13,7 @@ jobs:
exclude:
- os: windows-2025
build_type: debug
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
@@ -48,24 +29,16 @@ jobs:
build-cache: true
build-cache-key: ${{ matrix.os }}-${{ matrix.build_type }}
- name: Setup Pixi
uses: prefix-dev/setup-pixi@v0.9.3
- uses: ./.github/actions/setup-pixi
with:
pixi-version: v0.61.0
environments: develop
activate-environment: true
cache: true
locked: true
- name: Build
run: |
pixi run ci-xmake-build ${{ matrix.build_type }}
run: pixi run ci-xmake-build ${{ matrix.build_type }}
- name: Test
run: |
pixi run xmake-test
run: pixi run xmake-test
# Clean up llvm package to reduce cache size
- name: Remove llvm package (Linux)
if: runner.os == 'Linux'
run: xmake require --uninstall clice-llvm