GitHub 操作在目标目录中找不到 JAR 文件

GitHub Actions Cannot Find JAR file in Target Directory

我正在尝试使用 GitHub 操作来构建 Docker 图像并将其发布到 Docker Hub。

我在尝试构建 Docker 图像时在 Build and push 步骤中遇到错误,因为它找不到 target 目录。

Docker 构建步骤正在 /tmp/buildkit-mount147850474/target 中查找,但我的 JAR 在 /home/runner/work/myrepo/myrepo/target/app-0.0.1-SNAPSHOT.jar.

如何告诉 Docker 构建步骤使用正确的目录?

我查看了 working-directory,但文档说它仅适用于 run 个步骤。

错误

#6 [3/3] COPY target/*.jar app.jar
#6 ERROR: lstat /tmp/buildkit-mount147850474/target: no such file or directory

保存 JAR 时的日志片段

[INFO] Building jar: /home/runner/work/myrepo/myrepo/target/app-0.0.1-SNAPSHOT.jar

Docker文件

FROM openjdk:17-alpine
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

publish.yml

name: Publish Docker Image

on:
  push:
    tags:
      - '*'

jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK 17
        uses: actions/setup-java@v2
        with:
          java-version: '17'
          distribution: 'adopt'
          cache: maven
      - name: Build with Maven
        run: mvn -B package --file pom.xml
      - name: Set output
        id: vars
        run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
      - name: Login to DockerHub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKER_HUB_USERNAME }}
          password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
      - name: Build and push
        id: docker_build
        uses: docker/build-push-action@v2
        working-directory:  ${{ github.workspace }}
        with:
          push: true
          tags: ${{ github.repository }}:${{ steps.vars.outputs.tag }}

我有一个类似的管道,但是当我使用 docker/build-push-action:

  • 我没有工作目录参数
  • 我有一个 context 参数设置为 map
  • 中的当前目录

您可以尝试像这样修改您的 构建和推送 步骤吗?

- name: Build and push
  id: docker_build
  uses: docker/build-push-action@v2
  with:
    context: .    
    push: true
    tags: ${{ github.repository }}:${{ steps.vars.outputs.tag }}

你可以看看这个例子(https://morioh.com/p/2d04d286363b) and also at documentation of this action (https://github.com/docker/build-push-action)