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" \

Reply via email to