Skip to content

Commit 7e75d0e

Browse files
simhadri-gSimhadriG
authored andcommitted
HIVE-27277: GH actions to build and push docker image
Set up github actions workflow to build and push docker image to docker hub
1 parent 04c37db commit 7e75d0e

File tree

3 files changed

+85
-7
lines changed

3 files changed

+85
-7
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: Build and Publish docker images for Hive GA
2+
3+
on:
4+
create:
5+
6+
jobs:
7+
build:
8+
if: github.event_name == 'create' && github.event.ref_type == 'tag' && startsWith(github.event.ref, 'rel/')
9+
runs-on: ubuntu-latest
10+
steps:
11+
-
12+
name: Checkout
13+
uses: actions/checkout@v3
14+
15+
-
16+
name: 'Set up JDK 8'
17+
uses: actions/setup-java@v3
18+
with:
19+
java-version: 8
20+
21+
-
22+
name: Hive version
23+
run: echo "HIVE_VERSION=$(mvn -f "pom.xml" -q help:evaluate -Dexpression=project.version -DforceStdout)" >> $GITHUB_ENV
24+
25+
26+
- name: Tag
27+
run: echo "tag=${{ env.HIVE_VERSION }}" | awk '{print tolower($0)}' >> $GITHUB_ENV
28+
29+
-
30+
name: Hadoop version
31+
run: echo "HADOOP_VERSION=$(mvn -f "pom.xml" -q help:evaluate -Dexpression=hadoop.version -DforceStdout)" >> $GITHUB_ENV
32+
-
33+
name: Tez version
34+
run: echo "TEZ_VERSION=$(mvn -f "pom.xml" -q help:evaluate -Dexpression=tez.version -DforceStdout)" >> $GITHUB_ENV
35+
36+
-
37+
name: Login to Docker Hub
38+
uses: docker/login-action@v2
39+
with:
40+
username: ${{ secrets.DOCKERHUB_USER }}
41+
password: ${{ secrets.DOCKERHUB_TOKEN }}
42+
43+
-
44+
name: Set up Docker Buildx
45+
uses: docker/setup-buildx-action@v2
46+
47+
- name: Build and push Hive Image to docker hub
48+
uses: docker/build-push-action@v4
49+
with:
50+
context: ./packaging/src/docker/
51+
file: ./packaging/src/docker/Dockerfile
52+
push: true
53+
tags: ${{ secrets.DOCKERHUB_USER }}/${{ env.tag }}
54+
build-args:
55+
|
56+
HIVE_VERSION=${{ env.HIVE_VERSION }}
57+
HADOOP_VERSION=${{ env.HADOOP_VERSION }}
58+
TEZ_VERSION=${{ env.TEZ_VERSION }}
59+
BUILD_ENV=archive

packaging/src/docker/Dockerfile

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,31 @@
1414
# See the License for the specific language governing permissions and
1515
# limitations under the License.
1616
#
17+
ARG BUILD_ENV
18+
1719
FROM ubuntu as unarchive
20+
ONBUILD COPY hadoop-*.tar.gz /opt
21+
ONBUILD COPY apache-hive-*-bin.tar.gz /opt
22+
ONBUILD COPY apache-tez-*-bin.tar.gz /opt
23+
24+
FROM ubuntu as archive
25+
ARG HADOOP_VERSION
26+
ARG HIVE_VERSION
27+
ARG TEZ_VERSION
28+
ONBUILD RUN apt-get update && apt-get -y install wget
29+
ONBUILD RUN wget https://archive.apache.org/dist/tez/$TEZ_VERSION/apache-tez-$TEZ_VERSION-bin.tar.gz && \
30+
wget https://archive.apache.org/dist/hadoop/core/hadoop-$HADOOP_VERSION/hadoop-$HADOOP_VERSION.tar.gz && \
31+
wget https://archive.apache.org/dist/hive/hive-$HIVE_VERSION/apache-hive-$HIVE_VERSION-bin.tar.gz
32+
ONBUILD RUN mv /apache-tez-$TEZ_VERSION-bin.tar.gz /opt && \
33+
mv hadoop-$HADOOP_VERSION.tar.gz /opt && \
34+
mv apache-hive-$HIVE_VERSION-bin.tar.gz /opt
35+
1836

37+
FROM ${BUILD_ENV} as env
38+
RUN echo ${BUILD_ENV}
1939
ARG HADOOP_VERSION
2040
ARG HIVE_VERSION
2141
ARG TEZ_VERSION
22-
COPY hadoop-$HADOOP_VERSION.tar.gz /opt
23-
COPY apache-hive-$HIVE_VERSION-bin.tar.gz /opt
24-
COPY apache-tez-$TEZ_VERSION-bin.tar.gz /opt
2542

2643
RUN tar -xzvf /opt/hadoop-$HADOOP_VERSION.tar.gz -C /opt/ && \
2744
rm -rf /opt/hadoop-$HADOOP_VERSION/share/doc/* && \
@@ -35,9 +52,9 @@ FROM openjdk:8-jre-slim AS run
3552
ARG HADOOP_VERSION
3653
ARG HIVE_VERSION
3754
ARG TEZ_VERSION
38-
COPY --from=unarchive /opt/hadoop-$HADOOP_VERSION /opt/hadoop
39-
COPY --from=unarchive /opt/apache-hive-$HIVE_VERSION-bin /opt/hive
40-
COPY --from=unarchive /opt/apache-tez-$TEZ_VERSION-bin /opt/tez
55+
COPY --from=env /opt/hadoop-$HADOOP_VERSION /opt/hadoop
56+
COPY --from=env /opt/apache-hive-$HIVE_VERSION-bin /opt/hive
57+
COPY --from=env /opt/apache-tez-$TEZ_VERSION-bin /opt/tez
4158

4259
# Install dependencies
4360
RUN set -ex; \
@@ -48,7 +65,8 @@ RUN set -ex; \
4865
# Set necessary environment variables.
4966
ENV HADOOP_HOME=/opt/hadoop \
5067
HIVE_HOME=/opt/hive \
51-
TEZ_HOME=/opt/tez
68+
TEZ_HOME=/opt/tez \
69+
HIVE_VER=$HIVE_VERSION
5270

5371
ENV PATH=$HIVE_HOME/bin:$HADOOP_HOME/bin:$PATH
5472

packaging/src/docker/build.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ docker build \
110110
"$WORK_DIR" \
111111
-f "$WORK_DIR/Dockerfile" \
112112
-t "$repo/hive:$HIVE_VERSION" \
113+
--build-arg "BUILD_ENV=unarchive"
113114
--build-arg "HIVE_VERSION=$HIVE_VERSION" \
114115
--build-arg "HADOOP_VERSION=$HADOOP_VERSION" \
115116
--build-arg "TEZ_VERSION=$TEZ_VERSION" \

0 commit comments

Comments
 (0)