Skip to content

Commit

Permalink
create new build for distributed locust
Browse files Browse the repository at this point in the history
  • Loading branch information
tarunmenon95 committed Jul 12, 2024
1 parent dbb4857 commit 5260df9
Show file tree
Hide file tree
Showing 5 changed files with 132 additions and 69 deletions.
57 changes: 57 additions & 0 deletions .github/workflows/locust-distributed.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: locust-distributed

on:
push:
branches:
- master
- feature/*
paths:
- 'locust-distributed/**'
- .github/workflows/locust-distributed.yaml


env:
IMAGE_NAME: locust

jobs:
build-and-publish-latest:
runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v2

# - name: Build image
# run: docker build --tag $IMAGE_NAME --label "runnumber=${GITHUB_RUN_ID}" locust/

# - name: Log into registry
# run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin

# - name: Push image
# run: |
# IMAGE_ID=ghcr.io/${{ github.repository_owner }}/$IMAGE_NAME
# IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]')
# docker tag $IMAGE_NAME $IMAGE_ID:latest
# docker push $IMAGE_ID:latest

steps:
- name: Check out the repo
uses: actions/checkout@v3

- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v3.x

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to GitHub Container Repository
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push Container Image to GitHub Container Repository
uses: docker/build-push-action@v6
with:
context: ./locust
push: true
tags: ghcr.io/base2services/locust-distributed:snapshot_${{env.GITHUB_SHA_SHORT}}
56 changes: 15 additions & 41 deletions .github/workflows/locust.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,56 +2,30 @@ name: locust

on:
push:
branches:
- master
- feature/*
branches: [ master ]
paths:
- 'locust/**'
- .github/workflows/locust.yaml


env:
IMAGE_NAME: locust

jobs:
build-and-publish-latest:
runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v2
if: github.ref == 'refs/heads/master' # Running this job only for master branch

steps:
- uses: actions/checkout@v2

# - name: Build image
# run: docker build --tag $IMAGE_NAME --label "runnumber=${GITHUB_RUN_ID}" locust/
- name: Build image
run: docker build --tag $IMAGE_NAME --label "runnumber=${GITHUB_RUN_ID}" locust/

# - name: Log into registry
# run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
- name: Log into registry
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin

# - name: Push image
# run: |
# IMAGE_ID=ghcr.io/${{ github.repository_owner }}/$IMAGE_NAME
# IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]')
# docker tag $IMAGE_NAME $IMAGE_ID:latest
# docker push $IMAGE_ID:latest

steps:
- name: Check out the repo
uses: actions/checkout@v3

- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v3.x

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to GitHub Container Repository
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push Container Image to GitHub Container Repository
uses: docker/build-push-action@v6
with:
context: ./locust
push: true
tags: ghcr.io/base2services/locust:snapshot_${{env.GITHUB_REF_SLUG}}
- name: Push image
run: |
IMAGE_ID=ghcr.io/${{ github.repository_owner }}/$IMAGE_NAME
IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]')
docker tag $IMAGE_NAME $IMAGE_ID:latest
docker push $IMAGE_ID:latest
14 changes: 14 additions & 0 deletions locust-distributed/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
FROM locustio/locust:2.23.1

LABEL org.opencontainers.image.source=https://github.com/base2Services/build-containers

USER root
RUN pip install awscli faker

WORKDIR /locust

ENTRYPOINT [ "/entrypoint" ]

CMD [ "locust" ]

COPY docker-entrypoint.sh /entrypoint
36 changes: 36 additions & 0 deletions locust-distributed/docker-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#!/bin/sh

set -ex

aws s3 cp s3://${LOCUST_S3_PATH} /locust/ --recursive --region ${AWS_REGION}

LOCUST_MODE=${LOCUST_MODE:-standalone}
LOCUST_MASTER_BIND_PORT=${LOCUST_MASTER_BIND_PORT:-5557}
LOCUST_FILE=${LOCUST_FILE:-locustfile.py}
LOCUST_LOG_LEVEL=${LOCUST_LOG_LEVEL:-INFO}

LOCUST_OPTS="-f ${LOCUST_FILE}"

if [ -z ${HOST_URL+x} ] ; then
echo "No value set for (HOST_URL), falling back to host value in the locust class"
else
echo "(HOST_URL) set to ${HOST_URL}"
LOCUST_OPTS="--host=${HOST_URL} $LOCUST_OPTS"
fi

case `echo ${LOCUST_MODE} | tr 'a-z' 'A-Z'` in
"MASTER")
LOCUST_OPTS="--master --master-bind-port=${LOCUST_MASTER_BIND_PORT} $LOCUST_OPTS"
;;

"SLAVE")
LOCUST_OPTS="--worker --master-host=${LOCUST_MASTER} --master-port=${LOCUST_MASTER_BIND_PORT} $LOCUST_OPTS"
echo "${LOCUST_OPTS}"
if [ -z ${LOCUST_MASTER+x} ] ; then
echo "You need to set LOCUST_MASTER."
exit 1
fi
;;
esac

exec "$@" ${LOCUST_OPTS}
38 changes: 10 additions & 28 deletions locust/docker-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -1,35 +1,17 @@
#!/bin/sh

set -ex
set -e

aws s3 cp s3://${LOCUST_S3_PATH} /locust/ --recursive --region ${AWS_REGION}

LOCUST_MODE=${LOCUST_MODE:-standalone}
LOCUST_MASTER_BIND_PORT=${LOCUST_MASTER_BIND_PORT:-5557}
LOCUST_FILE=${LOCUST_FILE:-locustfile.py}
LOCUST_LOG_LEVEL=${LOCUST_LOG_LEVEL:-INFO}

LOCUST_OPTS="-f ${LOCUST_FILE}"

if [ -z ${HOST_URL+x} ] ; then
echo "No value set for (HOST_URL), falling back to host value in the locust class"
else
echo "(HOST_URL) set to ${HOST_URL}"
LOCUST_OPTS="--host=${HOST_URL} $LOCUST_OPTS"
if [ "x" != "${LOCUST_S3_PATH}x" ] ; then
aws s3 cp s3://${LOCUST_S3_PATH}/${LOCUST_LOCUSTFILE} . --region ${AWS_REGION}
chmod +x ${LOCUST_LOCUSTFILE}
fi

case `echo ${LOCUST_MODE} | tr 'a-z' 'A-Z'` in
"MASTER")
LOCUST_OPTS="--master --master-bind-port=${LOCUST_MASTER_BIND_PORT} $LOCUST_OPTS"
;;

"SLAVE")
LOCUST_OPTS="--worker --master-host=${LOCUST_MASTER} --master-port=${LOCUST_MASTER_BIND_PORT} $LOCUST_OPTS"
if [ -z ${LOCUST_MASTER+x} ] ; then
echo "You need to set LOCUST_MASTER."
if [ ${1} = "locust" ] ; then
echo "Starting locust......."
if [ -z ${LOCUST_HOST+x} ] ; then
echo "You need to set the URL of the host to be tested (LOCUST_HOST)."
exit 1
fi
;;
esac

exec "$@" ${LOCUST_OPTS}
fi
exec "$@"

0 comments on commit 5260df9

Please sign in to comment.