name: VPM CI on: push: paths: - '**/vpm_ci.yml' - '**/cmd/tools/vpm/**' pull_request: paths: - '**/vpm_ci.yml' - '**/cmd/tools/vpm/**' concurrency: group: vpm-${{ github.workflow }}-${{ github.ref == 'refs/heads/master' && github.sha || github.ref }} cancel-in-progress: true jobs: setup-vpm: strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] fail-fast: false runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v6 with: path: vlang - name: Show git version run: git version - name: Build V if: runner.os != 'Windows' run: cd vlang && make -j4 && ./v doctor - name: Build V (Windows) if: runner.os == 'Windows' run: cd vlang && ./makev.bat && ./v doctor - name: Cache V uses: actions/cache/save@v5 with: path: vlang key: ${{ runner.os }}-${{ github.sha }} test-vpm: needs: setup-vpm strategy: matrix: include: - os: ubuntu-latest cc: tcc - os: ubuntu-latest cc: gcc - os: ubuntu-latest cc: clang - os: macos-latest cc: clang - os: windows-latest cc: tcc - os: windows-latest cc: gcc - os: windows-latest cc: msvc fail-fast: false runs-on: ${{ matrix.os }} steps: - name: Restore V cache uses: actions/cache/restore@v5 with: path: vlang key: ${{ runner.os }}-${{ github.sha }} - name: Show git version run: git version - name: Build and test VPM run: | cd vlang ./v -W -N cmd/tools/vpm ./v -cc ${{ matrix.cc }} -d network test cmd/tools/vpm