在另一个目录中为“uses”运行 github 操作

Posted

技术标签:

【中文标题】在另一个目录中为“uses”运行 github 操作【英文标题】:Running github actions for `uses` in another directory 【发布时间】:2021-07-21 17:46:44 【问题描述】:

我的 maven 存储库位于 ./java 目录中。我想在./java 目录中运行 maven 测试,但出现以下错误:

The goal you specified requires a project to execute but there is no POM in this directory (/github/workspace). Please verify you invoked Maven from the correct directory. -> [Help 1]

这是我的工作流程:

# This is a basic workflow to help you get started with Actions

name: CI
on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

  workflow_dispatch:


jobs:
  build:
    defaults:
      run:
        working-directory: java
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        
      - name: Run maven test
        uses: xlui/action-maven-cli@master
    
        with:
          lifecycle: 'clean package test'

working-directory好像没用,怎么解决?

【问题讨论】:

当你遇到目录错误时,首先尝试actions/checkout@v2 【参考方案1】:

working-directory 只能应用于run: 步骤(例如它不适用于动作)

动作xlui/action-maven-cli@master 当前不允许通知path 执行maven 命令。

你也可以

使用another (similar) action available on the Github Marketplace,它允许在执行maven命令之前通知directory path

打开 PR 以更新 xlui/action-maven-cli 操作,添加输入 path(或 env 变量)以在执行 maven 命令之前执行 cd 命令,

在一个步骤中直接在您的工作流中安装maven(例如setup maven action),然后使用run: | 在另一个步骤(不使用该操作)上直接运行maven 命令,然后使用cd ./java 在执行@987654335 之前@,

类似的东西(对于第 3 个选项)

steps:
  - uses: actions/checkout@v2
    
  - name: Install maven
    run: |
      ...
  - name: Run maven command
    run: |
      cd ./java
      mvn clean package test

【讨论】:

感谢您的回答!我最终通过安装maven并添加-f参数来指定maven测试目录解决了这个问题。我要提一提的是,官方的maven安装动作只在根目录下生效,所以cd ./java & mvn install会导致'command not found: mvn'

以上是关于在另一个目录中为“uses”运行 github 操作的主要内容,如果未能解决你的问题,请参考以下文章

在另一个工作流成功运行后手动触发 Github Actions 工作流

在另一个模块中为 EC2 添加指定子网 - AWS Terraform -

在另一个作业中重用 GitHub Action 工作流程步骤

gnome 终端:找不到目录(在另一个终端中运行 python 脚本)

GitHub 缓存与子目录中的 Maven 项目

如何在另一个目录中运行 python 脚本,而不将脚本写入磁盘?