Skip to content

Commit 953021c

Browse files
committed
chore: Fix setup actions
1 parent b7a1895 commit 953021c

File tree

7 files changed

+127
-53
lines changed

7 files changed

+127
-53
lines changed

ci/ado/tasks/setup-build-tools.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
parameters:
2+
- name: javaVersion
3+
type: string
4+
default: '17'
5+
- name: nodeVersion
6+
type: string
7+
default: '18'
8+
9+
steps:
10+
- template: sources/java.yml
11+
parameters:
12+
javaVersion: ${{ parameters.javaVersion }}
13+
14+
- template: sources/node.yml
15+
parameters:
16+
nodeVersion: ${{ parameters.nodeVersion }}
17+
18+
- script: |
19+
echo "No language-specific build tools configured for '${{ variables.source_dir }}'"
20+
exit 1
21+
displayName: 'No build tools required'
22+
condition: and(succeeded(), not(or(contains(variables['source_dir'], 'java'), contains(variables['source_dir'], 'node'))))

ci/ado/tasks/sources/java.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
parameters:
2+
- name: javaVersion
3+
type: string
4+
default: '17'
5+
6+
steps:
7+
- task: JavaToolInstaller@0
8+
displayName: "Install Java ${{ parameters.javaVersion }}"
9+
inputs:
10+
versionSpec: '${{ parameters.javaVersion }}'
11+
jdkArchitecture: 'x64'
12+
condition: and(succeeded(), contains(variables['source_dir'], 'java'))
13+
14+
- script: |
15+
java -version || true
16+
mvn -v || true
17+
displayName: 'Verify Java and Maven'
18+
condition: and(succeeded(), contains(variables['source_dir'], 'java'))

