在 Windows 上通过 GitHub Actions CI/CD 工作流程安装 GCC 和 G++

问题描述 投票:0回答:1

我正在设置 GitHub Actions CI/CD 工作流程,需要在 Windows 运行器上安装 gcc 和 g++ 来编译 C/C++ 代码。我希望安装完全自动化,作为 CI/CD 管道的一部分,无需任何手动干预。

我尝试了几种方法:

  • 使用 Chocolatey:这似乎是一个不错的选择,因为 Chocolatey 可以在 Windows 中管理包。我尝试添加一个命令来安装 mingw,其中包括 gcc 和 g++,但我不确定将 MinGW 添加到 GitHub Actions 中的 PATH 的最佳实践。 (但不起作用...)

  • 使用 MSYS2:另一个选择是安装 MSYS2 并使用 pacman 来获取 gcc 和 g++,但感觉有点复杂,并且由于设置步骤可能会减慢 CI/CD 管道的速度。 (但也不起作用...)

我的目标是拥有一个简单的解决方案,在 GitHub Actions 中的 Windows 运行器上安装 gcc 和 g++,这样我就可以编译 C/C++ 文件作为 CI 管道的一部分。这是到目前为止我使用 Chocolatey 在 YAML 文件中得到的内容,但我不完全确定它是否是最佳的:

这是我的跑步者,

name: Build Binary Windows

on:
  push:
    branches:
      - main 
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ${{ matrix.os }}

    strategy:
      matrix:
        os: [windows-latest]
        python-version: [3.8, 3.9, 3.10.x, 3.11, 3.12]
      fail-fast: false

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: ${{ matrix.python-version }}

      - name: Install dependencies & Build binary
        working-directory: ./tool
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
          .\setup.bat
          python -m PyInstaller `
            --collect-all z3        `
            --collect-all pyvex     `
            --collect-all angr      `
            --collect-all unicorn   `
            --collect-all cle       `
            --onefile --name capierre_binary src/__main__.py

      - name: Tests Fonctionnels
        working-directory: ./tool
        run: |
          ./launch_tests.bat "fonctionnel"

我的setup.bat是这样的:

@echo off

where choco >nul 2>&1
if %errorlevel% neq 0 (
    echo Installation de Chocolatey...
    powershell -Command "Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))"
)

choco install mingw -y

setx PATH "%PATH%;C:\ProgramData\chocolatey\lib\mingw\tools\install\mingw64\bin"

gcc --version

这是最好的方法,还是有更有效的方法在 Windows 上为 GitHub Actions 工作流程设置 GCC 和 G++? MSYS2 会提供更好的兼容性或速度吗?任何建议或改进将不胜感激。谢谢你!

windows gcc continuous-integration g++
1个回答
0
投票

我在我的 yml 文件中使用它:

- name: Setup C/C++ Compiler
  id: setup-compiler
  uses: rlalik/setup-cpp-compiler@master
  with:
    compiler: gcc-latest

- name: Verify GCC Installation
  run: |
    gcc --version
    g++ --version

来自此github:https://github.com/rlalik/setup-cpp-compiler

© www.soinside.com 2019 - 2024. All rights reserved.