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)
我正在尝试使用 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)