Skip to content

Commit 76cc566

Browse files
committed
fix(continuous-integration): manage working directory properly
Signed-off-by: Emilien Escalle <[email protected]>
1 parent 349a2ab commit 76cc566

File tree

3 files changed

+57
-10
lines changed

3 files changed

+57
-10
lines changed

actions/build/action.yml

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,25 @@ runs:
109109
WORKING_DIRECTORY: ${{ inputs.working-directory }}
110110
with:
111111
script: |
112+
const fs = require('node:fs');
113+
const path = require('node:path');
114+
112115
const buildCommands = process.env.BUILD_COMMANDS || '';
113116
const runScriptCommand = process.env.RUN_SCRIPT_COMMAND;
114-
const workingDirectory = process.env.WORKING_DIRECTORY || '.';
117+
118+
let workingDirectory = process.env.WORKING_DIRECTORY || '.';
119+
if (!path.isAbsolute(workingDirectory)) {
120+
workingDirectory = path.join(process.env.GITHUB_WORKSPACE, workingDirectory);
121+
}
122+
123+
if (!fs.existsSync(workingDirectory)) {
124+
core.setFailed(`The specified working directory does not exist: ${workingDirectory}`);
125+
return;
126+
}
127+
128+
workingDirectory = path.resolve(workingDirectory);
129+
core.debug(`Running in working directory: ${workingDirectory}`);
130+
process.chdir(workingDirectory);
115131
116132
const commands = buildCommands.split('\n')
117133
.map(cmd => cmd.trim())
@@ -121,15 +137,14 @@ runs:
121137
core.info(`Running build command: ${command}`);
122138
123139
try {
124-
const result = await exec.getExecOutput(runScriptCommand, [command], {
125-
cwd: require('path').resolve(process.env.GITHUB_WORKSPACE, workingDirectory)
140+
const exitCode = await exec.exec(runScriptCommand, [command], {
141+
cwd: workingDirectory,
142+
ignoreReturnCode: true
126143
});
127144
128-
if (result.stdout) {
129-
core.info(result.stdout);
130-
}
131-
if (result.stderr) {
132-
core.warning(result.stderr);
145+
if(exitCode !== 0) {
146+
core.setFailed(`Build command "${command}" failed with exit code ${exitCode}`);
147+
throw new Error(`Build command "${command}" failed with exit code ${exitCode}`);
133148
}
134149
} catch (error) {
135150
core.setFailed(`Build command "${command}" failed: ${error.message}`);

actions/lint/action.yml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,26 @@ runs:
6767
LINT_COMMAND: ${{ inputs.command }}
6868
with:
6969
script: |
70-
const workingDirectory = process.env.WORKING_DIRECTORY;
70+
const fs = require('node:fs');
71+
const path = require('node:path');
72+
7173
const runScriptCommand = process.env.RUN_LINT_COMMAND;
7274
const lintCommand = process.env.LINT_COMMAND || 'lint:ci';
7375
76+
let workingDirectory = process.env.WORKING_DIRECTORY || '.';
77+
if (!path.isAbsolute(workingDirectory)) {
78+
workingDirectory = path.join(process.env.GITHUB_WORKSPACE, workingDirectory);
79+
}
80+
81+
if (!fs.existsSync(workingDirectory)) {
82+
core.setFailed(`The specified working directory does not exist: ${workingDirectory}`);
83+
return;
84+
}
85+
86+
workingDirectory = path.resolve(workingDirectory);
87+
core.debug(`Running in working directory: ${workingDirectory}`);
88+
process.chdir(workingDirectory);
89+
7490
core.info(`👕 Running lint command: ${lintCommand}...`);
7591
7692
try {

actions/test/action.yml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,26 @@ runs:
8484
TEST_COMMAND: ${{ inputs.command }}
8585
with:
8686
script: |
87-
const workingDirectory = process.env.WORKING_DIRECTORY;
87+
const fs = require('node:fs');
88+
const path = require('node:path');
89+
8890
const runScriptCommand = process.env.RUN_TEST_COMMAND;
8991
const testCommand = process.env.TEST_COMMAND || 'test:ci';
9092
93+
let workingDirectory = process.env.WORKING_DIRECTORY || '.';
94+
if (!path.isAbsolute(workingDirectory)) {
95+
workingDirectory = path.join(process.env.GITHUB_WORKSPACE, workingDirectory);
96+
}
97+
98+
if (!fs.existsSync(workingDirectory)) {
99+
core.setFailed(`The specified working directory does not exist: ${workingDirectory}`);
100+
return;
101+
}
102+
103+
workingDirectory = path.resolve(workingDirectory);
104+
core.debug(`Running in working directory: ${workingDirectory}`);
105+
process.chdir(workingDirectory);
106+
91107
core.info(`🧪 Running test command: ${testCommand}...`);
92108
93109
try {

0 commit comments

Comments
 (0)