diff options
author | Ladislav Zezula <zezula@volny.cz> | 2025-05-26 20:22:44 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-26 20:22:44 +0200 |
commit | 7acd704ad0800d229962c4a29b71ef66cfa0ca1c (patch) | |
tree | e98e32a49b7c0860223ce280e005a2c559f703df /.github/workflows/release.yml | |
parent | c6d89095fcdcaa83987d64040f44416bd9083f25 (diff) | |
parent | 4b38800ab7eba3db99935b5aa3d79c02395cfc95 (diff) |
Merge pull request #382 from cen1/feature/ci
CMake modernization, basic CI, release artefacts, readme
Diffstat (limited to '.github/workflows/release.yml')
-rw-r--r-- | .github/workflows/release.yml | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..18702ed --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,187 @@ +name: Release + +on: + push: + tags: + - '*' + +jobs: + deb: + if: true + runs-on: ubuntu-latest + container: + image: debian:bookworm + env: + BUILD_TYPE: Release + + steps: + - uses: actions/checkout@v4 + + - name: Install dependencies + run: apt-get -y update && apt-get install -y build-essential cmake + + - name: Cmake + run: cmake -B build -D BUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=$BUILD_TYPE + + - name: Build + run: cmake --build build --config $BUILD_TYPE + + - name: Package + id: package + working-directory: build + run: | + cpack -G "DEB" -D CPACK_PACKAGE_FILE_NAME=libstorm-dev_${{ github.ref_name }}_amd64 + + - uses: actions/upload-artifact@v4 + with: + retention-days: 1 + overwrite: true + name: libstorm-dev_${{ github.ref_name }}_amd64.deb + path: build/libstorm-dev_${{ github.ref_name }}_amd64.deb + + rpm: + if: true + runs-on: ubuntu-latest + container: + image: fedora:latest + env: + BUILD_TYPE: Release + + steps: + - uses: actions/checkout@v4 + + - name: Install dependencies + run: dnf -y install cmake gcc gcc-c++ rpm-build + + - name: Cmake + run: cmake -B build -D BUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=$BUILD_TYPE + + - name: Build + run: cmake --build build --config $BUILD_TYPE + + - name: Package + working-directory: build + run: cpack -G "RPM" -D CPACK_PACKAGE_FILE_NAME=libstorm-devel-${{ github.ref_name }}.x86_64 + + - uses: actions/upload-artifact@v4 + with: + retention-days: 1 + overwrite: true + name: libstorm-devel-${{ github.ref_name }}.x86_64.rpm + path: build/libstorm-devel-${{ github.ref_name }}.x86_64.rpm + + build_win: + if: true + runs-on: windows-latest + strategy: + matrix: + arch: [ amd64, x86 ] + build_type: [ Release, Debug ] + unicode: [ ON, OFF ] + shared: [ ON, OFF ] + + steps: + - uses: actions/checkout@v4 + + - uses: TheMrMilchmann/setup-msvc-dev@v3 + with: + arch: ${{ matrix.arch }} + + - name: Configure CMake for amd64 + if: ${{ matrix.arch == 'amd64' }} + shell: cmd + run: cmake -B build -DBUILD_SHARED_LIBS=${{ matrix.shared }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DSTORM_UNICODE=${{ matrix.unicode }} + + - name: Configure CMake for x86 + if: ${{ matrix.arch == 'x86' }} + shell: cmd + run: cmake -B build -DBUILD_SHARED_LIBS=${{ matrix.shared }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DSTORM_UNICODE=${{ matrix.unicode }} -A Win32 + + - name: Build + shell: cmd + run: cmake --build build --config ${{ matrix.build_type }} + + - name: Check PE + if: ${{ matrix.shared == 'ON' }} + shell: bash + working-directory: ./build/${{ matrix.build_type }} + run: | + file "stormlib.dll" + if [[ "${{ matrix.arch }}" == "x86" ]]; then + file "stormlib.dll" | grep -E "Intel 80386|Intel i386" + else + file "stormlib.dll" | grep "x86-64" + fi + + - name: Install to staging area + shell: cmd + run: cmake --install build --prefix build/staging --config ${{ matrix.build_type }} + + - name: Create Archive + shell: pwsh + id: create_archive + working-directory: ./build/staging + run: | + $r = if ("${{ matrix.build_type }}" -eq "Release") { "R" } else { "D" } + $a = if ("${{ matrix.unicode }}" -eq "ON") { "U" } else { "A" } + $s = if ("${{ matrix.shared }}" -eq "ON") { "D" } else { "S" } + + $zipSuffix = "${r}${a}${s}" + $zipName = "stormlib_${{ github.ref_name }}_${{ matrix.arch }}_${zipSuffix}.zip" + "zip_name=$zipName" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append + + Compress-Archive -Path include -DestinationPath $zipName + + $binItems = Get-ChildItem -Path bin\* -ErrorAction SilentlyContinue + if ($binItems) { + Compress-Archive -Path bin/* -DestinationPath $zipName -Update + } + $libItems = Get-ChildItem -Path lib\* -ErrorAction SilentlyContinue + if ($libItems) { + Compress-Archive -Path "lib/*" -DestinationPath $zipName -Update + } + - uses: actions/upload-artifact@v4 + with: + retention-days: 1 + overwrite: true + name: ${{ steps.create_archive.outputs.zip_name }} + path: build/staging/${{ steps.create_archive.outputs.zip_name }} + + release: + needs: [deb, rpm, build_win] + runs-on: ubuntu-latest + + steps: + - name: Download deb + uses: actions/download-artifact@v4 + with: + name: libstorm-dev_${{ github.ref_name }}_amd64.deb + + - name: Download rpm + uses: actions/download-artifact@v4 + with: + name: libstorm-devel-${{ github.ref_name }}.x86_64.rpm + + - name: Download win + uses: actions/download-artifact@v4 + with: + pattern: "*.zip" + merge-multiple: true + + - name: Generate SHA256 checksums + run: | + for file in *.zip *.deb *.rpm; do + sha256sum "$file" >> "release.sha256" + done + + - name: Create GitHub Release + uses: softprops/action-gh-release@v1 + with: + files: | + *.deb + *.sha256 + *.rpm + *.zip + tag_name: ${{ github.ref_name }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
\ No newline at end of file |