如何从同一文件夹调用可重用的 GitHub 工作流程

fer*_*ows 0 github github-actions

我目前正在尝试从其他两个工作流程调用可重用工作流程,这两个工作流程都位于与可重用工作流程相同的目录和相同的私有存储库中。这些文件看起来像这样:

// .github/workflows/deploy.yml

name: Deploy
on:
    workflow_call:
        inputs:
            bucketFolder:
                type: string
jobs:
    deploy:
        runs-on: ubuntu-latest
        strategy:
            matrix:
                node-version: [18]
        steps:
            - uses: actions/checkout@v3
            - uses: pnpm/action-setup@v2
              with:
                  version: 7
            - uses: actions/setup-node@v3
              with:
                  node-version: ${{ matrix.node-version }}
                  cache: "pnpm"
            - name: Configure AWS Credentials
              uses: aws-actions/configure-aws-credentials@v1-node16
              with:
                  aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
                  aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
                  aws-region: us-east-1
            - name: Install modules
              run: pnpm install
            - name: Build application
              run: pnpm run build
            - name: Deploy to S3
              run: aws s3 sync ./dist/ s3://${{ secrets.BUCKET_ID }}/${{ inputs.bucketFolder }}
            - name: Create CloudFront invalidation
              uses: nick-fields/retry@v2
              with:
                  max_attempts: 6
                  retry_on: error
                  timeout_seconds: 60
                  retry_wait_seconds: 600
                  command: aws cloudfront create-invalidation --distribution-id ${{ secrets.DISTRIBUTION_ID }} --paths "/*"
Run Code Online (Sandbox Code Playgroud)

// .github/workflows/product.yml

name: Deploy - Production
on:
    push:
        branches:
            - main
    workflow_dispatch:
        branches:
            - main
jobs:
    awsDeploy:
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v3
            - uses: ./.github/workflows/deploy.yml
              with:
                  bucketFolder: production
Run Code Online (Sandbox Code Playgroud)

// .github/workflows/staging.yml

name: Deploy - Staging
on:
    push:
        branches:
            - staging
    workflow_dispatch:
        branches:
            - staging
jobs:
    awsDeploy:
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v3
            - uses: ./.github/workflows/deploy.yml
              with:
                  bucketFolder: staging

Run Code Online (Sandbox Code Playgroud)

在“/home/runner/work/{repository-name}/{repository-name}/.github/workflows/deploy.yml”下找不到“action.yml”、“action.yaml”或“Dockerfile”。您是否在运行本地操作之前忘记运行操作/结账?

事实上它在路径中使用 {repository-name}/{repository-name} 是问题所在吗?如果是,我该如何修复它?如果不是,这里出了什么问题?

tj-*_*tti 5

当您在步骤级别指定时uses,就像您对示例所做的那样,这会告诉解析器查找 GitHub Action 而不是工作流程(这就是您收到错误Can't find 'action.yml'消息的原因)。

为了调用可重用的工作流程,uses必须在作业级别指定:

jobs:
    awsDeploy:
        uses: ./.github/workflows/deploy.yml
        with:
            bucketFolder: staging
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请查看调用可重用工作流程文档。