Skip to content

Commit 14eb41b

Browse files
committed
Generate docker image with uber-jar
Signed-off-by: Marvin Froeder <marvin@datasqrl.com>
1 parent 022dfb9 commit 14eb41b

File tree

4 files changed

+237
-0
lines changed

4 files changed

+237
-0
lines changed

.github/workflows/uber-jar.yml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name: Build uber jar
2+
3+
on:
4+
release:
5+
types: [created]
6+
push:
7+
branches:
8+
- main
9+
pull_request:
10+
branches:
11+
- main
12+
13+
jobs:
14+
uber-jar:
15+
runs-on: ubuntu-latest
16+
strategy:
17+
matrix:
18+
SQRL_VERSION: [0.5.6, 0.5.7, 0.5.8, 0.5.9, 0.5.10, dev]
19+
20+
env:
21+
DOCKER_REPO: datasqrl/flink-jar-runner
22+
VERSION: ${{ github.event_name == 'release' && github.event.action == 'created' && github.ref_name || '1.0.0-SNAPSHOT' }}
23+
24+
steps:
25+
- name: Checkout code
26+
uses: actions/checkout@v2
27+
28+
- name: Set up Docker Buildx
29+
uses: docker/setup-buildx-action@v2
30+
31+
- name: Log in to Docker Hub
32+
if: github.event_name == 'release' && github.event.action == 'created'
33+
uses: docker/login-action@v2
34+
with:
35+
username: ${{ secrets.DOCKER_USERNAME }}
36+
password: ${{ secrets.DOCKER_PASSWORD }}
37+
38+
- name: Pull base images
39+
run: |
40+
docker pull maven:3.9.9-eclipse-temurin-11
41+
docker pull alpine:3
42+
43+
- name: Run Maven Build
44+
if: github.event_name == 'release' && github.event.action == 'created'
45+
run: |
46+
mvn -B versions:set -DnewVersion=${{ env.VERSION }}
47+
mvn -B clean install -DskipTests=true
48+
49+
- name: Build Docker image
50+
run: |
51+
cp uber-jar/Dockerfile .
52+
DOCKER_TAG=$DOCKER_REPO:jar-only-${{ env.VERSION }}-sqrlv${{ matrix.SQRL_VERSION }}
53+
docker build --build-arg SQRL_VERSION=${{ matrix.SQRL_VERSION }} --build-arg GITHUB_ACTOR=${{ github.actor }} --build-arg GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} --build-arg RUNNER_VERSION=${{ env.VERSION }} -t $DOCKER_TAG .
54+
55+
- name: Push Docker image
56+
if: github.event_name == 'release' && github.event.action == 'created'
57+
run: |
58+
DOCKER_TAG=$DOCKER_REPO:${{ env.VERSION }}-sqrlv${{ matrix.SQRL_VERSION }}
59+
docker push $DOCKER_TAG
60+

pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,7 @@
430430
<enforcer.skip>true</enforcer.skip>
431431
<maven.javadoc.skip>true</maven.javadoc.skip>
432432
<gcf.skip>true</gcf.skip>
433+
<license.skip>true</license.skip>
433434
</properties>
434435
</profile>
435436
</profiles>

uber-jar/Dockerfile

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#
2+
# Copyright © 2024 DataSQRL (contact@datasqrl.com)
3+
#
4+
# Licensed under the Apache License, Version 2.0 (the "License");
5+
# you may not use this file except in compliance with the License.
6+
# You may obtain a copy of the License at
7+
#
8+
# http://www.apache.org/licenses/LICENSE-2.0
9+
#
10+
# Unless required by applicable law or agreed to in writing, software
11+
# distributed under the License is distributed on an "AS IS" BASIS,
12+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
# See the License for the specific language governing permissions and
14+
# limitations under the License.
15+
#
16+
17+
FROM maven:3.9.9-eclipse-temurin-11 AS build
18+
19+
ARG RUNNER_VERSION="1.0.0-SNAPSHOT"
20+
ARG SQRL_VERSION="0.5.7"
21+
ARG GITHUB_ACTOR
22+
ARG GITHUB_TOKEN
23+
24+
ENV GITHUB_ACTOR=${GITHUB_ACTOR}
25+
ENV GITHUB_TOKEN=${GITHUB_TOKEN}
26+
27+
ENV SQRL_VERSION=${SQRL_VERSION}
28+
29+
WORKDIR /src
30+
COPY * /src/
31+
RUN mvn clean install -B -Pquickbuild
32+
33+
WORKDIR /uber-jar
34+
COPY uber-jar/uber-pom.xml /uber-jar/pom.xml
35+
RUN mvn clean install -B
36+
37+
FROM alpine:3
38+
39+
ARG RUNNER_VERSION="1.0.0-SNAPSHOT"
40+
ENV RUNNER_VERSION=${RUNNER_VERSION}
41+
42+
USER 9999
43+
44+
WORKDIR /runner
45+
46+
COPY --from=build /uber-jar/target/flink-jar-runner-uber-jar-${RUNNER_VERSION}.jar /runner/

