Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
orfeas-k committed Oct 8, 2024
1 parent 634b3d5 commit 8deefb1
Showing 1 changed file with 116 additions and 112 deletions.
228 changes: 116 additions & 112 deletions .github/workflows/deploy-to-eks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -46,39 +46,39 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v2

- name: Run YAML to Github Output Action
id: yaml-output
uses: christian-ci/action-yaml-github-output@v2
with:
file_path: ".github/dependencies.yaml"
main_key: ${{ matrix.bundle_version }}

- name: Update ENV variables from inputs if available
run: |
K8S_VERSION=${{ inputs.k8s_version || env.K8S_VERSION }}
echo "K8S_VERSION=${K8S_VERSION}" >> $GITHUB_ENV
UATS_BRANCH=${{ inputs.uats_branch || env.UATS_BRANCH }}
echo "UATS_BRANCH=${UATS_BRANCH}" >> $GITHUB_ENV
# Remove once https://github.com/canonical/bundle-kubeflow/issues/761
# is resolved and applied to uats repository.
- name: Install python ${{ env.PYTHON_VERSION }}
run: |
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt update -y
sudo apt install python${{ env.PYTHON_VERSION }} python${{ env.PYTHON_VERSION }}-distutils python${{ env.PYTHON_VERSION }}-venv -y
- name: Install CLI tools
run: |
wget https://bootstrap.pypa.io/get-pip.py
python${{ env.PYTHON_VERSION }} get-pip.py
python${{ env.PYTHON_VERSION }} -m pip install tox
sudo snap install charmcraft --classic
# We need to install from binary because of this https://bugs.launchpad.net/juju/+bug/2007575
curl -LO https://launchpad.net/juju/${{ env.JUJU_VERSION }}/${{ env.JUJU_VERSION_WITH_PATCH }}/+download/juju-${{ env.JUJU_VERSION_WITH_PATCH }}-linux-amd64.tar.xz
tar xf juju-${{ env.JUJU_VERSION_WITH_PATCH }}-linux-amd64.tar.xz
sudo install -o root -g root -m 0755 juju /usr/local/bin/juju
juju version
# - name: Run YAML to Github Output Action
# id: yaml-output
# uses: christian-ci/action-yaml-github-output@v2
# with:
# file_path: ".github/dependencies.yaml"
# main_key: ${{ matrix.bundle_version }}

# - name: Update ENV variables from inputs if available
# run: |
# K8S_VERSION=${{ inputs.k8s_version || env.K8S_VERSION }}
# echo "K8S_VERSION=${K8S_VERSION}" >> $GITHUB_ENV
# UATS_BRANCH=${{ inputs.uats_branch || env.UATS_BRANCH }}
# echo "UATS_BRANCH=${UATS_BRANCH}" >> $GITHUB_ENV

# # Remove once https://github.com/canonical/bundle-kubeflow/issues/761
# # is resolved and applied to uats repository.
# - name: Install python ${{ env.PYTHON_VERSION }}
# run: |
# sudo add-apt-repository ppa:deadsnakes/ppa -y
# sudo apt update -y
# sudo apt install python${{ env.PYTHON_VERSION }} python${{ env.PYTHON_VERSION }}-distutils python${{ env.PYTHON_VERSION }}-venv -y

# - name: Install CLI tools
# run: |
# # wget https://bootstrap.pypa.io/get-pip.py
# # python${{ env.PYTHON_VERSION }} get-pip.py
# # python${{ env.PYTHON_VERSION }} -m pip install tox
# sudo snap install charmcraft --classic
# # We need to install from binary because of this https://bugs.launchpad.net/juju/+bug/2007575
# curl -LO https://launchpad.net/juju/${{ env.JUJU_VERSION }}/${{ env.JUJU_VERSION_WITH_PATCH }}/+download/juju-${{ env.JUJU_VERSION_WITH_PATCH }}-linux-amd64.tar.xz
# tar xf juju-${{ env.JUJU_VERSION_WITH_PATCH }}-linux-amd64.tar.xz
# sudo install -o root -g root -m 0755 juju /usr/local/bin/juju
# juju version

- name: Configure AWS Credentials
env:
Expand All @@ -89,87 +89,91 @@ jobs:
aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY
aws configure set default.region eu-central-1
- name: Install kubectl
run: |
sudo snap install kubectl --classic --channel=${{ env.K8S_VERSION }}/stable
mkdir ~/.kube
kubectl version --client
# - name: Install kubectl
# run: |
# sudo snap install kubectl --classic --channel=${{ env.K8S_VERSION }}/stable
# mkdir ~/.kube
# kubectl version --client

- name: Install eksctl
run: |
sudo apt-get update
sudo apt-get install -y unzip
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin
eksctl version
# - name: Install eksctl
# run: |
# sudo apt-get update
# sudo apt-get install -y unzip
# curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
# sudo mv /tmp/eksctl /usr/local/bin
# eksctl version

