Github Actions:运行Bash脚本

4
我正在尝试从Github Actions运行脚本,但它一直显示:找不到文件或目录。
这是Github Action:
name: Build And Deploy
on:
  push:
#     branches:
#       - master`

jobs:
  generate-build-number-deploy:
    runs-on: ubuntu-latest
    
    steps:
      - uses: actions/checkout@v3
      # https://github.com/marketplace/actions/build-number-generator
      - name: Generate build number
        uses: einaregilsson/build-number@v3
        with:
          token: ${{secrets.github_token}}

      - name: Print new build number
        run: echo "Build number is $BUILD_NUMBER"
  
      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-east-2

      - name: Print GITHUB_WORKSPACE
        run: echo ${GITHUB_WORKSPACE}

      - name: Build Docker
        run: |
             chmod +x "${GITHUB_WORKSPACE}/../docker/build-docker.sh"
             ${GITHUB_WORKSPACE}/../docker/build-docker.sh
      - name: Push Docker
        run: |
             chmod +x "${GITHUB_WORKSPACE}/../docker/push-docker.sh"
             ${GITHUB_WORKSPACE}/../docker/push-docker.sh

由于某些原因,GITHUB_WORKSPACE 的路径很奇怪,这就是为什么我必须在路径中添加 ../,如 ${GITHUB_WORKSPACE}/../docker/push-docker.sh。有没有办法列出文件或获取当前工作目录以查看文件实际位置?
我尝试过执行 echo ${cwd}echo ${pwd},但它们都不输出任何内容。
我已经参考了以下链接来运行 bash 脚本: https://github.community/t/running-a-bash-script/141584

$PWD是Bash变量,它包含当前目录的路径;或者运行pwd命令。 - tripleee
“echo cd” 是打错字了吗? - tripleee
在操作内部执行 chmod + x 有点笨拙。可以在代码库中设置权限,或者显式运行 bash path/to/script,只需要文件的读权限即可。 - tripleee
是的,那是一个错误。我已经修复了它。我尝试运行pwd命令,但它没有任何反应。我将尝试使用bash path/to/script来运行。 - Rajan Shah
有没有一种方法可以列出当前工作目录中的文件? - Rajan Shah
该命令是 ls - tripleee
2个回答

4
问题出在目录结构上。一旦我列出了目录中的文件并找到了文件路径,操作就成功运行了。以下是最终的yml脚本。
on:
  push:
     branches:
       - master

jobs:
  generate-build-number-deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      # required for accessing files in repository.

      # https://github.com/marketplace/actions/build-number-generator
      - name: Generate build number
        uses: einaregilsson/build-number@v3
        with:
          token: ${{secrets.github_token}}

      - name: Print new build number
        run: echo "Build number is $BUILD_NUMBER"

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-east-2

      - name: Build Docker
        run: ${PWD}/docker/build-docker
      - name: Push Docker
        run: ${PWD}/docker/push-docker

0

最佳实践是在运行命令时使用working-directory:,以便这些步骤在特定目录中执行 - 相对于您的根文件夹。


有没有办法在 Github Actions 中列出当前目录中的所有文件?例如,在任何目录中执行 echo ls -a 命令? - Rajan Shah
@RajanShah 你可以执行 echo "[LS]: $(ls -al)" - Mr. rk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接