Skip to content

Update continuous-benchmarking-teardown.yml #133

Update continuous-benchmarking-teardown.yml

Update continuous-benchmarking-teardown.yml #133

Workflow file for this run

name: STeLLAR Test Pipeline
on:
workflow_dispatch:
push:
# branches: [ main ]
# pull_request:
# branches: [ main ]
schedule:
- cron: '0 8 * * 6'
jobs:
check_syntax:
name: Check syntax
runs-on: ubuntu-22.04
env:
working-directory: ./src
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v4
- name: Check syntax
uses: golangci/golangci-lint-action@v3
with:
working-directory: ${{ env.working-directory }}
args: --timeout 5m --skip-dirs raw-code
skip-pkg-cache: true
skip-build-cache: true
build_client:
name: Build framework
runs-on: ubuntu-22.04
env:
working-directory: ./src
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v4
- name: Build client binary
working-directory: ${{ env.working-directory }}
run: |
docker build -t stellar .
docker create --name temp stellar /bin/bash
- name: Package client artifact
run: |
mkdir -p "setup/deployment/raw-code"
docker cp temp:/app/stellar ./main
docker cp temp:/app/setup/deployment/raw-code/functions setup/deployment/raw-code/functions
tar -czvf build.tar ./main ./setup/deployment/raw-code/functions
- name: Upload client artifact
uses: actions/upload-artifact@v3
with:
name: STeLLAR-build
path: build.tar
retention-days: 1
unit_tests:
name: Unit tests
strategy:
matrix:
path:
[
./setup/test/...,
./benchmarking/...,
./util/...,
./setup/building/test/...,
./setup/code-generation/test/...,
./setup/deployment/packaging/test/...,
]
needs: [ build_client ]
runs-on: ubuntu-22.04
env:
working-directory: ./src
DOCKER_HUB_USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }}
DOCKER_HUB_ACCESS_TOKEN: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v4
- name: Configure AWS credentials using EASE lab account
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
aws-region: us-west-1
- id: auth
name: Configure GCR credentials
uses: google-github-actions/auth@v1
with:
credentials_json: ${{ secrets.GCR_CREDENTIALS }}
- name: Set up gcloud
uses: google-github-actions/setup-gcloud@v1
with:
version: ">= 363.0.0"
- name: Download client artifact
uses: actions/download-artifact@v3
with:
name: STeLLAR-build
- name: Untar client build
working-directory: ${{ env.working-directory }}
run: tar --strip-components=1 -xvf ../build.tar -C .
- name: Unit tests
working-directory: ${{ env.working-directory }}
run: go test -short -v ${{ matrix.path }}
integration_tests:
name: Integration tests
needs: [ build_client ]
runs-on: ubuntu-22.04
env:
working-directory: ./src
DOCKER_HUB_USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }}
DOCKER_HUB_ACCESS_TOKEN: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v4
- name: Configure AWS credentials using EASE lab account
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
aws-region: us-west-1
- id: auth
name: Configure GCR credentials
uses: google-github-actions/auth@v1
with:
credentials_json: ${{ secrets.GCR_CREDENTIALS }}
- name: Set up gcloud
uses: google-github-actions/setup-gcloud@v1
with:
version: ">= 363.0.0"
- name: Set up Alibaba Cloud credentials
run: |
mkdir $HOME/.aliyuncli
echo "[default]" > $HOME/.aliyuncli/credentials
echo "aliyun_access_key_secret = $ALIYUN_ACCESS_KEY_SECRET" >> $HOME/.aliyuncli/credentials
echo "aliyun_access_key_id = $ALIYUN_ACCESS_KEY_ID" >> $HOME/.aliyuncli/credentials
echo "aliyun_account_id = $ALIYUN_ACCOUNT_ID" >> $HOME/.aliyuncli/credentials
echo "" >> $HOME/.aliyuncli/credentials
env:
ALIYUN_ACCESS_KEY_SECRET: ${{ secrets.ALIYUN_ACCESS_KEY_SECRET }}
ALIYUN_ACCESS_KEY_ID: ${{ secrets.ALIYUN_ACCESS_KEY_ID }}
ALIYUN_ACCOUNT_ID: ${{ secrets.ALIYUN_ACCOUNT_ID }}
- name: Set up Node.js 18
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install Serverless framework and related plugins
# functions-have-names appears to be a dependency of serverless-azure-functions
run: npm install -g [email protected] serverless-azure-functions functions-have-names serverless-aliyun-function-compute
- name: Install Cloudflare Wrangler
run: npm install -g wrangler
- name: Download client artifact
uses: actions/download-artifact@v3
with:
name: STeLLAR-build
- name: Untar client build
working-directory: ${{ env.working-directory }}
run: tar --strip-components=1 -xvf ../build.tar -C .
- name: Prepare benchmarking functions
run: |
mkdir -p "setup/deployment/raw-code"
cp -R ./src/setup/deployment/raw-code/functions setup/deployment/raw-code/functions
mkdir -p "./src/latency-samples"
- name: Integration Tests
working-directory: ${{ env.working-directory }}
run: go test -short -v ./setup/integration-test/... -timeout 30m
e2e_azure:
name: Azure e2e test
needs: [ build_client, integration_tests ]
runs-on: ubuntu-22.04
env:
working-directory: ./src
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v4
- name: Set up Node.js 18
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install Serverless framework and related plugins
# functions-have-names appears to be a dependency of serverless-azure-functions
run: npm install -g [email protected] serverless-azure-functions functions-have-names
- name: Download client artifact
uses: actions/download-artifact@v3
with:
name: STeLLAR-build
- name: Untar client build
working-directory: ${{ env.working-directory }}
run: tar --strip-components=1 -xvf ../build.tar -C .
- name: Prepare benchmarking functions
run: |
mkdir -p "setup/deployment/raw-code"
cp -R ./src/setup/deployment/raw-code/functions setup/deployment/raw-code/functions
mkdir -p "./src/latency-samples"
- name: Azure end-to-end test for Python
working-directory: ${{ env.working-directory }}
run: ./main --o latency-samples --c ../experiments/tests/azure/hellopy.json --s true
env:
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
e2e_aws:
name: AWS e2e test
needs: [ build_client, integration_tests ]
runs-on: ubuntu-22.04
env:
working-directory: ./src
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v4
- name: Configure AWS credentials using EASE lab account
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
aws-region: us-west-1
- name: Set up Node.js 18
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install serverless framework
run: npm install -g [email protected]
- name: Download client artifact
uses: actions/download-artifact@v3
with:
name: STeLLAR-build
- name: Untar client build
working-directory: ${{ env.working-directory }}
run: tar --strip-components=1 -xvf ../build.tar -C .
- name: Prepare benchmarking functions
run: |
mkdir -p "setup/deployment/raw-code"
cp -R ./src/setup/deployment/raw-code/functions setup/deployment/raw-code/functions
mkdir -p "./src/latency-samples"
- name: AWS end-to-end test for Go
working-directory: ${{ env.working-directory }}
run: ./main --o latency-samples --c ../experiments/tests/aws/hellogo.json --s true
e2e_gcr:
name: GCR e2e test
needs: [ build_client, integration_tests ]
runs-on: ubuntu-22.04
env:
working-directory: ./src
DOCKER_HUB_USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }}
DOCKER_HUB_ACCESS_TOKEN: ${{secrets.DOCKER_HUB_ACCESS_TOKEN}}
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v4
- id: auth
name: Configure GCR credentials
uses: google-github-actions/auth@v1
with:
credentials_json: ${{ secrets.GCR_CREDENTIALS }}
- name: Set up gcloud
uses: google-github-actions/setup-gcloud@v1
with:
version: ">= 363.0.0"
- name: Set up Node.js 18
uses: actions/setup-node@v3
with:
node-version: 18
- name: Download client artifact
uses: actions/download-artifact@v3
with:
name: STeLLAR-build
- name: Untar client build
working-directory: ${{ env.working-directory }}
run: tar --strip-components=1 -xvf ../build.tar -C .
- name: Prepare benchmarking functions
run: |
mkdir -p 'setup/deployment/raw-code'
cp -R ./src/setup/deployment/raw-code/functions setup/deployment/raw-code/functions
mkdir -p './src/latency-samples'
- name: GCR end-to-end test for Python
working-directory: ${{ env.working-directory }}
run: ./main --o latency-samples --c ../experiments/tests/gcr/hellopy.json --s true
- name: GCR end-to-end test for Go
working-directory: ${{ env.working-directory }}
run: ./main --o latency-samples --c ../experiments/tests/gcr/hellogo.json --s true
- name: GCR end-to-end test for Java
working-directory: ${{ env.working-directory }}
run: ./main --o latency-samples --c ../experiments/tests/gcr/hellogo.json --s true
e2e_cloudflare:
name: Cloudflare e2e test
needs: [ build_client, integration_tests ]
runs-on: ubuntu-22.04
env:
working-directory: ./src
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v4
- name: Set up Node.js 18
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install Cloudflare Wrangler
run: npm install -g wrangler
- name: Download client artifact
uses: actions/download-artifact@v3
with:
name: STeLLAR-build
- name: Untar client build
working-directory: ${{ env.working-directory }}
run: tar --strip-components=1 -xvf ../build.tar -C .
- name: Prepare benchmarking functions
run: |
mkdir -p 'setup/deployment/raw-code'
cp -R ./src/setup/deployment/raw-code/functions setup/deployment/raw-code/functions
mkdir -p './src/latency-samples'
- name: Cloudflare end-to-end test for Python
working-directory: ${{ env.working-directory }}
run: ./main --o latency-samples --c ../experiments/tests/cloudflare/hellopy.json --s true