VOOZH about

URL: https://deepwiki.com/Accenture/Ocaramba/5.1-github-actions-workflow

⇱ GitHub Actions Workflow | Accenture/Ocaramba | DeepWiki


Loading...
Last indexed: 6 June 2026 (fb3580)
Menu

GitHub Actions Workflow

The Ocaramba framework utilizes GitHub Actions to automate the continuous integration and delivery (CI/CD) process. The workflow is defined in .github/workflows/github-actions.yml and is responsible for building the core libraries, generating API documentation, executing a comprehensive suite of tests across multiple platforms (Windows, Linux, Docker, Android), and publishing NuGet packages.

Workflow Triggers and Permissions

The workflow is configured to respond to various GitHub events to ensure code quality across all branches and releases.

Stage: Build and Documentation

The build_Stage_BuildOnWindows job is the foundational stage. It prepares the environment, handles versioning, and builds the core framework components.

Solution Pruning Technique

To optimize build times and isolate core library compilation, the workflow uses a PowerShell script to dynamically remove test sub-projects from the Ocaramba.sln file before the dotnet restore and dotnet build commands .github/workflows/github-actions.yml44-63 This ensures that the build stage focuses strictly on OcarambaLite and Ocaramba.

Version Injection and SHFB

Workflow Logic Flow


Sources: .github/workflows/github-actions.yml29-116

Stage: Multi-Platform Test Execution

Ocaramba runs tests across diverse environments using parallel jobs. Each job typically uses a specific PowerShell script from the scripts/ directory to orchestrate execution.

Job NameEnvironmentPrimary ScriptDescription
test_Stage_RunTestsOnDockerubuntu-latestExecutingTestsOnDockerGithubActions.ps1Builds/pushes Docker images and runs tests inside a custom Selenium Docker container .github/workflows/github-actions.yml117-156
test_Stage_RunTestsOnWindows1-6windows-latestExecutingTestsOnWindowsGithubActions*.ps1Split into 6 parallel jobs to run NUnit, MsTest, Xunit, and Cloud tests .github/workflows/github-actions.yml210-211
test_Stage_RunTestsOnLinuxubuntu-latestExecutingTestsOnLinuxAzure.ps1Validates framework compatibility on Linux .github/workflows/github-actions.yml185-186
test_Stage_RunTestsOnAndroidmacos-latestN/AUses ReactiveCircus Android Emulator action to run Appium tests .github/workflows/github-actions.yml250-280

Configuration Injection

Before running tests, the workflow invokes set_AppConfig_for_tests.ps1. This script modifies appsettings.json or appsettings.Linux.json to inject environment-specific values like browser types, driver paths, or Remote WebDriver URLs scripts/ExecutingTestsOnWindowsGithubActions5.ps17-11 scripts/ExecutingTestsOnLinuxAzure.ps19-11

Test Orchestration Mapping


Sources: scripts/ExecutingTestsOnWindowsGithubActions4.ps11-16 scripts/ExecutingTestsOnWindowsGithubActions5.ps11-13 scripts/ExecutingTestsOnWindowsGithubActions6.ps11-9

BrowserStack and Cloud Integration

The workflow includes dedicated steps for BrowserStack and SauceLabs.

Docker Execution Flow

The Docker stage performs security scans and functional testing within a containerized environment.

  1. Security: Runs checkov for image scanning and aquasecurity/trivy-action for vulnerability detection .github/workflows/github-actions.yml133-149
  2. Execution: Launches the environment via docker-compose.yml .github/workflows/github-actions.yml154
  3. Internal Pruning: Inside the container, the script ExecutingTestsOnDockerGithubActions.ps1 uses sed to prune the solution file before building and running tests scripts/ExecutingTestsOnDockerGithubActions.ps15-7

Docker Entity Association


Sources: .github/workflows/github-actions.yml117-156 scripts/ExecutingTestsOnDockerGithubActions.ps11-12

Artifact Management and Publishing

At the end of the pipeline, results and packages are handled:

  1. Test Results: .trx files are collected and published using EnricoMi/publish-unit-test-result-action to provide a summary in the PR .github/workflows/github-actions.yml158-164
  2. Logs: The TestOutput directory (containing NLog logs and screenshots) is zipped and uploaded as a GitHub artifact scripts/ExecutingTestsOnDockerGithubActions.ps114 scripts/ExecutingTestsOnWindowsGithubActions4.ps18-9
  3. NuGet Release: The release_Stage_PublishNuget job (triggered on tags) downloads the .nupkg and .snupkg artifacts created in the build stage and pushes them to NuGet.org.

Sources: .github/workflows/github-actions.yml1-330 scripts/ExecutingTestsOnWindowsGithubActions4.ps11-16 scripts/ExecutingTestsOnWindowsGithubActions5.ps11-33 scripts/ExecutingTestsOnWindowsGithubActions6.ps11-18 scripts/ExecutingTestsOnDockerGithubActions.ps11-21 scripts/ExecutingTestsOnLinuxBrowserStackGithubActions.ps11-18