Merge pull request #1390 from gofiber/dependabot/go_modules/coherence⦠#919
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | |
push: | |
branches: | |
- master | |
- main | |
paths: | |
- "**" | |
- "!**.md" | |
pull_request: | |
paths: | |
- "**" | |
- "!**.md" | |
permissions: | |
deployments: write | |
contents: write | |
name: Benchmark | |
jobs: | |
Compare: | |
runs-on: ubuntu-latest | |
services: | |
arangodb: | |
image: 'arangodb:latest' | |
env: | |
ARANGO_NO_AUTH: 1 | |
ports: | |
- '8529:8529' | |
dynamodb: | |
image: 'amazon/dynamodb-local:latest' | |
ports: | |
- '8000:8000' | |
memcached: | |
image: 'memcached:latest' | |
ports: | |
- '11211:11211' | |
mongo: | |
image: 'mongo:latest' | |
ports: | |
- '27017:27017' | |
mssql: | |
image: 'mcmoe/mssqldocker:latest' | |
ports: | |
- '1433:1433' | |
env: | |
ACCEPT_EULA: Y | |
SA_PASSWORD: MsSql!1234 | |
MSSQL_DB: master | |
MSSQL_USER: sa | |
MSSQL_PASSWORD: MsSql!1234 | |
options: >- | |
--health-cmd "/opt/mssql-tools/bin/sqlcmd -U sa -P $SA_PASSWORD -Q 'select 1' -b -o /dev/null" | |
--health-interval 1s | |
--health-timeout 30s | |
--health-start-period 10s | |
--health-retries 20 | |
mysql: | |
image: 'mysql:latest' | |
env: | |
MYSQL_DATABASE: fiber | |
MYSQL_USER: username | |
MYSQL_PASSWORD: password | |
MYSQL_ROOT_PASSWORD: password | |
ports: | |
- '3306:3306' | |
options: >- | |
--health-cmd "mysqladmin ping" --health-interval 10s --health-timeout | |
5s --health-retries 5 | |
postgres: | |
image: 'postgres:latest' | |
ports: | |
- '5432:5432' | |
env: | |
POSTGRES_DB: fiber | |
POSTGRES_USER: username | |
POSTGRES_PASSWORD: "pass#w%rd" | |
options: >- | |
--health-cmd pg_isready --health-interval 10s --health-timeout 5s | |
--health-retries 5 | |
steps: | |
- name: Fetch Repository | |
uses: actions/checkout@v4 | |
- name: Install Go | |
uses: actions/setup-go@v5 | |
with: | |
# NOTE: Keep this in sync with the version from go.mod | |
go-version: "1.20.x" | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '18' | |
- name: Install Azurite | |
run: | | |
docker run -d -p 10000:10000 mcr.microsoft.com/azure-storage/azurite azurite-blob --blobHost 0.0.0.0 --blobPort 10000 | |
- name: Install Cloudflare Worker | |
run : | | |
.github/scripts/initialize-wrangler.sh | |
cd cloudflarekv && npx wrangler dev & | |
npx wait-on tcp:8787 | |
- name: Install Coherence | |
run: | | |
docker run -d -p 1408:1408 -p 30000:30000 ghcr.io/oracle/coherence-ce:22.06.5 | |
sleep 30 | |
- name: Install couchbase | |
run: | | |
docker run --name couchbase -d -p 8091-8097:8091-8097 -p 9123:9123 -p 11207:11207 -p 11210:11210 -p 11280:11280 -p 18091-18097:18091-18097 couchbase:enterprise-7.1.1 | |
sleep 10 | |
docker exec --tty couchbase couchbase-cli cluster-init -c localhost:8091 --cluster-username admin --cluster-password 123456 --cluster-ramsize 256 --services data | |
sleep 10 | |
docker exec --tty couchbase couchbase-cli bucket-create -c localhost:8091 --username admin --password 123456 --bucket fiber_storage --bucket-type couchbase --bucket-ramsize 100 --enable-flush 1 | |
- name: Install etcd | |
run: | | |
docker run -d --name Etcd-server \ | |
--publish 2379:2379 \ | |
--publish 2380:2380 \ | |
--env ALLOW_NONE_AUTHENTICATION=yes \ | |
--env ETCD_ADVERTISE_CLIENT_URLS=http://etcd-server:2379 \ | |
bitnami/etcd:latest | |
- name: Install MinIO | |
run: | | |
docker run -d --restart always -p 9000:9000 --name storage-minio -e MINIO_ROOT_USER='minio-user' -e MINIO_ROOT_PASSWORD='minio-password' minio/minio server /data | |
- name: Install ScyllaDb | |
run: | | |
docker run --name scylladb -p 9042:9042 -p 19042:19042 -p 9160:9160 -p 7000:7000 -p 7001:7001 -p 7199:7199 -p 9180:9180 -d scylladb/scylla:latest --broadcast-address 127.0.0.1 --listen-address 0.0.0.0 --broadcast-rpc-address 127.0.0.1 | |
sleep 15 # Wait for ScyllaDb to initialize | |
- name: Setup Redis | |
uses: shogo82148/actions-setup-redis@v1 | |
with: | |
redis-version: '7.x' | |
auto-start: 'false' | |
- name: Run Redis | |
run: | | |
redis-server --port 6379 & | |
- name: Run NATS | |
run: | | |
./.github/scripts/gen-test-certs.sh | |
docker run -d --name nats-jetstream -p 4443:4443 -v ./nats/testdata:/testdata -v ./tls:/tls nats:latest --jetstream -c /testdata/nats-tls.conf | |
sleep 2 | |
- name: Run Benchmarks | |
run: | | |
set -o pipefail | |
for d in */ ; do | |
[[ $d == "tls/" ]] && continue | |
[[ $d == "node_modules/" ]] && continue | |
cd "$d" | |
echo "Bench dir: $d" | |
go test ./... -benchmem -run=^$ -bench . | tee -a ../output.txt | |
cd .. | |
done | |
shell: bash | |
env: | |
MSSQL_DATABASE: master | |
MSSQL_USERNAME: sa | |
MSSQL_PASSWORD: MsSql!1234 | |
MYSQL_USERNAME: username | |
MYSQL_PASSWORD: password | |
MYSQL_DATABASE: fiber | |
POSTGRES_DATABASE: fiber | |
POSTGRES_USERNAME: username | |
POSTGRES_PASSWORD: "pass#w%rd" | |
- name: Get Previous Benchmark Results | |
uses: actions/cache@v4 | |
with: | |
path: ./cache | |
key: ${{ runner.os }}-benchmark | |
- name: Save Benchmark Results | |
uses: benchmark-action/[email protected] | |
with: | |
tool: "go" | |
output-file-path: output.txt | |
github-token: ${{ secrets.BENCHMARK_TOKEN }} | |
benchmark-data-dir-path: "benchmarks" | |
alert-threshold: "300%" | |
fail-on-alert: true | |
comment-on-alert: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }} | |
#summary-always: ${{ github.event_name != 'push' && github.event_name != 'workflow_dispatch' }} | |
auto-push: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }} | |
save-data-file: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }} |