如何通过GitHub Actions访问Windows虚拟机中的文件
如何通过GitHub Actions访问Windows虚拟机内的文件
GitHub托管的Windows Runner
GitHub提供的Windows runner本身就是临时虚拟机,job运行期间你可以直接通过PowerShell/CMD命令访问其文件系统:
- 仓库代码默认会被克隆到
D:\a\<你的仓库名>\<你的仓库名>目录下 - 临时文件可以放在
C:\Temp或者runner提供的RUNNER_TEMP环境变量指向的路径
示例Workflow片段:
jobs: access-windows-files: runs-on: windows-latest steps: - name: 克隆仓库代码 uses: actions/checkout@v4 - name: 查看仓库目录文件 shell: pwsh run: Get-ChildItem -Path $GITHUB_WORKSPACE - name: 在VM中创建并写入文件 shell: cmd run: | echo "测试内容" > C:\Temp\test.txt type C:\Temp\test.txt - name: 读取系统目录文件 shell: pwsh run: Get-Content -Path "C:\Windows\System32\drivers\etc\hosts"
自托管的Windows VM Runner
如果是你自己的Windows VM作为自托管runner,配置完成后,直接在job中指定runs-on: <你的自托管runner名称>,然后用本地路径访问VM内的文件即可:
- 确保runner服务使用的账号(默认是
NT AUTHORITY\NETWORK SERVICE)有访问目标文件的权限 - 可以直接操作VM本地的任意合法路径
示例Workflow片段:
jobs: access-self-hosted-vm-files: runs-on: my-windows-vm-runner steps: - name: 读取VM本地文件 shell: pwsh run: Get-Content -Path "C:\MyApp\config.ini" - name: 将仓库文件复制到VM指定目录 shell: cmd run: copy "%GITHUB_WORKSPACE%\dist\app.exe" "C:\Program Files\MyApp\"
实用技巧
- 若需要在多个job之间传递文件,使用
actions/upload-artifact和actions/download-artifact动作 - Windows路径在YAML中使用反斜杠时需要转义(比如
C:\\Temp\\test.txt),或者直接用正斜杠(C:/Temp/test.txt),PowerShell/CMD都能识别 - 调试时可以添加
dir <路径>或Get-ChildItem <路径>步骤,确认文件位置和权限
内容的提问来源于stack exchange,提问作者User1515
相关产品推荐
相关产品推荐

