diff --git a/.github/workflows/docker-GA-images.yml b/.github/workflows/docker-GA-images.yml new file mode 100644 index 000000000000..09cd4dca4936 --- /dev/null +++ b/.github/workflows/docker-GA-images.yml @@ -0,0 +1,63 @@ +name: Build and Publish docker images for Hive GA + +on: + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v3 + - + name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Build and push Hive 4.0.0-alpha-2 + uses: docker/build-push-action@v4 + with: + context: ./packaging/src/docker/ + file: ./packaging/src/docker/Dockerfile + push: true + tags: ${{ secrets.DOCKERHUB_USERNAME }}/hive:test-image + build-args: + | + HIVE_VERSION=4.0.0-alpha-2 + HADOOP_VERSION=3.3.1 + TEZ_VERSION=0.10.2 + BUILD_ENV=deploy + - + name: Build and push Hive 4.0.0-alpha-1 + uses: docker/build-push-action@v4 + with: + context: ./packaging/src/docker/ + file: ./packaging/src/docker/Dockerfile + push: true + tags: ${{ secrets.DOCKERHUB_USERNAME }}/hive:4.0.0-alpha-1 + build-args: + | + HIVE_VERSION=4.0.0-alpha-1 + HADOOP_VERSION=3.1.0 + TEZ_VERSION=0.10.1 + BUILD_ENV=deploy + - + name: Build and push Hive 3.1.3 + uses: docker/build-push-action@v4 + with: + context: ./packaging/src/docker/ + file: ./packaging/src/docker/Dockerfile + push: true + tags: ${{ secrets.DOCKERHUB_USERNAME }}/hive:3.1.3 + build-args: + | + HIVE_VERSION=3.1.3 + HADOOP_VERSION=3.1.0 + TEZ_VERSION=0.9.1 + BUILD_ENV=deploy diff --git a/packaging/src/docker/Dockerfile b/packaging/src/docker/Dockerfile index fd0ad7e698ad..980d91471f66 100644 --- a/packaging/src/docker/Dockerfile +++ b/packaging/src/docker/Dockerfile @@ -14,14 +14,31 @@ # 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 deploy +ARG HADOOP_VERSION +ARG HIVE_VERSION +ARG TEZ_VERSION +ONBUILD RUN apt-get update && apt-get -y install wget +ONBUILD RUN wget https://dlcdn.apache.org/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://dlcdn.apache.org/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 ${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 +52,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 +65,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 82cd2186e0d2..b5cbce78882a 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" \ diff --git a/packaging/src/docker/entrypoint.sh b/packaging/src/docker/entrypoint.sh index 8f3c4bc564f6..5d89fd3031e0 100644 --- a/packaging/src/docker/entrypoint.sh +++ b/packaging/src/docker/entrypoint.sh @@ -24,7 +24,7 @@ set -x SKIP_SCHEMA_INIT="${IS_RESUME:-false}" function initialize_hive { - $HIVE_HOME/bin/schematool -dbType $DB_DRIVER -initOrUpgradeSchema + $HIVE_HOME/bin/schematool -dbType $DB_DRIVER -initOrUpgradeSchema ${HIVE_VER} if [ $? -eq 0 ]; then echo "Initialized schema successfully.." else