ci/ado/tasks/sources/node.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
parameters:
2+
- name: nodeVersion
3+
type: string
4+
default: '18'
5+
6+
steps:
7+
- task: NodeTool@0
8+
displayName: "Install Node.js ${{ parameters.nodeVersion }}"
9+
inputs:
10+
versionSpec: '${{ parameters.nodeVersion }}'
11+
condition: and(succeeded(), contains(variables['source_dir'], 'node'))
12+
13+
- script: |
14+
node --version || true
15+
npm --version || true
16+
displayName: 'Verify Node and NPM'
17+
condition: and(succeeded(), contains(variables['source_dir'], 'node'))
Lines changed: 22 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,28 @@
1-
name: 'Setup Build Tools'
2-
description: 'Conditionally sets up build tools required for building source code'
1+
name: 'Setup Build Tools (by source_dir)'
2+
description: 'Sets up language-specific build tools based on the provided source_dir input.'
33
inputs:
4-
setup-steps:
5-
description: 'JSON array of setup steps to execute (from sources/config.json)'
6-
required: false
7-
default: '[]'
4+
source_dir:
5+
description: 'Source directory name or identifier used to determine language'
6+
required: true
87
runs:
98
using: 'composite'
109
steps:
11-
- name: Parse setup steps
12-
id: parse
13-
shell: bash
14-
run: |
15-
steps='${{ inputs.setup-steps }}'
16-
count=$(echo "$steps" | jq '. | length')
17-
echo "count=$count" >> $GITHUB_OUTPUT
18-
19-
# Export individual step details for conditional execution
20-
for i in $(seq 0 $((count - 1))); do
21-
step=$(echo "$steps" | jq -r ".[$i]")
22-
uses=$(echo "$step" | jq -r '.uses // empty')
23-
name=$(echo "$step" | jq -r '.name // empty')
24-
25-
echo "step_${i}_uses=$uses" >> $GITHUB_OUTPUT
26-
echo "step_${i}_name=$name" >> $GITHUB_OUTPUT
27-
echo "step_${i}_with=$(echo "$step" | jq -c '.with // {}')" >> $GITHUB_OUTPUT
28-
done
29-
30-
# Support for common build tools (extensible pattern)
31-
- name: ${{ fromJSON(steps.parse.outputs.step_0_with).name || steps.parse.outputs.step_0_name }}
32-
if: steps.parse.outputs.count > 0 && contains(steps.parse.outputs.step_0_uses, 'setup-java')
33-
uses: actions/setup-java@v4
34-
with:
35-
distribution: ${{ fromJSON(steps.parse.outputs.step_0_with).distribution }}
36-
java-version: ${{ fromJSON(steps.parse.outputs.step_0_with).java-version }}
37-
38-
- name: ${{ fromJSON(steps.parse.outputs.step_0_with).name || steps.parse.outputs.step_0_name }}
39-
if: steps.parse.outputs.count > 0 && contains(steps.parse.outputs.step_0_uses, 'setup-node')
40-
uses: actions/setup-node@v4
10+
- name: Setup Java (if Java source)
11+
if: contains(inputs.source_dir, 'java')
12+
uses: ./.github/actions/sources/java
4113
with:
42-
node-version: ${{ fromJSON(steps.parse.outputs.step_0_with).node-version }}
43-
44-
- name: ${{ fromJSON(steps.parse.outputs.step_0_with).name || steps.parse.outputs.step_0_name }}
45-
if: steps.parse.outputs.count > 0 && contains(steps.parse.outputs.step_0_uses, 'setup-dotnet')
46-
uses: actions/setup-dotnet@v4
14+
java-version: 17
15+
cache-maven: 'true'
16+
17+
- name: Setup Node (if Node source)
18+
if: contains(inputs.source_dir, 'node')
19+
uses: ./.github/actions/sources/node
4720
with:
48-
dotnet-version: ${{ fromJSON(steps.parse.outputs.step_0_with).dotnet-version }}
49-
50-
- name: ${{ fromJSON(steps.parse.outputs.step_0_with).name || steps.parse.outputs.step_0_name }}
51-
if: steps.parse.outputs.count > 0 && contains(steps.parse.outputs.step_0_uses, 'setup-python')
52-
uses: actions/setup-python@v5
53-
with:
54-
python-version: ${{ fromJSON(steps.parse.outputs.step_0_with).python-version }}
55-
56-
# Additional steps (step_1, step_2, etc.) can be added following the same pattern
57-
# For now, supporting single setup step per source is sufficient
21+
node-version: 20
22+
23+
- name: No build tools required
24+
if: "!contains(inputs.source_dir, 'java') && !contains(inputs.source_dir, 'node')"
25+
run: |
26+
echo "No language-specific build tools configured for '${{ inputs.source_dir }}'"
27+
exit 1
28+
shell: bash
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
name: 'Setup Java Tools'
2+
description: 'Sets up Java (and Maven cache) for Java-based sources'
3+
inputs:
4+
java-version:
5+
description: 'Java version to install'
6+
required: false
7+
default: '17'
8+
cache-maven:
9+
description: 'Enable Maven dependency cache'
10+
required: false
11+
default: 'true'
12+
runs:
13+
using: 'composite'
14+
steps:
15+
- name: Setup Java
16+
uses: actions/setup-java@v4
17+
with:
18+
distribution: temurin
19+
java-version: ${{ inputs.java-version }}
20+
cache: ${{ inputs.cache-maven == 'true' && 'maven' || '' }}
21+
22+
- name: Verify Java and Maven
23+
shell: bash
24+
run: |
25+
java -version || true
26+
mvn -v || true
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: 'Setup Node'
2+
description: 'Sets up Node.js for Node-based sources'
3+
inputs:
4+
node-version:
5+
description: 'Node.js version to install'
6+
required: false
7+
default: '18'
8+
runs:
9+
using: 'composite'
10+
steps:
11+
- name: Setup Node
12+
uses: actions/setup-node@v4
13+
with:
14+
node-version: ${{ inputs.node-version }}
15+
16+
- name: Verify Node and NPM
17+
shell: bash
18+
run: |
19+
node --version || true
20+
npm --version || true

ci/github/.github/workflows/test-pipeline.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ jobs:
7474
- name: Setup build tools
7575
uses: ./.github/actions/setup-build-tools
7676
with:
77-
setup-steps: ${{ inputs.setup_steps }}
77+
source_dir: ${{ inputs.source_dir }}
7878

7979
- name: Checkout fortify/github-action
8080
uses: actions/checkout@v4
@@ -108,7 +108,7 @@ jobs:
108108
- name: Setup build tools
109109
uses: ./.github/actions/setup-build-tools
110110
with:
111-
setup-steps: ${{ inputs.setup_steps }}
111+
source_dir: ${{ inputs.source_dir }}
112112

113113
- name: Checkout fortify/github-action
114114
uses: actions/checkout@v4

0 commit comments

Comments
 (0)