-
Notifications
You must be signed in to change notification settings - Fork 3
ci: Add GitHub workflows to build and publish coordinator runtime, worker runtime, and worker development environment container images. #26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 28 commits
4f23c7b
48dff13
9bd9207
4997a02
d74b885
4815351
e7fe20c
fc2cc18
cc2c510
60dd19d
a534bec
9e17bc0
aeb4e48
dbb28fa
1e69681
4ca014c
fec665a
20a7054
283b751
64983f0
a6ebbaa
5ca0420
fa06d23
d120672
4c90aad
3b76c12
b55aeda
74787c7
313a648
47b9c10
ceaa809
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -46,5 +46,71 @@ jobs: | |||||||||||||||||
| run: | | ||||||||||||||||||
| export MAVEN_OPTS="${MAVEN_INSTALL_OPTS}" | ||||||||||||||||||
| ./mvnw install -B -V -T 1C -DskipTests -Dmaven.javadoc.skip=true --no-transfer-progress -P ci -pl '!presto-test-coverage,!:presto-docs' | ||||||||||||||||||
| - name: Upload presto-server | ||||||||||||||||||
| if: matrix.java == '8.0.442' | ||||||||||||||||||
| uses: actions/upload-artifact@v4 | ||||||||||||||||||
| with: | ||||||||||||||||||
| name: presto-server | ||||||||||||||||||
| path: presto-server/target/presto-server-0.293.tar.gz | ||||||||||||||||||
| if-no-files-found: "error" | ||||||||||||||||||
| retention-days: 1 | ||||||||||||||||||
| - name: Upload presto-cli | ||||||||||||||||||
| if: matrix.java == '8.0.442' | ||||||||||||||||||
| uses: actions/upload-artifact@v4 | ||||||||||||||||||
| with: | ||||||||||||||||||
| name: presto-cli | ||||||||||||||||||
| path: presto-cli/target/presto-cli-0.293-executable.jar | ||||||||||||||||||
anlowee marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||||||||||||||
| if-no-files-found: "error" | ||||||||||||||||||
| retention-days: 1 | ||||||||||||||||||
| - name: Clean Maven Output | ||||||||||||||||||
| run: ./mvnw clean -pl '!:presto-server,!:presto-cli,!presto-test-coverage' | ||||||||||||||||||
| presto-coordinator-image: | ||||||||||||||||||
| name: presto-coordinator-image | ||||||||||||||||||
| needs: maven-checks | ||||||||||||||||||
| runs-on: ubuntu-22.04 | ||||||||||||||||||
| steps: | ||||||||||||||||||
| - uses: "actions/checkout@v4" | ||||||||||||||||||
| with: | ||||||||||||||||||
| submodules: "recursive" | ||||||||||||||||||
|
|
||||||||||||||||||
| - name: Download presto-server | ||||||||||||||||||
| uses: actions/download-artifact@v4 | ||||||||||||||||||
| with: | ||||||||||||||||||
| name: presto-server | ||||||||||||||||||
| path: ./docker | ||||||||||||||||||
|
|
||||||||||||||||||
| - name: Download presto-cli | ||||||||||||||||||
| uses: actions/download-artifact@v4 | ||||||||||||||||||
| with: | ||||||||||||||||||
| name: presto-cli | ||||||||||||||||||
| path: ./docker | ||||||||||||||||||
|
|
||||||||||||||||||
| - name: "Login to image registry" | ||||||||||||||||||
| uses: "docker/login-action@v3" | ||||||||||||||||||
| with: | ||||||||||||||||||
| registry: ghcr.io | ||||||||||||||||||
| username: ${{github.actor}} | ||||||||||||||||||
| password: ${{secrets.GITHUB_TOKEN}} | ||||||||||||||||||
|
|
||||||||||||||||||
| - name: "Set up container image metadata" | ||||||||||||||||||
| id: "meta" | ||||||||||||||||||
| uses: "docker/metadata-action@v5" | ||||||||||||||||||
| with: | ||||||||||||||||||
| images: >- | ||||||||||||||||||
| ghcr.io/${{github.repository}}/coordinator | ||||||||||||||||||
| tags: |- | ||||||||||||||||||
| type=raw,value=dev | ||||||||||||||||||
|
|
||||||||||||||||||
| - name: "Build and push" | ||||||||||||||||||
| uses: "docker/build-push-action@v6" | ||||||||||||||||||
|
||||||||||||||||||
| with: | ||||||||||||||||||
| build-args: |- | ||||||||||||||||||
| JMX_PROMETHEUS_JAVA_AGENT_VERSION=0.20.0 | ||||||||||||||||||
| PRESTO_VERSION=0.293 | ||||||||||||||||||
| context: "./docker/" | ||||||||||||||||||
|
||||||||||||||||||
| build-args: |- | |
| JMX_PROMETHEUS_JAVA_AGENT_VERSION=0.20.0 | |
| PRESTO_VERSION=0.293 | |
| context: "./docker/" | |
| build-args: |- | |
| JMX_PROMETHEUS_JAVA_AGENT_VERSION=0.20.0 | |
| PRESTO_VERSION=${{ env.PRESTO_VERSION }} | |
| context: "./docker/" |
🤖 Prompt for AI Agents
In .github/workflows/maven-checks.yml around lines 108 to 111, the build
argument PRESTO_VERSION is hard-coded as 0.293, duplicating the version literal.
Replace this hard-coded value with a reference to the workflow-level
PRESTO_VERSION variable to avoid repetition and improve maintainability.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Consider skipping the heavy Docker build on pull-requests
You already guard the push, but the image is still fully built during PRs, adding ~5-10 min to CI. Add the same condition to the build step or wrap the whole job in if: github.event_name == 'push' && github.ref == 'refs/heads/release-0.293-clp-connector'.
🤖 Prompt for AI Agents
In .github/workflows/maven-checks.yml around lines 104 to 115, the Docker image
build runs during pull requests, causing unnecessary CI delays. To fix this, add
a condition to skip the build step during pull requests by adding an if clause
that checks if the event is a push to the release-0.293-clp-connector branch, or
wrap the entire job with this condition. This ensures the heavy Docker build
only runs on relevant pushes, not on PRs.
| Original file line number | Diff line number | Diff line change | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,72 @@ | ||||||||||||||||||
| name: prestissimo-worker-images-build | ||||||||||||||||||
|
|
||||||||||||||||||
| on: | ||||||||||||||||||
| pull_request: | ||||||||||||||||||
| push: | ||||||||||||||||||
|
|
||||||||||||||||||
| jobs: | ||||||||||||||||||
| prestissimo-worker-images-build: | ||||||||||||||||||
| name: prestissimo-worker-images-build | ||||||||||||||||||
| runs-on: ubuntu-22.04 | ||||||||||||||||||
| steps: | ||||||||||||||||||
| - uses: "actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683" | ||||||||||||||||||
| with: | ||||||||||||||||||
| submodules: "recursive" | ||||||||||||||||||
|
|
||||||||||||||||||
| - name: "Login to image registry" | ||||||||||||||||||
| uses: "docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772" | ||||||||||||||||||
| with: | ||||||||||||||||||
|
Comment on lines
+12
to
+18
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick (assertive) Mixed pinning style: commit SHAs here, version tags elsewhere This workflow pins actions to SHAs while 🤖 Prompt for AI Agents |
||||||||||||||||||
| registry: ghcr.io | ||||||||||||||||||
| username: ${{github.actor}} | ||||||||||||||||||
| password: ${{secrets.GITHUB_TOKEN}} | ||||||||||||||||||
|
|
||||||||||||||||||
| - name: "Set up metadata for dependency image" | ||||||||||||||||||
| id: "metadata-deps-image" | ||||||||||||||||||
| uses: "docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804" | ||||||||||||||||||
| with: | ||||||||||||||||||
| images: >- | ||||||||||||||||||
| ghcr.io/${{github.repository}}/prestissimo-worker-dev-env | ||||||||||||||||||
| tags: |- | ||||||||||||||||||
| type=raw,value=dev | ||||||||||||||||||
|
||||||||||||||||||
| images: >- | |
| ghcr.io/${{github.repository}}/prestissimo-worker-dev-env | |
| tags: |- | |
| type=raw,value=dev | |
| images: >- | |
| ghcr.io/${{ github.repository_owner }}/prestissimo-worker-dev-env | |
| tags: |- | |
| type=raw,value=dev |
🤖 Prompt for AI Agents
In .github/workflows/prestissimo-worker-images-build.yml around lines 28 to 31,
the use of `${{ github.repository }}` can cause GHCR push failures if the
repository name contains upper-case letters. To fix this, convert `${{
github.repository }}` to lower-case using a function or replace it with `${{
github.repository_owner }}` which is always lower-case, ensuring the image name
is valid and avoiding authentication errors.
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Same lowercase issue for the runtime image path
Apply the same fix as above to keep both images consistent and push-able.
🤖 Prompt for AI Agents
In .github/workflows/prestissimo-worker-images-build.yml around lines 48 to 51,
the runtime image path uses uppercase letters which can cause inconsistencies
and push failures. Modify the image path to use all lowercase letters, matching
the fix applied to the other image path, ensuring both image paths are
consistent and pushable.
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
DEPENDENCY_IMAGE may contain newlines, confusing BuildKit
docker/metadata-action outputs tags as a newline-separated list. Passing that raw into a single BUILD_ARG can inject stray line breaks and break the build. Grab the first tag explicitly:
- DEPENDENCY_IMAGE=${{steps.metadata-deps-image.outputs.tags}}
+ DEPENDENCY_IMAGE=${{ steps.metadata-deps-image.outputs.tags }}
+ # If multiple tags are present, keep only the first one
+ DEPENDENCY_IMAGE=${DEPENDENCY_IMAGE%%$'\n'*}or parse it in a separate step and set an output.
Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In .github/workflows/prestissimo-worker-images-build.yml around lines 58 to 66,
the DEPENDENCY_IMAGE build argument is set directly from
steps.metadata-deps-image.outputs.tags, which may contain multiple
newline-separated tags causing BuildKit to fail. Fix this by extracting only the
first tag from the tags output before passing it as DEPENDENCY_IMAGE, either by
using shell commands to select the first line or by adding a separate step to
parse and set a single tag output, then reference that sanitized output in the
build-args.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -12,7 +12,7 @@ | |
|
|
||
| ARG DEPENDENCY_IMAGE=presto/prestissimo-dependency:centos9 | ||
| ARG BASE_IMAGE=quay.io/centos/centos:stream9 | ||
| FROM ${DEPENDENCY_IMAGE} as prestissimo-image | ||
|
Check warning on line 15 in presto-native-execution/scripts/dockerfiles/prestissimo-runtime.dockerfile
|
||
|
|
||
| ARG OSNAME=centos | ||
| ARG BUILD_TYPE=Release | ||
|
|
@@ -39,6 +39,15 @@ | |
| ENV BUILD_BASE_DIR=_build | ||
| ENV BUILD_DIR="" | ||
|
|
||
| # Temporary fix for https://github.com/prestodb/presto/issues/25531 | ||
| # TODO: Update this code when there's a proper fix | ||
| RUN apt-get update && \ | ||
| DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata && \ | ||
| ln -snf /usr/share/zoneinfo/America/Toronto /etc/localtime && \ | ||
| echo "America/New_York" > /etc/timezone && \ | ||
|
||
| apt-get clean && \ | ||
| rm -rf /var/lib/apt/lists/* | ||
|
|
||
| COPY --chmod=0775 --from=prestissimo-image /prestissimo/${BUILD_BASE_DIR}/${BUILD_DIR}/presto_cpp/main/presto_server /usr/bin/ | ||
| COPY --chmod=0775 --from=prestissimo-image /runtime-libraries/* /usr/lib64/prestissimo-libs/ | ||
| COPY --chmod=0755 ./etc /opt/presto-server/etc | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.