svn commit: r1920766 - in /subversion/trunk/.github: ./ workflows/ workflows/cmake.yml

[email protected]
Newsgroups gmane.comp.version-control.subversion.svn
Message-ID <[email protected]>
Author: rinrab
Date: Wed Sep 18 11:58:19 2024
New Revision: 1920766

URL: http://svn.apache.org/viewvc?rev=1920766&view=rev
Log:
GitHub Actions: Configure initial workflow.

This workflow has been already tested in my GitHub fork, and should work
correctly. It does the following:

- Building the project using CMake.
- Running on Windows and Linux platforms.
- Checks `install`, and shared/static configurations.
- Run the test-suite (C and Python).

Note: some tests are not yet passing with CMake, and will be fixed soon.

The idea of configuring the GitHub Actions has discussed on dev@ in the
'Using GitHub Actions for continuous integration' thread [1].

After this commit, the actions should be available on the GitHub mirror
of the project at [2].

[1] https://lists.apache.org/thread/42gpcjh06526kpkt6yx2d0dhv98qbl7d
[2] https://github.com/apache/subversion/actions

* .github/workflows/cmake.yml: New file with recursively created parents.

Added:
    subversion/trunk/.github/
    subversion/trunk/.github/workflows/
    subversion/trunk/.github/workflows/cmake.yml

Added: subversion/trunk/.github/workflows/cmake.yml
URL: http://svn.apache.org/viewvc/subversion/trunk/.github/workflows/cmake.yml?rev=1920766&view=auto
==============================================================================
--- subversion/trunk/.github/workflows/cmake.yml (added)
+++ subversion/trunk/.github/workflows/cmake.yml Wed Sep 18 11:58:19 2024
@@ -0,0 +1,119 @@
+name: Build and Test Subversion with CMake
+
+on:
+  push:
+    branches: ["*"]
+
+concurrency:
+  group: ${{ github.ref }}
+  cancel-in-progress: false
+
+defaults:
+  run:
+    shell: pwsh
+
+jobs:
+  build:
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - name: Windows, shared, x64
+            os: windows-latest
+            build_shared: ON
+            vcpkg_triplet: x64-windows
+            arch: x64
+          - name: Windows, shared, x86
+            os: windows-latest
+            build_shared: ON
+            vcpkg_triplet: x86-windows
+            arch: x86
+          - name: Windows, static, x64, with tests
+            os: windows-latest
+            build_shared: OFF
+            vcpkg_triplet: x64-windows-static
+            arch: x64
+            run_tests: true
+          - name: Linux, shared, with tests
+            os: ubuntu-latest
+            build_shared: ON
+            run_tests: true
+
+    runs-on: ${{ matrix.os }}
+    name: ${{ matrix.name }}
+
+    env:
+      VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
+
+    steps:
+      - name: Prepare Enviroment (Windows)
+        if: runner.os == 'Windows'
+        run: |
+          $root = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
+          Import-Module "$root\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
+          Enter-VsDevShell -VsInstallPath $root -DevCmdArguments "-arch=${{ matrix.arch }}"
+
+          ls env: | foreach { "$($_.Name)=$($_.Value)" >> $env:GITHUB_ENV }
+
+      - name: Prepare Enviroment (Linux)
+        if: runner.os == 'Windows'
+        run: |
+          # nothing yet
+
+      - name: Export GitHub Actions cache environment variables
+        if: runner.os == 'Windows'
+        uses: actions/github-script@v7
+        with:
+          script: |
+            core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
+            core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
+
+      - name: Install dependecies (Windows, vcpkg)
+        if: runner.os == 'Windows'
+        run: |
+          C:\vcpkg\vcpkg.exe install --triplet ${{ matrix.vcpkg_triplet }} `
+            apr apr-util expat zlib sqlite3
+
+          "CMAKE_PREFIX_PATH=C:\vcpkg\installed\${{ matrix.vcpkg_triplet }}" >> $env:GITHUB_ENV
+
+      - name: Install dependecies (Linux, apt-get)
+        if: runner.os == 'Linux'
+        run: >
+          sudo apt-get install
+          libtool
+          libtool-bin
+          libapr1-dev
+          libaprutil1-dev
+          libexpat1-dev
+          zlib1g-dev
+          libsqlite3-dev
+          ninja-build
+
+      - uses: actions/checkout@v4
+
+      - name: gen-make
+        run: python ./gen-make.py -t cmake
+
+      - name: Configure CMake
+        run: >
+          cmake -B out -G Ninja
+          -DBUILD_SHARED_LIBS=${{ matrix.build_shared }}
+          -DSVN_ENABLE_TESTS=ON
+          -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/installdir
+
+      - name: Build CMake
+        run: cmake --build out
+
+      - name: Install
+        run: cmake --install out
+
+      - name: Run all tests
+        id: run_all_tests
+        if: matrix.run_tests
+        working-directory: out
+        run: ctest --output-on-failure --verbose
+
+      - name: Rerun failed tests
+        if: ${{ matrix.run_tests && failure() && steps.run_all_tests.conclusion == 'failure' }}
+        working-directory: out
+        run: ctest --output-on-failure --verbose --rerun-failed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.