Skip to content
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

Refactor presubmit-tests-with-pipeline-deployment.sh to run in other projects #1732

Merged
merged 8 commits into from
Aug 20, 2019
15 changes: 15 additions & 0 deletions test/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,21 @@ However you can keep them by providing additional parameter.
argo submit integration_test_gke.yaml -p branch="my-branch" -p cleanup="false"
```

### Run presubmit-tests-with-pipeline-deployment.sh locally

Run the following commands from root of kubeflow/pipelines repo.
```
#$PULL_PULL_SHA and $WORKSPACE are env variables set by Prow
export PULL_PULL_SHA=pull-sha-placeholder
export WORKSPACE=$(pwd) # root of kubeflow/pipelines git repo

./test/presubmit-tests-with-pipeline-deployment.sh \
--workflow_file e2e_test_gke_v2.yaml \ # You can specify other workflows you want to test too.
--test_result_folder ${FOLDER_NAME_TO_HOLD_TEST_RESULT} \
--test_result_bucket ${YOUR_GCS_TEST_RESULT_BUCKET} \
--project ${YOUR_GCS_PROJECT}
```

## Troubleshooting

**Q: Why is my test taking so long on GKE?**
Expand Down
4 changes: 3 additions & 1 deletion test/build_image.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ spec:
arguments:
parameters:
- name: image-build-context-gcs-uri
- name: image-builder-image
value: gcr.io/ml-pipeline-test/image-builder:v20181128-0.1.3-rc.1-109-ga5a14dc-e3b0c4
- name: api-image
- name: frontend-image
- name: scheduledworkflow-image
Expand Down Expand Up @@ -105,7 +107,7 @@ spec:
valueFrom:
path: /outputs/strict-image-name/file
container:
image: gcr.io/ml-pipeline-test/image-builder:v20181128-0.1.3-rc.1-109-ga5a14dc-e3b0c4
image: "{{workflow.parameters.image-builder-image}}"
imagePullPolicy: 'Always'
args: [
"--image-build-context-gcs-uri", "{{inputs.parameters.image-build-context-gcs-uri}}",
Expand Down
4 changes: 3 additions & 1 deletion test/component_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ spec:
arguments:
parameters:
- name: image-build-context-gcs-uri
- name: image-builder-image
value: gcr.io/ml-pipeline-test/image-builder:v20181128-0.1.3-rc.1-109-ga5a14dc-e3b0c4
- name: commit-sha
- name: component-image-prefix
- name: target-image-prefix
Expand Down Expand Up @@ -158,7 +160,7 @@ spec:
valueFrom:
path: /outputs/strict-image-name/file
container:
image: gcr.io/ml-pipeline-test/image-builder:v20181128-0.1.3-rc.1-109-ga5a14dc-e3b0c4
image: "{{workflow.parameters.image-builder-image}}"
imagePullPolicy: 'Always'
args: [
"--image-build-context-gcs-uri", "{{inputs.parameters.image-build-context-gcs-uri}}",
Expand Down
3 changes: 2 additions & 1 deletion test/deploy-kubeflow.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ KS_VERSION="0.13.0"
curl -LO https://github.com/ksonnet/ksonnet/releases/download/v${KS_VERSION}/ks_${KS_VERSION}_linux_amd64.tar.gz
tar -xzf ks_${KS_VERSION}_linux_amd64.tar.gz
chmod +x ./ks_${KS_VERSION}_linux_amd64/ks
mv ./ks_${KS_VERSION}_linux_amd64/ks /usr/local/bin/
# Add ks to PATH
PATH=$PATH:`pwd`/ks_${KS_VERSION}_linux_amd64

## Download latest kubeflow release source code
KUBEFLOW_SRC=${DIR}/kubeflow_latest_release
Expand Down
4 changes: 3 additions & 1 deletion test/e2e_test_gke_v2.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ spec:
arguments:
parameters:
- name: image-build-context-gcs-uri
- name: image-builder-image
value: gcr.io/ml-pipeline-test/image-builder:v20181128-0.1.3-rc.1-109-ga5a14dc-e3b0c4
- name: target-image-prefix
- name: test-results-gcs-dir
- name: initialization-test-image-suffix
Expand Down Expand Up @@ -196,7 +198,7 @@ spec:
valueFrom:
path: /outputs/strict-image-name/file
container:
image: gcr.io/ml-pipeline-test/image-builder:v20181128-0.1.3-rc.1-109-ga5a14dc-e3b0c4
image: "{{workflow.parameters.image-builder-image}}"
imagePullPolicy: 'Always'
args: [
"--image-build-context-gcs-uri", "{{inputs.parameters.image-build-context-gcs-uri}}",
Expand Down
19 changes: 18 additions & 1 deletion test/presubmit-tests-with-pipeline-deployment.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ usage()
{
echo "usage: deploy.sh
[--platform the deployment platform. Valid values are: [gcp, minikube]. Default is gcp.]
[--project the gcp project. Default is ml-pipeline-test. Only used when platform is gcp.]
[--workflow_file the file name of the argo workflow to run]
[--test_result_bucket the gcs bucket that argo workflow store the result to. Default is ml-pipeline-test
[--test_result_folder the gcs folder that argo workflow store the result to. Always a relative directory to gs://<gs_bucket>/[PULL_SHA]]
Expand All @@ -30,7 +31,6 @@ usage()
PLATFORM=gcp
PROJECT=ml-pipeline-test
TEST_RESULT_BUCKET=ml-pipeline-test
GCR_IMAGE_BASE_DIR=gcr.io/ml-pipeline-test/${PULL_PULL_SHA}
TIMEOUT_SECONDS=1800
NAMESPACE=kubeflow

Expand All @@ -39,6 +39,9 @@ while [ "$1" != "" ]; do
--platform ) shift
PLATFORM=$1
;;
--project ) shift
PROJECT=$1
;;
--workflow_file ) shift
WORKFLOW_FILE=$1
;;
Expand All @@ -61,6 +64,7 @@ while [ "$1" != "" ]; do
done

# Variables
GCR_IMAGE_BASE_DIR=gcr.io/${PROJECT}/${PULL_PULL_SHA}
Bobgy marked this conversation as resolved.
Show resolved Hide resolved
TEST_RESULTS_GCS_DIR=gs://${TEST_RESULT_BUCKET}/${PULL_PULL_SHA}/${TEST_RESULT_FOLDER}
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" > /dev/null && pwd)"

Expand All @@ -73,10 +77,22 @@ source "${DIR}/deploy-kubeflow.sh"
# Install Argo CLI and test-runner service account
source "${DIR}/install-argo.sh"

IMAGE_BUILDER_ARG=""
# When project is not ml-pipeline-test, VMs need permission to fetch some images in gcr.io/ml-pipeline-test.
Bobgy marked this conversation as resolved.
Show resolved Hide resolved
Bobgy marked this conversation as resolved.
Show resolved Hide resolved
if [ "$PROJECT" != "ml-pipeline-test" ]; then
COPIED_IMAGE_BUILDER_IMAGE=${GCR_IMAGE_BASE_DIR}/image-builder
echo "Copy image builder image to ${COPIED_IMAGE_BUILDER_IMAGE}"
yes | gcloud container images add-tag \
gcr.io/ml-pipeline-test/image-builder:v20181128-0.1.3-rc.1-109-ga5a14dc-e3b0c4 \
${COPIED_IMAGE_BUILDER_IMAGE}:latest
IMAGE_BUILDER_ARG="-p image-builder-image=${COPIED_IMAGE_BUILDER_IMAGE}"
fi

# Build Images
echo "submitting argo workflow to build docker images for commit ${PULL_PULL_SHA}..."
ARGO_WORKFLOW=`argo submit ${DIR}/build_image.yaml \
-p image-build-context-gcs-uri="$remote_code_archive_uri" \
${IMAGE_BUILDER_ARG} \
-p api-image="${GCR_IMAGE_BASE_DIR}/api-server" \
-p frontend-image="${GCR_IMAGE_BASE_DIR}/frontend" \
-p scheduledworkflow-image="${GCR_IMAGE_BASE_DIR}/scheduledworkflow" \
Expand All @@ -95,6 +111,7 @@ source ${DIR}/deploy-pipeline.sh --gcr_image_base_dir ${GCR_IMAGE_BASE_DIR}
echo "submitting argo workflow to run tests for commit ${PULL_PULL_SHA}..."
ARGO_WORKFLOW=`argo submit ${DIR}/${WORKFLOW_FILE} \
-p image-build-context-gcs-uri="$remote_code_archive_uri" \
${IMAGE_BUILDER_ARG} \
-p target-image-prefix="${GCR_IMAGE_BASE_DIR}/" \
-p test-results-gcs-dir="${TEST_RESULTS_GCS_DIR}" \
-p cluster-type="${CLUSTER_TYPE}" \
Expand Down
4 changes: 3 additions & 1 deletion test/sample_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ spec:
arguments:
parameters:
- name: image-build-context-gcs-uri
- name: image-builder-image
value: gcr.io/ml-pipeline-test/image-builder:v20181128-0.1.3-rc.1-109-ga5a14dc-e3b0c4
- name: target-image-prefix
- name: test-results-gcs-dir
- name: sample-tests-image-suffix
Expand Down Expand Up @@ -90,7 +92,7 @@ spec:
valueFrom:
path: /outputs/strict-image-name/file
container:
image: gcr.io/ml-pipeline-test/image-builder:v20181128-0.1.3-rc.1-109-ga5a14dc-e3b0c4
image: "{{workflow.parameters.image-builder-image}}"
imagePullPolicy: 'Always'
args: [
"--image-build-context-gcs-uri", "{{inputs.parameters.image-build-context-gcs-uri}}",
Expand Down
6 changes: 4 additions & 2 deletions test/test-prep.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@

set -x

# activating the service account
gcloud auth activate-service-account --key-file="${GOOGLE_APPLICATION_CREDENTIALS}"
if [[ ! -z "${GOOGLE_APPLICATION_CREDENTIALS}" ]]; then
# activating the service account
gcloud auth activate-service-account --key-file="${GOOGLE_APPLICATION_CREDENTIALS}"
fi
gcloud config set compute/zone us-east1-b
gcloud config set core/project ${PROJECT}

Expand Down