|
1 | | -name: C++ Release CI |
| 1 | +name: Release |
2 | 2 |
|
3 | 3 | on: |
4 | 4 | push: |
|
11 | 11 | jobs: |
12 | 12 | build: |
13 | 13 | strategy: |
| 14 | + fail-fast: false |
14 | 15 | matrix: |
15 | 16 | include: |
16 | | - - os: "ubuntu-24.04" |
17 | | - fail-fast: false |
| 17 | + - os: ubuntu-24.04 |
| 18 | + preset: linux-ninja-Release |
| 19 | + build-preset: linux-ninja-Release |
| 20 | + cpack-generators: "TGZ;DEB;RPM" |
| 21 | + package-patterns: | |
| 22 | + build/cmcpp-*.tar.gz |
| 23 | + build/cmcpp_*.deb |
| 24 | + build/cmcpp-*.rpm |
| 25 | + extra-deps: | |
| 26 | + sudo apt-get update |
| 27 | + sudo apt-get install -y \ |
| 28 | + autoconf \ |
| 29 | + autoconf-archive \ |
| 30 | + automake \ |
| 31 | + build-essential \ |
| 32 | + ninja-build \ |
| 33 | + rpm |
18 | 34 |
|
19 | | - runs-on: ${{ matrix.os }} |
| 35 | + - os: windows-2022 |
| 36 | + preset: vcpkg-VS-17 |
| 37 | + build-preset: VS-17-Release |
| 38 | + cpack-generators: "ZIP;NSIS" |
| 39 | + cpack-config: "-C Release" |
| 40 | + package-patterns: | |
| 41 | + build/cmcpp-*.zip |
| 42 | + build/cmcpp-*.exe |
| 43 | + extra-deps: "" |
20 | 44 |
|
| 45 | + - os: macos-14 |
| 46 | + preset: linux-ninja-Release |
| 47 | + build-preset: linux-ninja-Release |
| 48 | + cpack-generators: "TGZ;ZIP" |
| 49 | + package-patterns: | |
| 50 | + build/cmcpp-*.tar.gz |
| 51 | + build/cmcpp-*.zip |
| 52 | + extra-deps: | |
| 53 | + brew install \ |
| 54 | + pkg-config \ |
| 55 | + autoconf \ |
| 56 | + autoconf-archive \ |
| 57 | + automake \ |
| 58 | + coreutils \ |
| 59 | + libtool \ |
| 60 | + cmake \ |
| 61 | + ninja |
| 62 | +
|
| 63 | + runs-on: ${{ matrix.os }} |
21 | 64 | permissions: |
22 | 65 | contents: write |
| 66 | + |
23 | 67 | steps: |
24 | 68 | - uses: actions/checkout@v4 |
25 | 69 | with: |
@@ -47,47 +91,45 @@ jobs: |
47 | 91 | restore-keys: | |
48 | 92 | ${{ runner.os }}-vcpkg- |
49 | 93 |
|
50 | | - - name: install dependencies |
51 | | - run: | |
52 | | - sudo apt-get update |
53 | | - sudo apt-get install -y \ |
54 | | - autoconf \ |
55 | | - autoconf-archive \ |
56 | | - automake \ |
57 | | - build-essential \ |
58 | | - ninja-build |
59 | | -
|
60 | | - - name: Install rust dependencies |
| 94 | + - name: Install dependencies |
| 95 | + if: matrix.extra-deps != '' |
| 96 | + run: ${{ matrix.extra-deps }} |
| 97 | + |
| 98 | + - name: Install Rust dependencies |
61 | 99 | run: | |
62 | 100 | cargo install wasm-tools wit-bindgen-cli || true |
63 | 101 |
|
64 | | - - name: configure |
| 102 | + - name: Configure CMake |
65 | 103 | run: | |
66 | | - cmake --preset linux-ninja-Release |
| 104 | + cmake --preset ${{ matrix.preset }} |
67 | 105 |
|
68 | | - - name: build |
| 106 | + - name: Build |
69 | 107 | run: | |
70 | | - cmake --build --preset linux-ninja-Release |
| 108 | + cmake --build --preset ${{ matrix.build-preset }} |
71 | 109 |
|
72 | | - - name: test |
| 110 | + - name: Run Tests |
73 | 111 | working-directory: build |
74 | 112 | run: | |
75 | | - ctest -VV |
| 113 | + ctest ${{ matrix.cpack-config || '' }} -VV |
76 | 114 |
|
77 | | - - name: Package |
| 115 | + - name: Create Packages |
| 116 | + working-directory: build |
78 | 117 | run: | |
79 | | - tar -czvf cmcpp-${GITHUB_REF_NAME}.tar.gz include LICENSE LICENSE-BOOST-PFR |
| 118 | + IFS=';' read -ra GENS <<< "${{ matrix.cpack-generators }}" |
| 119 | + for gen in "${GENS[@]}"; do |
| 120 | + cpack ${{ matrix.cpack-config || '' }} -G "$gen" |
| 121 | + done |
| 122 | + shell: bash |
80 | 123 |
|
81 | | - - name: Create Release |
82 | | - uses: ncipollo/release-action@v1 |
| 124 | + - name: Upload Packages |
| 125 | + uses: softprops/action-gh-release@v2 |
83 | 126 | with: |
84 | | - generateReleaseNotes: true |
85 | | - tag: ${{ github.ref_name }} |
86 | | - artifacts: cmcpp-${{ github.ref_name }}.tar.gz |
| 127 | + files: ${{ matrix.package-patterns }} |
| 128 | + fail_on_unmatched_files: false |
87 | 129 |
|
88 | 130 | - name: Upload error logs |
89 | 131 | if: ${{ failure() || cancelled() }} |
90 | 132 | uses: actions/upload-artifact@v4 |
91 | 133 | with: |
92 | | - name: ${{ matrix.os }}-logs |
| 134 | + name: ${{ runner.os }}-logs |
93 | 135 | path: ./**/*.log |
0 commit comments