- name: Create cluster
- name: Clean previous cluster
run: |
VERSION=${{ matrix.bundle_version }}
VERSION_WITHOUT_DOT="${VERSION//.}"
yq e ".metadata.name |= \"kubeflow-test-$VERSION_WITHOUT_DOT\"" -i .github/cluster.yaml
yq e ".metadata.version |= \"${{ env.K8S_VERSION }}\"" -i .github/cluster.yaml
eksctl create cluster -f .github/cluster.yaml
kubectl get nodes
aws cloudformation delete-stack --region eu-central-1 --stack-name eksctl-kubeflow-test-latest-cluster
- name: Setup juju
run: |
juju add-k8s eks --client
juju bootstrap eks kubeflow-controller
juju add-model kubeflow
# - name: Create cluster
# run: |
# VERSION=${{ matrix.bundle_version }}
# VERSION_WITHOUT_DOT="${VERSION//.}"
# yq e ".metadata.name |= \"kubeflow-test-$VERSION_WITHOUT_DOT\"" -i .github/cluster.yaml
# yq e ".metadata.version |= \"${{ env.K8S_VERSION }}\"" -i .github/cluster.yaml
# eksctl create cluster -f .github/cluster.yaml
# kubectl get nodes

- name: Test bundle deployment
run: |
tox -vve test_bundle_deployment-${{ matrix.bundle_version }} -- --model kubeflow --keep-models -vv -s
- name: Run Kubeflow UATs
run: |
git clone https://github.com/canonical/charmed-kubeflow-uats.git ~/charmed-kubeflow-uats
cd ~/charmed-kubeflow-uats
git checkout ${{ env.UATS_BRANCH }}
tox -e kubeflow-remote
# On failure, capture debugging resources
- name: Save debug artifacts
uses: canonical/kubeflow-ci/actions/dump-charm-debug-artifacts@main
if: failure() || cancelled()

# On failure, capture debugging resources
- name: Get juju status
run: juju status
if: failure() || cancelled()

- name: Get juju debug logs
run: juju debug-log --replay --no-tail
if: failure() || cancelled()

- name: Get all kubernetes resources
run: kubectl get all -A
if: failure() || cancelled()

- name: Get logs from pods with status = Pending
run: kubectl -n kubeflow get pods | tail -n +2 | grep Pending | awk '{print $1}' | xargs -n1 kubectl -n kubeflow logs --all-containers=true --tail 100
if: failure() || cancelled()

- name: Get logs from pods with status = Failed
run: kubectl -n kubeflow get pods | tail -n +2 | grep Failed | awk '{print $1}' | xargs -n1 kubectl -n kubeflow logs --all-containers=true --tail 100
if: failure() || cancelled()

- name: Get logs from pods with status = CrashLoopBackOff
run: kubectl -n kubeflow get pods | tail -n +2 | grep CrashLoopBackOff | awk '{print $1}' | xargs -n1 kubectl -n kubeflow logs --all-containers=true --tail 100
if: failure() || cancelled()

- name: Delete EKS cluster
if: always()
run: |
VERSION=${{ matrix.bundle_version }}
VERSION_WITHOUT_DOT="${VERSION//.}"
eksctl delete cluster --region eu-central-1 --name=kubeflow-test-$VERSION_WITHOUT_DOT
delete-unattached-volumes:
if: always()
uses: ./.github/workflows/delete-aws-volumes.yaml
secrets: inherit
with:
region: eu-central-1
needs: [deploy-ckf-to-eks]
# - name: Setup juju
# run: |
# juju add-k8s eks --client
# juju bootstrap eks kubeflow-controller
# juju add-model kubeflow

# - name: Test bundle deployment
# run: |
# tox -vve test_bundle_deployment-${{ matrix.bundle_version }} -- --model kubeflow --keep-models -vv -s

# - name: Run Kubeflow UATs
# run: |
# git clone https://github.com/canonical/charmed-kubeflow-uats.git ~/charmed-kubeflow-uats
# cd ~/charmed-kubeflow-uats
# git checkout ${{ env.UATS_BRANCH }}
# tox -e kubeflow-remote

# # On failure, capture debugging resources
# - name: Save debug artifacts
# uses: canonical/kubeflow-ci/actions/dump-charm-debug-artifacts@main
# if: failure() || cancelled()

# # On failure, capture debugging resources
# - name: Get juju status
# run: juju status
# if: failure() || cancelled()

# - name: Get juju debug logs
# run: juju debug-log --replay --no-tail
# if: failure() || cancelled()

# - name: Get all kubernetes resources
# run: kubectl get all -A
# if: failure() || cancelled()

# - name: Get logs from pods with status = Pending
# run: kubectl -n kubeflow get pods | tail -n +2 | grep Pending | awk '{print $1}' | xargs -n1 kubectl -n kubeflow logs --all-containers=true --tail 100
# if: failure() || cancelled()

# - name: Get logs from pods with status = Failed
# run: kubectl -n kubeflow get pods | tail -n +2 | grep Failed | awk '{print $1}' | xargs -n1 kubectl -n kubeflow logs --all-containers=true --tail 100
# if: failure() || cancelled()

# - name: Get logs from pods with status = CrashLoopBackOff
# run: kubectl -n kubeflow get pods | tail -n +2 | grep CrashLoopBackOff | awk '{print $1}' | xargs -n1 kubectl -n kubeflow logs --all-containers=true --tail 100
# if: failure() || cancelled()

# - name: Delete EKS cluster
# if: always()
# run: |
# VERSION=${{ matrix.bundle_version }}
# VERSION_WITHOUT_DOT="${VERSION//.}"
# eksctl delete cluster --region eu-central-1 --name=kubeflow-test-$VERSION_WITHOUT_DOT

# delete-unattached-volumes:
# if: always()
# uses: ./.github/workflows/delete-aws-volumes.yaml
# secrets: inherit
# with:
# region: eu-central-1
# needs: [deploy-ckf-to-eks]

0 comments on commit 8deefb1

Please sign in to comment.