Skip to content

Presto Stable - Publish Native Docker Image #11

Presto Stable - Publish Native Docker Image

Presto Stable - Publish Native Docker Image #11

name: Presto Stable - Publish Native Docker Image
on:
workflow_dispatch:
inputs:
version:
description: 'Release version (e.g., 0.291)'
required: true
publish_as_latest:
description: 'Also publish as latest version'
type: boolean
default: true
required: false
dependency_image:
description: 'Dependency image(e.g., prestodb/presto-native-dependency:0.290-20241014120930-e1fc090)'
required: false
default: ''
env:
VERSION: ${{ github.event.inputs.version }}
ORG_NAME: unidevel
IMAGE_NAME: presto-native
jobs:
build-images:
runs-on: ubuntu-latest
environment: release
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ env.VERSION }}
submodules: true
- name: Initialize Prestissimo submodules
run: |
cd presto-native-execution && make submodules
echo "COMMIT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3.3.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3.3.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set dependency image tag
run: |
if [[ -n "${{ github.event.inputs.dependency_image }}" ]]; then
echo "DEPENDENCY_IMAGE=${{ github.event.inputs.dependency_image }}" >> $GITHUB_ENV
else
echo "DEPENDENCY_IMAGE=ghcr.io/${{ github.repository_owner }}/presto-native-dependency:${{ env.VERSION }}-${{ env.COMMIT_SHA }}" >> $GITHUB_ENV
fi
- name: Build Dependency Image
working-directory: presto-native-execution
run: |
if docker pull ${{ env.DEPENDENCY_IMAGE }}; then
echo "Using dependency image ${{ env.DEPENDENCY_IMAGE }}"
docker tag ${{ env.DEPENDENCY_IMAGE }} presto/prestissimo-dependency:centos9
else
echo "Building new depedency image"
docker compose build centos-native-dependency
docker tag presto/prestissimo-dependency:centos9 ghcr.io/${{ github.repository_owner }}/presto-native-dependency:${{ env.VERSION }}-${{ env.COMMIT_SHA }}
docker push ghcr.io/${{ github.repository_owner }}/presto-native-dependency:${{ env.VERSION }}-${{ env.COMMIT_SHA }}
fi
docker images
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3
- name: Build Runtime Image
working-directory: presto-native-execution
run: |
if docker pull ghcr.io/${{ github.repository_owner }}/presto-native:${{ env.VERSION }}-${{ env.COMMIT_SHA }}; then
docker tag ghcr.io/${{ github.repository_owner }}/presto-native:${{ env.VERSION }}-${{ env.COMMIT_SHA }} docker.io/presto/prestissimo-runtime:centos9
else
docker compose build centos-native-runtime
docker tag presto/prestissimo-runtime:centos9 ghcr.io/${{ github.repository_owner }}/presto-native:${{ env.VERSION }}-${{ env.COMMIT_SHA }}
docker push ghcr.io/${{ github.repository_owner }}/presto-native:${{ env.VERSION }}-${{ env.COMMIT_SHA }}
fi
- name: Add release tag
working-directory: presto-native-execution
run: |
docker tag presto/prestissimo-runtime:centos9 ${{ env.ORG_NAME }}/${{ env.IMAGE_NAME }}:${{ env.VERSION }}
if [[ "${{ github.event.inputs.publish_as_latest }}" == "true" ]]; then
docker tag presto/prestissimo-runtime:centos9 ${{ env.ORG_NAME }}/${{ env.IMAGE_NAME }}:latest
fi
- name: Push to DockerHub
run: |
docker push ${{ env.ORG_NAME }}/${{ env.IMAGE_NAME }}:${{ env.VERSION }}
if [[ "${{ github.event.inputs.publish_as_latest }}" == "true" ]]; then
docker tag ${{ env.ORG_NAME }}/${{ env.IMAGE_NAME }}:${{ env.VERSION }} ${{ env.ORG_NAME }}/${{ env.IMAGE_NAME }}:latest
docker push ${{ env.ORG_NAME }}/${{ env.IMAGE_NAME }}:latest
fi
- name: Tag and push to GitHub Packages
run: |
docker tag ${{ env.ORG_NAME }}/${{ env.IMAGE_NAME }}:${{ env.VERSION }} ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ env.VERSION }}
docker push ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ env.VERSION }}
if [[ "${{ github.event.inputs.publish_as_latest }}" == "true" ]]; then
docker tag ${{ env.ORG_NAME }}/${{ env.IMAGE_NAME }}:${{ env.VERSION }} ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:latest
docker push ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:latest
fi