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


Reply via email to