Full Release Pipeline #11
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: Full Release Pipeline | |
| on: | |
| push: | |
| tags: | |
| - 'v*' | |
| jobs: | |
| release: | |
| name: Build & Publish for ${{ matrix.target }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-latest | |
| target: linux-x64 | |
| bin_name: latex_math_symbol | |
| - os: windows-latest | |
| target: win32-x64 | |
| bin_name: latex_math_symbol.exe | |
| - os: macos-latest | |
| target: darwin-x64 | |
| bin_name: latex_math_symbol | |
| cmake_arch: "x86_64" | |
| - os: macos-latest | |
| target: darwin-arm64 | |
| bin_name: latex_math_symbol | |
| cmake_arch: "arm64" | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v4 | |
| - name: Install C++ Build Tools (Ubuntu) | |
| if: matrix.os == 'ubuntu-latest' | |
| run: sudo apt-get update && sudo apt-get install -y flex bison | |
| - name: Install C++ Build Tools (Windows) | |
| if: matrix.os == 'windows-latest' | |
| run: choco install winflexbison3 | |
| - name: Install C++ Build Tools & Set Path (macOS) | |
| if: matrix.os == 'macos-latest' | |
| run: | | |
| brew install flex bison | |
| echo "/opt/homebrew/opt/bison/bin" >> $GITHUB_PATH | |
| echo "/usr/local/opt/bison/bin" >> $GITHUB_PATH | |
| echo "/opt/homebrew/opt/flex/bin" >> $GITHUB_PATH | |
| echo "/usr/local/opt/flex/bin" >> $GITHUB_PATH | |
| - name: Build Backend (Ubuntu & Windows) | |
| if: matrix.os != 'macos-latest' | |
| run: | | |
| cd backend/cpp | |
| mkdir build && cd build | |
| cmake .. -DCMAKE_BUILD_TYPE=Release | |
| cmake --build . --config Release | |
| shell: bash | |
| - name: Build Backend (macOS) | |
| if: matrix.os == 'macos-latest' | |
| run: | | |
| cd backend/cpp | |
| mkdir build && cd build | |
| cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES="${{ matrix.cmake_arch }}" | |
| cmake --build . --config Release | |
| shell: bash | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: 'npm' | |
| cache-dependency-path: 'frontend/latex-math-symbol/package-lock.json' | |
| - name: Install Extension Dependencies | |
| run: | | |
| cd frontend/latex-math-symbol | |
| npm install | |
| - name: Prepare Binary for Packaging | |
| run: | | |
| mkdir -p frontend/latex-math-symbol/bin | |
| if [ "${{ matrix.os }}" = "windows-latest" ]; then | |
| cp backend/cpp/build/Release/${{ matrix.bin_name }} frontend/latex-math-symbol/bin/ | |
| else | |
| cp backend/cpp/build/${{ matrix.bin_name }} frontend/latex-math-symbol/bin/ | |
| fi | |
| shell: bash | |
| - name: Package Extension | |
| run: | | |
| cd frontend/latex-math-symbol | |
| npx @vscode/vsce package --target ${{ matrix.target }} -o ../../latex-math-symbol-${{ matrix.target }}.vsix | |
| shell: bash | |
| - name: Upload to GitHub Release | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| files: latex-math-symbol-${{ matrix.target }}.vsix | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |