| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http:/www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| name: Kubernetes |
| |
| on: |
| # push: |
| # pull_request: |
| workflow_dispatch: |
| |
| env: |
| RAY_HELM_VERSION: 1.1.0 |
| PYTHON_VERSION: 3.9 |
| IMAGE_REPOSITORY: ghcr.io/apache/datafusion-ray |
| |
| jobs: |
| build: |
| runs-on: ubuntu-latest |
| |
| steps: |
| - uses: actions/checkout@v3 |
| |
| - name: Docker meta |
| id: meta |
| uses: docker/metadata-action@v5 |
| with: |
| images: | |
| ${{ env.IMAGE_REPOSITORY }} |
| tags: | |
| type=ref,event=branch |
| type=ref,event=pr |
| type=semver,pattern={{version}} |
| type=semver,pattern={{major}}.{{minor}} |
| type=semver,pattern={{major}} |
| type=sha |
| |
| - name: Set up Docker Buildx |
| uses: docker/setup-buildx-action@v3 |
| |
| - name: Log in to GitHub Container Registry |
| if: startsWith(github.ref, 'refs/tags/') |
| uses: docker/login-action@v3 |
| with: |
| registry: ghcr.io |
| username: ${{ github.actor }} |
| password: ${{ secrets.GITHUB_TOKEN }} |
| |
| - name: Build and push Docker image |
| uses: docker/build-push-action@v6 |
| with: |
| context: . |
| file: ./k8s/Dockerfile |
| tags: ${{ steps.meta.outputs.tags }} |
| labels: ${{ steps.meta.outputs.labels }} |
| push: ${{ startsWith(github.ref, 'refs/tags/') }} |
| load: true |
| |
| - name: Kind Cluster |
| uses: helm/kind-action@v1.10.0 |
| with: |
| config: ./k8s/kind-config.yaml |
| |
| - name: Free Disk Space (Ubuntu) |
| uses: jlumbroso/free-disk-space@v1.3.1 |
| with: |
| # this might remove tools that are actually needed, |
| # when set to "true" but frees about 6 GB |
| tool-cache: true |
| docker-images: false |
| |
| - name: Extract short SHA |
| run: | |
| SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-7) |
| echo "IMAGE_TAG=sha-${SHORT_SHA}" >> "$GITHUB_ENV" |
| echo "Extracted short SHA tag: sha-${SHORT_SHA}" |
| |
| - name: Load Docker image into Kind cluster |
| run: | |
| kind load docker-image ${{ env.IMAGE_REPOSITORY }}:${{ env.IMAGE_TAG }} -n chart-testing |
| |
| - name: Install Helm |
| uses: azure/setup-helm@v4.2.0 |
| with: |
| version: "3.16.0" |
| |
| - name: Deploy helm chart |
| run: | |
| helm repo add kuberay https://ray-project.github.io/kuberay-helm/ |
| helm install kuberay-operator kuberay/kuberay-operator --version ${{ env.RAY_HELM_VERSION }} |
| helm install raycluster kuberay/ray-cluster --version ${{ env.RAY_HELM_VERSION }} \ |
| --set image.repository=${{ env.IMAGE_REPOSITORY }} \ |
| --set image.tag=${{ env.IMAGE_TAG }} \ |
| --set imagePullPolicy=Always |
| echo "Deployed Ray cluster with image repository: ${{ env.IMAGE_REPOSITORY }} and tag: ${{ env.IMAGE_TAG }}" |
| |
| - name: Set up Python |
| uses: actions/setup-python@v3 |
| with: |
| python-version: ${{ env.PYTHON_VERSION }} |
| |
| - name: Install python dependencies |
| run: | |
| python -m pip install --upgrade pip |
| pip install -r requirements-in.txt |
| |
| - name: Submit an example ray Job |
| run: | |
| kubectl port-forward service/raycluster-kuberay-head-svc 8265:8265 & |
| export RAY_ADDRESS="http://127.0.0.1:8265" |
| pip install "ray[default]" |
| ray job submit --working-dir ./examples/ -- python3 tips.py |