Skip to content

Commit 4db5542

Browse files
Copiloteuropaul
andcommitted
Add Eden version selection based on PR target branch
- Add pr_base_ref capture in pr-gate.yml - Create eden-version-map.yml with branch-to-version mapping - Modify eden-trusted.yml to select Eden version dynamically - Map LTS branches (13.4-stable, 14.5-stable) to Eden 1.0.9 - Map all other branches to Eden 1.0.13 Co-authored-by: europaul <32612024+europaul@users.noreply.github.com>
1 parent 20713ab commit 4db5542

File tree

3 files changed

+89
-5
lines changed

3 files changed

+89
-5
lines changed

.github/eden-version-map.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Copyright (c) 2025, Zededa, Inc.
2+
# SPDX-License-Identifier: Apache-2.0
3+
---
4+
# Eden version mapping for different EVE branches
5+
# Maps EVE base branch names to Eden workflow versions
6+
# Format:
7+
# branch-name:
8+
# workflow_ref: "lf-edge/eden/.github/workflows/test.yml@<version>"
9+
# eden_version: "<version>"
10+
11+
# LTS releases (13.4 and 14.5) use older Eden version
12+
13.4-stable:
13+
workflow_ref: "lf-edge/eden/.github/workflows/test.yml@1.0.9"
14+
eden_version: "1.0.9"
15+
16+
14.5-stable:
17+
workflow_ref: "lf-edge/eden/.github/workflows/test.yml@1.0.9"
18+
eden_version: "1.0.9"
19+
20+
# Default mapping for all other branches (master, development branches, etc.)
21+
default:
22+
workflow_ref: "lf-edge/eden/.github/workflows/test.yml@1.0.13"
23+
eden_version: "1.0.13"

.github/workflows/eden-trusted.yml

Lines changed: 61 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ jobs:
2828
pr_id: ${{ steps.extract.outputs.pr_id }}
2929
original_run_id: ${{ steps.extract.outputs.original_run_id }}
3030
pr_sha: ${{ steps.extract.outputs.pr_sha }}
31+
pr_base_ref: ${{ steps.extract.outputs.pr_base_ref }}
3132
hv: ${{ steps.extract.outputs.hv }}
3233
arch: ${{ steps.extract.outputs.arch }}
3334
platform: ${{ steps.extract.outputs.platform }}
@@ -64,7 +65,7 @@ jobs:
6465
if: ${{ steps.check_gate.outputs.skip_run == 'false' }}
6566
env:
6667
RUN_CONTEXT_FILE: ${{ env.RUN_CONTEXT_FILE }}
67-
REQUIRED_FIELDS: pr_id, original_run_id, pr_sha, hv, arch, platform, gate_run_id, gate_status_name
68+
REQUIRED_FIELDS: pr_id, original_run_id, pr_sha, pr_base_ref, hv, arch, platform, gate_run_id, gate_status_name
6869
run: |
6970
if [[ ! -f "$RUN_CONTEXT_FILE" ]]; then
7071
echo "$RUN_CONTEXT_FILE file not found"
@@ -95,7 +96,7 @@ jobs:
9596
if: ${{ steps.check_gate.outputs.skip_run == 'false' }}
9697
id: extract
9798
env:
98-
FIELDS: pr_id, original_run_id, pr_sha, hv, arch, platform, gate_run_id, gate_status_name
99+
FIELDS: pr_id, original_run_id, pr_sha, pr_base_ref, hv, arch, platform, gate_run_id, gate_status_name
99100
run: |
100101
# Extract fields from the JSON file
101102
for field in $(echo "$FIELDS" | tr ',' ' '); do
@@ -175,18 +176,73 @@ jobs:
175176
}
176177
177178
179+
select_eden_version:
180+
name: Select Eden Version
181+
runs-on: ubuntu-latest
182+
needs: context
183+
if: needs.context.outputs.skip_run == 'false'
184+
outputs:
185+
workflow_ref: ${{ steps.select.outputs.workflow_ref }}
186+
eden_version: ${{ steps.select.outputs.eden_version }}
187+
steps:
188+
- name: Checkout repository
189+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
190+
191+
- name: Select Eden version based on target branch
192+
id: select
193+
env:
194+
BASE_REF: ${{ needs.context.outputs.pr_base_ref }}
195+
run: |
196+
MAPPING_FILE=".github/eden-version-map.yml"
197+
198+
if [[ ! -f "$MAPPING_FILE" ]]; then
199+
echo "::error::Eden version mapping file not found: $MAPPING_FILE"
200+
exit 1
201+
fi
202+
203+
echo "PR target branch: $BASE_REF"
204+
205+
# Try to get the mapping for the specific branch
206+
workflow_ref=$(yq eval ".\"$BASE_REF\".workflow_ref" "$MAPPING_FILE")
207+
eden_version=$(yq eval ".\"$BASE_REF\".eden_version" "$MAPPING_FILE")
208+
209+
# If no specific mapping exists, use the default
210+
if [[ "$workflow_ref" == "null" || -z "$workflow_ref" ]]; then
211+
echo "No specific mapping found for branch '$BASE_REF', using default"
212+
workflow_ref=$(yq eval '.default.workflow_ref' "$MAPPING_FILE")
213+
eden_version=$(yq eval '.default.eden_version' "$MAPPING_FILE")
214+
fi
215+
216+
# Verify that we have valid values
217+
if [[ "$workflow_ref" == "null" || -z "$workflow_ref" ]]; then
218+
echo "::error::Failed to determine workflow_ref for branch '$BASE_REF'"
219+
exit 1
220+
fi
221+
222+
if [[ "$eden_version" == "null" || -z "$eden_version" ]]; then
223+
echo "::error::Failed to determine eden_version for branch '$BASE_REF'"
224+
exit 1
225+
fi
226+
227+
echo "Selected Eden workflow: $workflow_ref"
228+
echo "Selected Eden version: $eden_version"
229+
230+
echo "workflow_ref=$workflow_ref" >> "$GITHUB_OUTPUT"
231+
echo "eden_version=$eden_version" >> "$GITHUB_OUTPUT"
232+
233+
178234
tests:
179235
name: ${{ needs.context.outputs.eden_parent_job_title }}
180-
needs: context
236+
needs: [context, select_eden_version]
181237
if: needs.context.outputs.skip_run == 'false'
182-
uses: lf-edge/eden/.github/workflows/test.yml@1.0.13
238+
uses: ${{ needs.select_eden_version.outputs.workflow_ref }}
183239
secrets: inherit
184240
with:
185241
eve_image: "evebuild/pr:${{ needs.context.outputs.pr_id }}"
186242
eve_log_level: "debug"
187243
eve_artifact_name: "eve-${{ needs.context.outputs.hv }}-${{ needs.context.outputs.arch }}-${{ needs.context.outputs.platform }}"
188244
artifact_run_id: ${{ needs.context.outputs.original_run_id }}
189-
eden_version: "1.0.13"
245+
eden_version: ${{ needs.select_eden_version.outputs.eden_version }}
190246

