I set up a simple Github Actions workflow simply to check if my self-hosted Windows Virtual Machine is able to recognize the installed java/git/maven versions.
Versions in the Virtual Machine:
- Microsoft Windows 64 bit
- Java version: jdk1.8.0_202
- Maven version: 3.8.5
Java and Git are correctly recognized however the step checking for maven version fails:
mvn -version
it fails with the following log:
mvn : The term 'mvn' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. At C:action-runner_work_temp3b2e64a-9586-4937-b61c-90e0bb0a5d9c.ps1:2 char:1 + mvn -version + ~~~ + CategoryInfo : ObjectNotFound: (mvn:String) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : CommandNotFoundException Error: Process completed with exit code 1.
Below how I set up the environmental variables on the machine:
Environment Variable Screenshot
On the machine mvn command is recognized without any problems, the issue only happens when running the Github workflow yaml. Below the .yaml script also with different attempts to set the enviroment variable from the script itself:
name: CI on: push: branches: [ main ] pull_request: branches: [ main ] workflow_dispatch: jobs: build: runs-on: [self-hosted, selenium-1] steps: - uses: actions/checkout@v3 # Attempt 1: FAILS with mvn not recognized log - name: Check Maven version run: mvn -version # Attempt 2: DOES NOT FAIL but it also doesn't do anything (tried other mvn commands and nothing happened) - name: Check Maven Version run: C:action-runnerapache-maven-3.8.5binmvn -version # Attempt 3 set Maven as env variable with powershell and FAILS with mvn not recognized log - name: Set maven path as Env variable run: $Env:GITHUB_ENV += ';C:action-runnerapache-maven-3.8.5bin' # after Attempt 3 launched the mvn command to check if it worked but still failed - name: Check Maven version run: mvn -version # Attempt 4 try to set PATH variable once in the workflow with following log: # Error: Unable to process file command 'env' successfully. # Error: Invalid environment variable format 'C:action-runnerapache-maven-3.8.5bin' - name: set PATH Maven run: echo "C:action-runnerapache-maven-3.8.5bin" >> $env:GITHUB_ENV
Thanks in advance to anyone suggesting a solution.
Advertisement
Answer
Solved by adding this Actions from the GitHub Marketplace inside the .yml workflow file:
https://github.com/stCarolas/setup-maven https://github.com/marketplace/actions/setup-maven