uber-jar/uber-pom.xml

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
6+
<modelVersion>4.0.0</modelVersion>
7+
<groupId>com.datasqrl</groupId>
8+
<artifactId>flink-jar-runner-uber-jar</artifactId>
9+
<version>${env.RUNNER_VERSION}</version>
10+
<packaging>jar</packaging>
11+
12+
<properties>
13+
<maven.compiler.source>11</maven.compiler.source>
14+
<maven.compiler.target>11</maven.compiler.target>
15+
<flink.version>1.19.1</flink.version>
16+
<jdbc.version>3.2.0-1.19</jdbc.version>
17+
<kafka.version>3.2.0-1.19</kafka.version>
18+
<iceberg.version>1.6.0</iceberg.version>
19+
</properties>
20+
21+
<dependencies>
22+
<dependency>
23+
<groupId>com.datasqrl</groupId>
24+
<artifactId>flink-jar-runner</artifactId>
25+
<version>${env.RUNNER_VERSION}</version>
26+
</dependency>
27+
<dependency>
28+
<groupId>org.apache.flink</groupId>
29+
<artifactId>flink-connector-kafka</artifactId>
30+
<version>${kafka.version}</version>
31+
</dependency>
32+
<dependency>
33+
<groupId>org.apache.flink</groupId>
34+
<artifactId>flink-connector-jdbc</artifactId>
35+
<version>${jdbc.version}</version>
36+
</dependency>
37+
<dependency>
38+
<groupId>org.apache.flink</groupId>
39+
<artifactId>flink-avro-confluent-registry</artifactId>
40+
<version>${flink.version}</version>
41+
</dependency>
42+
<dependency>
43+
<groupId>com.datasqrl</groupId>
44+
<artifactId>sqrl-lib-common</artifactId>
45+
<version>${env.SQRL_VERSION}</version>
46+
</dependency>
47+
<dependency>
48+
<groupId>com.datasqrl</groupId>
49+
<artifactId>sqrl-json</artifactId>
50+
<version>${env.SQRL_VERSION}</version>
51+
</dependency>
52+
<dependency>
53+
<groupId>com.datasqrl</groupId>
54+
<artifactId>sqrl-secure</artifactId>
55+
<version>${env.SQRL_VERSION}</version>
56+
</dependency>
57+
<dependency>
58+
<groupId>com.datasqrl</groupId>
59+
<artifactId>sqrl-time</artifactId>
60+
<version>${env.SQRL_VERSION}</version>
61+
</dependency>
62+
<dependency>
63+
<groupId>com.datasqrl</groupId>
64+
<artifactId>sqrl-text</artifactId>
65+
<version>${env.SQRL_VERSION}</version>
66+
</dependency>
67+
<dependency>
68+
<groupId>com.datasqrl</groupId>
69+
<artifactId>sqrl-flexible-json</artifactId>
70+
<version>${env.SQRL_VERSION}</version>
71+
</dependency>
72+
<dependency>
73+
<groupId>com.datasqrl</groupId>
74+
<artifactId>sqrl-flexible-csv</artifactId>
75+
<version>${env.SQRL_VERSION}</version>
76+
</dependency>
77+
<dependency>
78+
<groupId>com.datasqrl</groupId>
79+
<artifactId>sqrl-jdbc-1.19</artifactId>
80+
<version>${env.SQRL_VERSION}</version>
81+
</dependency>
82+
</dependencies>
83+
84+
<repositories>
85+
<repository>
86+
<id>central</id>
87+
<url>https://repo.maven.apache.org/maven2</url>
88+
</repository>
89+
<repository>
90+
<id>confluent</id>
91+
<url>https://packages.confluent.io/maven/</url>
92+
</repository>
93+
<repository>
94+
<id>datasqrl</id>
95+
<url>https://maven.pkg.github.com/DataSQRL/sqrl</url>
96+
<snapshots>
97+
<enabled>true</enabled>
98+
</snapshots>
99+
<releases>
100+
<enabled>true</enabled>
101+
</releases>
102+
</repository>
103+
</repositories>
104+
105+
<build>
106+
<plugins>
107+
<plugin>
108+
<groupId>org.apache.maven.plugins</groupId>
109+
<artifactId>maven-shade-plugin</artifactId>
110+
<version>3.2.4</version>
111+
<executions>
112+
<execution>
113+
<phase>package</phase>
114+
<goals>
115+
<goal>shade</goal>
116+
</goals>
117+
<configuration>
118+
<transformers>
119+
<transformer
120+
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
121+
<mainClass>com.datasqrl.FlinkMain</mainClass>
122+
</transformer>
123+
</transformers>
124+
</configuration>
125+
</execution>
126+
</executions>
127+
</plugin>
128+
</plugins>
129+
</build>
130+
</project>

0 commit comments

Comments
 (0)