191247
finalize:
192248
name: Finalize Eden Runner status

.github/workflows/pr-gate.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,11 @@ jobs:
4545
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4646
run: |
4747
pr_id=$(gh api /search/issues -X GET -f q="type:pr is:open repo:${GH_REPO} sha:${{ github.event.workflow_run.head_sha }}" -q '.items[0].number')
48+
pr_base_ref=$(gh pr view "$pr_id" --json baseRefName -q '.baseRefName')
4849
echo "pr_id=$pr_id" >> "$GITHUB_OUTPUT"
4950
echo "pr_sha=${{ github.event.workflow_run.head_sha }}" >> "$GITHUB_OUTPUT"
5051
echo "original_run_id=${{ github.event.workflow_run.id }}" >> "$GITHUB_OUTPUT"
52+
echo "pr_base_ref=$pr_base_ref" >> "$GITHUB_OUTPUT"
5153
5254
- name: Gather Context (pull_request_review)
5355
id: from_review
@@ -60,13 +62,15 @@ jobs:
6062
echo "pr_id=${{ github.event.pull_request.number }}" >> "$GITHUB_OUTPUT"
6163
echo "pr_sha=$pr_sha" >> "$GITHUB_OUTPUT"
6264
echo "original_run_id=$original_run_id" >> "$GITHUB_OUTPUT"
65+
echo "pr_base_ref=${{ github.event.pull_request.base.ref }}" >> "$GITHUB_OUTPUT"
6366
6467
- name: Promote Context for Local Use
6568
id: meta
6669
run: |
6770
echo "pr_id=${{ steps.from_run.outputs.pr_id || steps.from_review.outputs.pr_id }}" >> "$GITHUB_OUTPUT"
6871
echo "pr_sha=${{ steps.from_run.outputs.pr_sha || steps.from_review.outputs.pr_sha }}" >> "$GITHUB_OUTPUT"
6972
echo "original_run_id=${{ steps.from_run.outputs.original_run_id || steps.from_review.outputs.original_run_id }}" >> "$GITHUB_OUTPUT"
73+
echo "pr_base_ref=${{ steps.from_run.outputs.pr_base_ref || steps.from_review.outputs.pr_base_ref }}" >> "$GITHUB_OUTPUT"
7074
7175
- name: Check Review Decision
7276
id: reviews
@@ -123,6 +127,7 @@ jobs:
123127
echo '{ "pr_id": "${{ steps.meta.outputs.pr_id }}",
124128
"original_run_id": "${{ steps.meta.outputs.original_run_id }}",
125129
"pr_sha": "${{ steps.meta.outputs.pr_sha }}",
130+
"pr_base_ref": "${{ steps.meta.outputs.pr_base_ref }}",
126131
"hv": "${{ matrix.hv }}",
127132
"arch": "${{ matrix.arch }}",
128133
"platform": "${{ matrix.platform }}",

0 commit comments

Comments
 (0)