Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
# urunc Continuous Integration (CI) reusable workflow
#
# This workflow defines the core CI pipeline for urunc.
# It is triggered via `workflow_call` by other workflows.
#
# The pipeline performs:
# - File and commit validation
# - Code linting
# - Build
# - Unit tests
# - End-to-end VM tests (multi-architecture)
# - Kubernetes (kind) tests
#
# Inputs allow skipping build/lint steps and specifying Go version.
name: urunc CI
on:
workflow_call:
Expand Down Expand Up @@ -27,6 +41,7 @@ permissions:

jobs:
validate-files-and-commits:
# Ensures file structure and commit messages follow project guidelines
if: ${{ inputs.skip-lint != 'yes' }}
name: Lint Files & commits
uses: ./.github/workflows/validate-files-and-commits.yml
Expand All @@ -35,6 +50,7 @@ jobs:
secrets: inherit

lint:
# Runs static analysis and formatting checks
name: Lint code
if: ${{ inputs.skip-lint != 'yes' }}
uses: ./.github/workflows/lint.yml
Expand All @@ -44,6 +60,7 @@ jobs:
secrets: inherit

build:
# Compiles the urunc binary
if: ${{ inputs.skip-build != 'yes' }}
name: Build
uses: ./.github/workflows/build.yml
Expand All @@ -53,6 +70,7 @@ jobs:
secrets: inherit

unit_test:
# Executes unit tests to verify core functionality
if: ${{ inputs.skip-build != 'yes' }}
name: Unit tests
uses: ./.github/workflows/unit_test.yml
Expand All @@ -62,6 +80,8 @@ jobs:
secrets: inherit

vm_test:
# Runs end-to-end tests inside virtual machine environments
# Includes multi-architecture testing (amd64, arm64)
if: ${{ inputs.skip-build != 'yes' }}
needs: [build, unit_test]
name: E2E test
Expand All @@ -80,6 +100,7 @@ jobs:
secrets: inherit

kind_test:
# Runs integration tests inside a Kubernetes cluster using kind
if: ${{ inputs.skip-build != 'yes' }}
needs: [build, unit_test]
name: Kubernetes test
Expand Down