This is an automated email from the ASF dual-hosted git repository. zabetak pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push: new b7e3e1d6190 HIVE-27277: GH actions to build and push docker image (Simhadri Govindappa reviewed by Stamatis Zampetakis, Zhihua Deng, Naveen Gangam, Attila Turoczy, Zoltan Ratkai) b7e3e1d6190 is described below commit b7e3e1d6190b1a92b9bf5e6e4fb661070d12a398 Author: SimhadriGovindappa <simhadri...@gmail.com> AuthorDate: Wed Apr 26 13:08:41 2023 +0530 HIVE-27277: GH actions to build and push docker image (Simhadri Govindappa reviewed by Stamatis Zampetakis, Zhihua Deng, Naveen Gangam, Attila Turoczy, Zoltan Ratkai) 1. Add (manually triggered) action for building images from archives (for old releases) 2. Add action for building images from sources automatically triggered on new tag creation. 3. Publish docker images for amd64 and arm64 platforms to dockerhub Closes #4614 --- .github/workflows/docker-GA-images.yml | 138 +++++++++++++++++++++++++++++++++ packaging/src/docker/Dockerfile | 42 ++++++++-- packaging/src/docker/build.sh | 1 + 3 files changed, 174 insertions(+), 7 deletions(-) diff --git a/.github/workflows/docker-GA-images.yml b/.github/workflows/docker-GA-images.yml new file mode 100644 index 00000000000..cffa8eb89a3 --- /dev/null +++ b/.github/workflows/docker-GA-images.yml @@ -0,0 +1,138 @@ +name: Build and Publish docker images for Hive GA + +on: + create: + workflow_dispatch: + inputs: + hiveVersion: + description: 'Hive version' + required: true + default: '4.0.0-beta-1' + + + hadoopVersion: + description: 'hadoop version' + required: true + default: '3.3.1' + + tezVersion: + description: 'tez version' + required: true + default: '0.10.2' + + + +jobs: + buildFromArchive: + if: github.event_name == 'workflow_dispatch' + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v3 + + - + name: 'Set up JDK 8' + uses: actions/setup-java@v1 + with: + java-version: 8 + + - + name: Hive version + run: echo "HIVE_VERSION=${{ github.event.inputs.hiveVersion }}" >> $GITHUB_ENV + + + - name: Tag + run: echo "tag=${{ env.HIVE_VERSION }}" | awk '{print tolower($0)}' >> $GITHUB_ENV + + - + name: Hadoop version + run: echo "HADOOP_VERSION=${{ github.event.inputs.hadoopVersion }}" >> $GITHUB_ENV + - + name: Tez version + run: echo "TEZ_VERSION=${{ github.event.inputs.tezVersion }}" >> $GITHUB_ENV + + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Build and push Hive Image to docker hub + uses: docker/build-push-action@v4 + with: + context: ./packaging/src/docker/ + file: ./packaging/src/docker/Dockerfile + platforms: linux/amd64,linux/arm64 + push: true + tags: ${{ secrets.DOCKERHUB_USER }}/hive:${{ env.tag }} + build-args: + | + HIVE_VERSION=${{ env.HIVE_VERSION }} + HADOOP_VERSION=${{ env.HADOOP_VERSION }} + TEZ_VERSION=${{ env.TEZ_VERSION }} + BUILD_ENV=archive + + buildFromSource: + if: github.event_name == 'create' && github.event.ref_type == 'tag' && startsWith(github.event.ref, 'rel/') + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: 'Set up JDK 8' + uses: actions/setup-java@v1 + with: + java-version: 8 + + - name: Hive version + run: echo "HIVE_VERSION=$(mvn -f "pom.xml" -q help:evaluate -Dexpression=project.version -DforceStdout)" >> $GITHUB_ENV + + + - name: Tag + run: echo "tag=${{ env.HIVE_VERSION }}" | awk '{print tolower($0)}' >> $GITHUB_ENV + + - name: Hadoop version + run: echo "HADOOP_VERSION=$(mvn -f "pom.xml" -q help:evaluate -Dexpression=hadoop.version -DforceStdout)" >> $GITHUB_ENV + - name: Tez version + run: echo "TEZ_VERSION=$(mvn -f "pom.xml" -q help:evaluate -Dexpression=tez.version -DforceStdout)" >> $GITHUB_ENV + + - name: Build project + run: mvn clean package -DskipTests -Pitests,iceberg -Pdist + + - name: Check for hive tar.gz + run: ls ./packaging/target/ + + - name: Copy to docker directory + run: cp ./packaging/target/apache-hive-*-bin.tar.gz ./packaging/src/docker/ + + - name: Confirm the copy of hive tar.gz + run: ls ./packaging/src/docker/ + + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Build and push Hive Image to docker hub + uses: docker/build-push-action@v4 + with: + context: ./packaging/src/docker/ + file: ./packaging/src/docker/Dockerfile + platforms: linux/amd64,linux/arm64 + push: true + tags: ${{ secrets.DOCKERHUB_USER }}/hive:${{ env.tag }} + build-args: + | + HIVE_VERSION=${{ env.HIVE_VERSION }} + HADOOP_VERSION=${{ env.HADOOP_VERSION }} + TEZ_VERSION=${{ env.TEZ_VERSION }} + BUILD_ENV=buildarchive diff --git a/packaging/src/docker/Dockerfile b/packaging/src/docker/Dockerfile index fd0ad7e698a..3108b9fbb15 100644 --- a/packaging/src/docker/Dockerfile +++ b/packaging/src/docker/Dockerfile @@ -14,14 +14,41 @@ # See the License for the specific language governing permissions and # limitations under the License. # +ARG BUILD_ENV + FROM ubuntu as unarchive +ONBUILD COPY hadoop-*.tar.gz /opt +ONBUILD COPY apache-hive-*-bin.tar.gz /opt +ONBUILD COPY apache-tez-*-bin.tar.gz /opt + +FROM ubuntu as archive +ARG HADOOP_VERSION +ARG HIVE_VERSION +ARG TEZ_VERSION +ONBUILD RUN apt-get update && apt-get -y install wget +ONBUILD RUN wget https://archive.apache.org/dist/tez/$TEZ_VERSION/apache-tez-$TEZ_VERSION-bin.tar.gz && \ + wget https://archive.apache.org/dist/hadoop/core/hadoop-$HADOOP_VERSION/hadoop-$HADOOP_VERSION.tar.gz && \ + wget https://archive.apache.org/dist/hive/hive-$HIVE_VERSION/apache-hive-$HIVE_VERSION-bin.tar.gz +ONBUILD RUN mv /apache-tez-$TEZ_VERSION-bin.tar.gz /opt && \ + mv hadoop-$HADOOP_VERSION.tar.gz /opt && \ + mv apache-hive-$HIVE_VERSION-bin.tar.gz /opt + +FROM ubuntu as buildarchive +ARG HADOOP_VERSION +ARG HIVE_VERSION +ARG TEZ_VERSION +ONBUILD RUN apt-get update && apt-get -y install wget +ONBUILD RUN wget https://archive.apache.org/dist/tez/$TEZ_VERSION/apache-tez-$TEZ_VERSION-bin.tar.gz && \ + wget https://archive.apache.org/dist/hadoop/core/hadoop-$HADOOP_VERSION/hadoop-$HADOOP_VERSION.tar.gz +ONBUILD COPY ./apache-hive-$HIVE_VERSION-bin.tar.gz /opt +ONBUILD RUN mv /apache-tez-$TEZ_VERSION-bin.tar.gz /opt && \ + mv hadoop-$HADOOP_VERSION.tar.gz /opt +FROM ${BUILD_ENV} as env +RUN echo ${BUILD_ENV} ARG HADOOP_VERSION ARG HIVE_VERSION ARG TEZ_VERSION -COPY hadoop-$HADOOP_VERSION.tar.gz /opt -COPY apache-hive-$HIVE_VERSION-bin.tar.gz /opt -COPY apache-tez-$TEZ_VERSION-bin.tar.gz /opt RUN tar -xzvf /opt/hadoop-$HADOOP_VERSION.tar.gz -C /opt/ && \ rm -rf /opt/hadoop-$HADOOP_VERSION/share/doc/* && \ @@ -35,9 +62,9 @@ FROM openjdk:8-jre-slim AS run ARG HADOOP_VERSION ARG HIVE_VERSION ARG TEZ_VERSION -COPY --from=unarchive /opt/hadoop-$HADOOP_VERSION /opt/hadoop -COPY --from=unarchive /opt/apache-hive-$HIVE_VERSION-bin /opt/hive -COPY --from=unarchive /opt/apache-tez-$TEZ_VERSION-bin /opt/tez +COPY --from=env /opt/hadoop-$HADOOP_VERSION /opt/hadoop +COPY --from=env /opt/apache-hive-$HIVE_VERSION-bin /opt/hive +COPY --from=env /opt/apache-tez-$TEZ_VERSION-bin /opt/tez # Install dependencies RUN set -ex; \ @@ -48,7 +75,8 @@ RUN set -ex; \ # Set necessary environment variables. ENV HADOOP_HOME=/opt/hadoop \ HIVE_HOME=/opt/hive \ - TEZ_HOME=/opt/tez + TEZ_HOME=/opt/tez \ + HIVE_VER=$HIVE_VERSION ENV PATH=$HIVE_HOME/bin:$HADOOP_HOME/bin:$PATH diff --git a/packaging/src/docker/build.sh b/packaging/src/docker/build.sh index 82cd2186e0d..b5cbce78882 100755 --- a/packaging/src/docker/build.sh +++ b/packaging/src/docker/build.sh @@ -110,6 +110,7 @@ docker build \ "$WORK_DIR" \ -f "$WORK_DIR/Dockerfile" \ -t "$repo/hive:$HIVE_VERSION" \ + --build-arg "BUILD_ENV=unarchive" --build-arg "HIVE_VERSION=$HIVE_VERSION" \ --build-arg "HADOOP_VERSION=$HADOOP_VERSION" \ --build-arg "TEZ_VERSION=$TEZ_VERSION" \