mirror of
https://github.com/codex-storage/bittorrent-benchmarks.git
synced 2025-02-24 16:58:22 +00:00
feat: allow running workflows from locally loaded images under Minikube
This commit is contained in:
parent
4a02e86160
commit
7e07eda3c2
6
Makefile
6
Makefile
@ -38,10 +38,12 @@ image-minikube:
|
|||||||
eval $$(minikube docker-env) && \
|
eval $$(minikube docker-env) && \
|
||||||
docker build -t bittorrent-benchmarks:minikube \
|
docker build -t bittorrent-benchmarks:minikube \
|
||||||
--build-arg BUILD_TYPE="release" \
|
--build-arg BUILD_TYPE="release" \
|
||||||
-f ./docker/bittorrent-benchmarks.Dockerfile .
|
-f ./docker/bittorrent-benchmarks.Dockerfile . && \
|
||||||
|
docker build -t bittorrent-benchmarks-workflows:minikube \
|
||||||
|
-f ./docker/bittorrent-benchmarks-workflows.Dockerfile .
|
||||||
|
|
||||||
# Runs the integration tests in a docker container.
|
# Runs the integration tests in a docker container.
|
||||||
integration-docker:
|
integration-docker: image-test
|
||||||
docker compose -f docker-compose.local.yaml -f docker-compose.ci.yaml down --volumes --remove-orphans
|
docker compose -f docker-compose.local.yaml -f docker-compose.ci.yaml down --volumes --remove-orphans
|
||||||
docker compose -f docker-compose.local.yaml -f docker-compose.ci.yaml up \
|
docker compose -f docker-compose.local.yaml -f docker-compose.ci.yaml up \
|
||||||
--abort-on-container-exit --exit-code-from test-runner
|
--abort-on-container-exit --exit-code-from test-runner
|
||||||
|
@ -15,6 +15,8 @@ spec:
|
|||||||
value: '["100MB", "1GB"]'
|
value: '["100MB", "1GB"]'
|
||||||
- name: constrained__networkSize_seeders
|
- name: constrained__networkSize_seeders
|
||||||
value: "[[2, 1], [8, [1, 2, 4]], [16, [1, 2, 4, 8]], [32, [1, 2, 4, 8, 16]]]"
|
value: "[[2, 1], [8, [1, 2, 4]], [16, [1, 2, 4, 8]], [32, [1, 2, 4, 8, 16]]]"
|
||||||
|
- name: minikubeEnv
|
||||||
|
value: "true"
|
||||||
- name: maxExperimentDuration
|
- name: maxExperimentDuration
|
||||||
value: 144h
|
value: 144h
|
||||||
|
|
||||||
@ -22,11 +24,26 @@ spec:
|
|||||||
- name: benchmark-workflow
|
- name: benchmark-workflow
|
||||||
parallelism: 1
|
parallelism: 1
|
||||||
steps:
|
steps:
|
||||||
|
- - name: define-image-settings
|
||||||
|
template: define-image-settings
|
||||||
|
|
||||||
- - name: generate-group-id
|
- - name: generate-group-id
|
||||||
template: generate-group-id
|
template: generate-group-id
|
||||||
|
arguments:
|
||||||
|
parameters:
|
||||||
|
- name: runnerImage
|
||||||
|
value: "{{steps.define-image-settings.outputs.parameters.image}}"
|
||||||
|
- name: imagePullPolicy
|
||||||
|
value: "{{steps.define-image-settings.outputs.parameters.imagePullPolicy}}"
|
||||||
|
|
||||||
- - name: expand-parameter-matrix
|
- - name: expand-parameter-matrix
|
||||||
template: expand-parameter-matrix
|
template: expand-parameter-matrix
|
||||||
|
arguments:
|
||||||
|
parameters:
|
||||||
|
- name: runnerImage
|
||||||
|
value: "{{steps.define-image-settings.outputs.parameters.image}}"
|
||||||
|
- name: imagePullPolicy
|
||||||
|
value: "{{steps.define-image-settings.outputs.parameters.imagePullPolicy}}"
|
||||||
|
|
||||||
- - name: benchmark-experiment
|
- - name: benchmark-experiment
|
||||||
template: wrapped-benchmark-experiment
|
template: wrapped-benchmark-experiment
|
||||||
@ -46,19 +63,57 @@ spec:
|
|||||||
value: "{{item.seeders}}"
|
value: "{{item.seeders}}"
|
||||||
- name: repetitions
|
- name: repetitions
|
||||||
value: "{{item.repetitions}}"
|
value: "{{item.repetitions}}"
|
||||||
|
- name: runnerImage
|
||||||
|
value: "{{steps.define-image-settings.outputs.parameters.image}}"
|
||||||
|
- name: imagePullPolicy
|
||||||
|
value: "{{steps.define-image-settings.outputs.parameters.imagePullPolicy}}"
|
||||||
|
|
||||||
withParam: "{{steps.expand-parameter-matrix.outputs.result}}"
|
withParam: "{{steps.expand-parameter-matrix.outputs.result}}"
|
||||||
|
|
||||||
- name: expand-parameter-matrix
|
|
||||||
|
- name: define-image-settings
|
||||||
|
# I think this goes to show just how clumsy Argo Workflows is. If I want to select
|
||||||
|
# an image name and a pull policy from a workflow parameter, I need this. Sad.
|
||||||
script:
|
script:
|
||||||
image: codexstorage/bittorrent-benchmarks-workflows:latest
|
image: busybox:latest
|
||||||
|
command: ["sh", "-c"]
|
||||||
|
source: |
|
||||||
|
if [ "{{workflow.parameters.minikubeEnv}}" == "true"]; then
|
||||||
|
echo "codexstorage/bittorrent-benchmarks-workflows:latest" > /tmp/image.txt
|
||||||
|
echo "Always" > /tmp/imagePullPolicy.txt
|
||||||
|
else
|
||||||
|
echo "bittorrent-benchmarks-workflows:minikube" > /tmp/image.txt
|
||||||
|
echo "Never" > /tmp/imagePullPolicy.txt
|
||||||
|
fi
|
||||||
|
outputs:
|
||||||
|
parameters:
|
||||||
|
- name: image
|
||||||
|
valueFrom:
|
||||||
|
path: /tmp/image.txt
|
||||||
|
- name: imagePullPolicy
|
||||||
|
valueFrom:
|
||||||
|
path: /tmp/imagePullPolicy.txt
|
||||||
|
|
||||||
|
- name: expand-parameter-matrix
|
||||||
|
inputs:
|
||||||
|
parameters:
|
||||||
|
- name: runnerImage
|
||||||
|
- name: imagePullPolicy
|
||||||
|
script:
|
||||||
|
image: '{{inputs.parameters.runnerImage}}'
|
||||||
|
imagePullPolicy: '{{inputs.parameters.imagePullPolicy}}'
|
||||||
command: [ "python", "-m", "parameter_expander" ]
|
command: [ "python", "-m", "parameter_expander" ]
|
||||||
args:
|
args:
|
||||||
- "{{ workflow.parameters.json }}"
|
- "{{ workflow.parameters.json }}"
|
||||||
|
|
||||||
- name: generate-group-id
|
- name: generate-group-id
|
||||||
|
inputs:
|
||||||
|
parameters:
|
||||||
|
- name: runnerImage
|
||||||
|
- name: imagePullPolicy
|
||||||
script:
|
script:
|
||||||
image: codexstorage/bittorrent-benchmarks-workflows:latest
|
image: '{{inputs.parameters.runnerImage}}'
|
||||||
|
imagePullPolicy: '{{inputs.parameters.imagePullPolicy}}'
|
||||||
command: [ "/bin/bash" ]
|
command: [ "/bin/bash" ]
|
||||||
source: |
|
source: |
|
||||||
echo "$(date +%s)"
|
echo "$(date +%s)"
|
||||||
@ -69,6 +124,8 @@ spec:
|
|||||||
- name: wrapped-benchmark-experiment
|
- name: wrapped-benchmark-experiment
|
||||||
inputs:
|
inputs:
|
||||||
parameters:
|
parameters:
|
||||||
|
- name: runnerImage
|
||||||
|
- name: imagePullPolicy
|
||||||
- name: groupId
|
- name: groupId
|
||||||
- name: runId
|
- name: runId
|
||||||
- name: fileSize
|
- name: fileSize
|
||||||
@ -102,10 +159,17 @@ spec:
|
|||||||
value: "{{inputs.parameters.seeders}}"
|
value: "{{inputs.parameters.seeders}}"
|
||||||
- name: repetitions
|
- name: repetitions
|
||||||
value: "{{inputs.parameters.repetitions}}"
|
value: "{{inputs.parameters.repetitions}}"
|
||||||
|
- name: runnerImage
|
||||||
|
value: "{{inputs.parameters.runnerImage}}"
|
||||||
|
- name: imagePullPolicy
|
||||||
|
value: "{{inputs.parameters.imagePullPolicy}}"
|
||||||
|
|
||||||
|
|
||||||
- name: benchmark-experiment
|
- name: benchmark-experiment
|
||||||
inputs:
|
inputs:
|
||||||
parameters:
|
parameters:
|
||||||
|
- name: runnerImage
|
||||||
|
- name: imagePullPolicy
|
||||||
- name: groupId
|
- name: groupId
|
||||||
- name: runId
|
- name: runId
|
||||||
- name: fileSize
|
- name: fileSize
|
||||||
@ -119,6 +183,10 @@ spec:
|
|||||||
template: deploy-experiment
|
template: deploy-experiment
|
||||||
arguments:
|
arguments:
|
||||||
parameters:
|
parameters:
|
||||||
|
- name: runnerImage
|
||||||
|
value: "{{inputs.parameters.runnerImage}}"
|
||||||
|
- name: imagePullPolicy
|
||||||
|
value: "{{inputs.parameters.imagePullPolicy}}"
|
||||||
- name: groupId
|
- name: groupId
|
||||||
value: "{{inputs.parameters.groupId}}"
|
value: "{{inputs.parameters.groupId}}"
|
||||||
- name: runId
|
- name: runId
|
||||||
@ -138,6 +206,10 @@ spec:
|
|||||||
template: wait-for-experiment
|
template: wait-for-experiment
|
||||||
arguments:
|
arguments:
|
||||||
parameters:
|
parameters:
|
||||||
|
- name: runnerImage
|
||||||
|
value: "{{inputs.parameters.runnerImage}}"
|
||||||
|
- name: imagePullPolicy
|
||||||
|
value: "{{inputs.parameters.imagePullPolicy}}"
|
||||||
- name: groupId
|
- name: groupId
|
||||||
value: "{{inputs.parameters.groupId}}"
|
value: "{{inputs.parameters.groupId}}"
|
||||||
- name: runId
|
- name: runId
|
||||||
@ -153,9 +225,12 @@ spec:
|
|||||||
- name: networkSize
|
- name: networkSize
|
||||||
- name: seeders
|
- name: seeders
|
||||||
- name: repetitions
|
- name: repetitions
|
||||||
|
- name: runnerImage
|
||||||
|
- name: imagePullPolicy
|
||||||
|
|
||||||
script:
|
script:
|
||||||
image: codexstorage/bittorrent-benchmarks-workflows:latest
|
image: '{{inputs.parameters.runnerImage}}'
|
||||||
|
imagePullPolicy: '{{inputs.parameters.imagePullPolicy}}'
|
||||||
command: [ "/bin/bash" ]
|
command: [ "/bin/bash" ]
|
||||||
source: |
|
source: |
|
||||||
helm install e{{inputs.parameters.runId}} ./k8s/charts/deluge\
|
helm install e{{inputs.parameters.runId}} ./k8s/charts/deluge\
|
||||||
@ -165,15 +240,19 @@ spec:
|
|||||||
--set experiment.fileSize={{inputs.parameters.fileSize}}\
|
--set experiment.fileSize={{inputs.parameters.fileSize}}\
|
||||||
--set experiment.networkSize={{inputs.parameters.networkSize}}\
|
--set experiment.networkSize={{inputs.parameters.networkSize}}\
|
||||||
--set experiment.seeders={{inputs.parameters.seeders}}\
|
--set experiment.seeders={{inputs.parameters.seeders}}\
|
||||||
--set experiment.seederSets={{inputs.parameters.seederSets}}
|
--set experiment.seederSets={{inputs.parameters.seederSets}}\
|
||||||
|
--set deployment.minikubeEnv={{workflow.parameters.minikubeEnv}}
|
||||||
|
|
||||||
- name: wait-for-experiment
|
- name: wait-for-experiment
|
||||||
inputs:
|
inputs:
|
||||||
parameters:
|
parameters:
|
||||||
|
- name: runnerImage
|
||||||
|
- name: imagePullPolicy
|
||||||
- name: groupId
|
- name: groupId
|
||||||
- name: runId
|
- name: runId
|
||||||
script:
|
script:
|
||||||
image: codexstorage/bittorrent-benchmarks-workflows:latest
|
image: '{{inputs.parameters.runnerImage}}'
|
||||||
|
imagePullPolicy: '{{inputs.parameters.imagePullPolicy}}'
|
||||||
command: [ "/bin/bash" ]
|
command: [ "/bin/bash" ]
|
||||||
source: |
|
source: |
|
||||||
./docker/bin/kubectl-wait-job\
|
./docker/bin/kubectl-wait-job\
|
||||||
@ -186,9 +265,12 @@ spec:
|
|||||||
- name: cleanup
|
- name: cleanup
|
||||||
inputs:
|
inputs:
|
||||||
parameters:
|
parameters:
|
||||||
|
- name: runnerImage
|
||||||
|
- name: imagePullPolicy
|
||||||
- name: runId
|
- name: runId
|
||||||
script:
|
script:
|
||||||
image: codexstorage/bittorrent-benchmarks-workflows:latest
|
image: '{{inputs.parameters.runnerImage}}'
|
||||||
|
imagePullPolicy: '{{inputs.parameters.imagePullPolicy}}'
|
||||||
command: [ "/bin/bash" ]
|
command: [ "/bin/bash" ]
|
||||||
source: |
|
source: |
|
||||||
helm uninstall e{{inputs.parameters.runId}} -n codex-benchmarks
|
helm uninstall e{{inputs.parameters.runId}} -n codex-benchmarks
|
||||||
|
Loading…
x
Reference in New Issue
Block a user