Docker로 Maven 프로젝트를 빌드하고 푸시하기 위한 GitHub 작업 Docker Hub
14551 단어 actionshackathon21githubopensource
내 워크플로
프로젝트는 그를 위해 2개의 Dockerfile을 만든 간단한 "Hello world"Maven 프로젝트입니다.
아티팩트를 이미지에 복사하고
.jar
파일을 실행하는 하나의 간단한 Dockerfile:FROM anapsix/alpine-java
ADD target/my-app-*.jar /home/myjar.jar
CMD ["java","-jar","/home/myjar.jar"]
그리고 프로젝트를 빌드하는 두 번째 다단계 Dockerfile:
FROM maven:3 as BUILD_IMAGE
ENV APP_HOME=/root/dev/myapp/
RUN mkdir -p $APP_HOME/src/main/java
WORKDIR $APP_HOME
COPY . .
RUN mvn -B package -e -X --file my-app/pom.xml
FROM openjdk:8-jre
WORKDIR /root/
COPY --from=BUILD_IMAGE /root/dev/myapp/my-app/target/my-app*.jar .
CMD java -jar my-app*.jar
그래서 프로젝트에 대한 2개의 GitHub 워크플로를 만들었습니다.
.jar
버전을 범프하고 maven 프로젝트를 빌드합니다. 2. 도커 이미지를 빌드하고 Docker Hub에 푸시합니다. 3. 이미지를 당겨 실행합니다.name: Maven Package
on:
[push]
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
outputs:
jar_version: ${{ steps.bump.outputs.jar_version }}
steps:
- uses: actions/checkout@v2
- name: Set up JDK 8
uses: actions/setup-java@v2
with:
java-version: '8'
distribution: 'adopt'
server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
settings-path: ${{ github.workspace }} # location for the settings.xml file
- name: Bump jar version
id: bump
run: |
POMPATH=my-app
OLD_VERSION=$(cd $POMPATH && mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
BUMP_MODE="none"
old="$OLD_VERSION"
parts=( ${old//./ } )
bv=$((parts[2] + 1))
NEW_VERSION="${parts[0]}.${parts[1]}.${bv}"
echo "pom.xml at" $POMPATH "will be bumped from" $OLD_VERSION "to" $NEW_VERSION
mvn -q versions:set -DnewVersion="${NEW_VERSION}" --file $POMPATH/pom.xml
echo ::set-output name=jar_version::${NEW_VERSION}
- name: Compile
run: mvn -B compile --file my-app/pom.xml
- name: Build a package
run: mvn -B package --file my-app/pom.xml
- name: Temporarily save jar artifact
uses: actions/upload-artifact@v2
with:
name: jar-artifact
path: ${{ github.workspace }}/my-app/target/*.jar
retention-days: 1
deploy:
runs-on: ubuntu-18.04
needs: build
steps:
- uses: actions/checkout@v2
- uses: actions/download-artifact@v1
with:
name: jar-artifact
path: target/
- name: Docker build
run: |
docker build . -t shayki/shayki-maven:${{needs.build.outputs.jar_version}}
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Docker push
run: |
docker push shayki/shayki-maven:${{needs.build.outputs.jar_version}}
run:
runs-on: ubuntu-18.04
needs: [build, deploy]
steps:
- name: Run container
run: |
docker run shayki/shayki-maven:${{needs.build.outputs.jar_version}}
name: Maven Package - Multi stage docker
on:
[push]
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
outputs:
jar_version: ${{ steps.bump.outputs.jar_version }}
steps:
- uses: actions/checkout@v2
- name: Bump jar version
id: bump
run: |
POMPATH=my-app
OLD_VERSION=$(cd $POMPATH && mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
BUMP_MODE="none"
old="$OLD_VERSION"
parts=( ${old//./ } )
bv=$((parts[2] + 1))
NEW_VERSION="${parts[0]}.${parts[1]}.${bv}"
echo "pom.xml at" $POMPATH "will be bumped from" $OLD_VERSION "to" $NEW_VERSION
mvn -q versions:set -DnewVersion="${NEW_VERSION}" --file $POMPATH/pom.xml
echo ::set-output name=jar_version::${NEW_VERSION}
- name: Docker build
run: |
docker build . -t shayki/shayki-maven:${{ steps.bump.outputs.jar_version }} -f DockerfileMultiStage
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Docker push
run: |
docker push shayki/shayki-maven:${{ steps.bump.outputs.jar_version }}
run:
runs-on: ubuntu-18.04
needs: [build]
steps:
- name: Run container
run: |
docker run shayki/shayki-maven:${{needs.build.outputs.jar_version}}
내 프로젝트에서 여러 워크플로우를 사용했습니다.
제출 카테고리:
메인테이너 머스트해브
Yaml 파일 또는 코드 링크
코드 레포 링크:
shayki5 / 메이븐-안녕하세요-세계
간단하고 최소한의 Maven 예제: Hello World
Docker로 Maven 프로젝트를 빌드하고 푸시하기 위한 GitHub 작업 Docker Hub
내 워크플로우
프로젝트는 그를 위해 2개의 Dockerfile을 만든 간단한 "Hello world"Maven 프로젝트입니다.
아티팩트를 이미지에 복사하고 .jar
파일을 실행하는 하나의 간단한 Dockerfile:
FROM anapsix/alpine-java
ADD target/my-app-*.jar /home/myjar.jar
CMD ["java","-jar","/home/myjar.jar"]
그리고 프로젝트를 빌드하는 두 번째 다단계 Dockerfile:
FROM maven:3 as BUILD_IMAGE
ENV APP_HOME=/root/dev/myapp/
RUN mkdir -p $APP_HOME/src/main/java
WORKDIR $APP_HOME
COPY . .
RUN mvn -B package -e -X --file my-app/pom.xml
FROM openjdk:8-jre
WORKDIR /root/
COPY --from=BUILD_IMAGE /root/dev/myapp/my-app/target/my-app*.jar .
CMD java -jar my-app*.jar
그래서 프로젝트에 대한 2개의 GitHub 워크플로를 만들었습니다.
FROM anapsix/alpine-java
ADD target/my-app-*.jar /home/myjar.jar
CMD ["java","-jar","/home/myjar.jar"]
FROM maven:3 as BUILD_IMAGE
ENV APP_HOME=/root/dev/myapp/
RUN mkdir -p $APP_HOME/src/main/java
WORKDIR $APP_HOME
COPY . .
RUN mvn -B package -e -X --file my-app/pom.xml
FROM openjdk:8-jre
WORKDIR /root/
COPY --from=BUILD_IMAGE /root/dev/myapp/my-app/target/my-app*.jar .
CMD java -jar my-app*.jar
.jar
버전을 범프하고 maven 프로젝트를 빌드합니다. 2. 도커 이미지를 빌드하고 Docker Hub에 푸시합니다. 3. 이미지를 당겨 실행합니다. name: Maven Package on…
View on GitHub
Reference
이 문제에 관하여(Docker로 Maven 프로젝트를 빌드하고 푸시하기 위한 GitHub 작업 Docker Hub), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/shayki5/github-action-for-building-maven-project-with-docker-and-push-it-docker-hub-3c3k텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)