| name: python-sdk |
| |
| # Trigger the workflow on push or pull request |
| on: [push, pull_request] |
| |
| jobs: |
| unit: |
| runs-on: ubuntu-latest |
| timeout-minutes: 120 |
| strategy: |
| matrix: |
| python-version: [3.5,3.6,3.7] |
| tf-version: [1.14.0,1.15.0] |
| fail-fast: false |
| env: |
| PYTHON: ${{ matrix.python }} |
| steps: |
| - uses: actions/checkout@v1 |
| - name: Setup python environment |
| uses: actions/setup-python@v1 |
| with: |
| python-version: ${{ matrix.python-version }} |
| - name: Install dependencies |
| run: | |
| pip install --upgrade pip |
| pip install --no-cache-dir tensorflow==${{ matrix.tf-version }} |
| pip install --no-cache-dir torch==1.5.0 |
| pip install --no-cache-dir ./submarine-sdk/pysubmarine/. |
| pip install -r ./submarine-sdk/pysubmarine/github-actions/test-requirements.txt |
| pip install -r ./submarine-sdk/pysubmarine/github-actions/lint-requirements.txt |
| - name: Check python sdk code style |
| if: matrix.python-version == '3.6' |
| run: | |
| ./submarine-sdk/pysubmarine/github-actions/lint.sh |
| - name: Run unit test |
| run: | |
| pytest --cov=submarine -vs -m "not e2e" |
| integration: |
| runs-on: ubuntu-latest |
| timeout-minutes: 120 |
| steps: |
| - uses: actions/checkout@v1 |
| - name: Create the kind config |
| run: | |
| cat <<EOF > ./kind-config-kind.yaml |
| kind: Cluster |
| apiVersion: kind.x-k8s.io/v1alpha4 |
| nodes: |
| - role: control-plane |
| kubeadmConfigPatches: |
| - | |
| kind: InitConfiguration |
| nodeRegistration: |
| kubeletExtraArgs: |
| node-labels: "ingress-ready=true" |
| authorization-mode: "AlwaysAllow" |
| extraPortMappings: |
| - containerPort: 32080 |
| hostPort: 80 |
| protocol: TCP |
| - containerPort: 443 |
| hostPort: 443 |
| protocol: TCP |
| EOF |
| - uses: engineerd/setup-kind@v0.4.0 |
| with: |
| version: "v0.7.0" |
| image: kindest/node:v1.15.6 |
| config: ./kind-config-kind.yaml |
| - name: Show K8s cluster information |
| run: | |
| kubectl cluster-info |
| kubectl version |
| kubectl get pods -n kube-system |
| echo "current-context:" $(kubectl config current-context) |
| echo "environment-kubeconfig:" ${KUBECONFIG} |
| - name: Start submarine |
| run: | |
| # Fix submarine-database start failed in kind. https://github.com/kubernetes/minikube/issues/7906 |
| sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ |
| sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld |
| helm install --wait submarine ./helm-charts/submarine |
| kubectl get pods |
| kubectl port-forward svc/submarine-database 3306:3306 & |
| kubectl port-forward svc/submarine-server 8080:8080 & |
| - name: Setup python environment |
| uses: actions/setup-python@v1 |
| with: |
| python-version: 3.6 |
| - name: Install dependencies |
| run: | |
| pip install --upgrade pip |
| pip install --no-cache-dir ./submarine-sdk/pysubmarine/. |
| pip install -r ./submarine-sdk/pysubmarine/github-actions/test-requirements.txt |
| - name: Run integration test |
| run: | |
| cd submarine-sdk/pysubmarine |
| pytest --cov=submarine -vs -m "e2e" |