Skip to content

Commit

Permalink
Add go test action (#34)
Browse files Browse the repository at this point in the history
* Add go test action

* Refactor ci actions

* Add digital ocean deploy action

* Test deploy script

* Deploy using ssh

* Add production docker-compose & trigger deploy action manually
  • Loading branch information
kysre authored Feb 11, 2024
1 parent 7cbc882 commit 5cfd4c1
Show file tree
Hide file tree
Showing 5 changed files with 205 additions and 6 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
name: main-ci
name: build

on:
push:
branches:
- 'main'

jobs:
leader:
Leader:
runs-on: ubuntu-latest
steps:
-
Expand All @@ -29,7 +29,7 @@ jobs:
push: true
tags: kysre/turtlemq:leader-latest

datanode:
Datanode:
runs-on: ubuntu-latest
steps:
-
Expand Down
23 changes: 23 additions & 0 deletions .github/workflows/deploy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: deploy

on:
workflow_dispatch

jobs:
deploy:
runs-on: ubuntu-latest
name: Deploy
steps:
- name: executing remote ssh commands using ssh key
uses: appleboy/[email protected]
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_KEY }}
script: |
cd /usr/src/app/TurtleMQ
docker pull kysre/turtlemq:datanode-latest
docker pull kysre/turtlemq:leader-latest
docker compose -f docker-compose.yaml down
git pull
docker compose -f docker-compose.yaml up -d
6 changes: 3 additions & 3 deletions .github/workflows/dev.build.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: dev-ci
name: build-dev

on:
push:
Expand All @@ -7,7 +7,7 @@ on:
- '!main'

jobs:
leader:
Leader:
runs-on: ubuntu-latest
steps:
-
Expand Down Expand Up @@ -35,7 +35,7 @@ jobs:
push: true
tags: kysre/turtlemq:leader-${{ steps.extract_branch.outputs.branch }}

datanode:
Datanode:
runs-on: ubuntu-latest
steps:
-
Expand Down
34 changes: 34 additions & 0 deletions .github/workflows/go_test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Test
on: [push]

jobs:
Go:
name: Leader Test
runs-on: ubuntu-latest
steps:

- name: Download Go
uses: actions/setup-go@v2
with:
go-version: 1.21
id: go

- name: Check out code into the Go module directory
uses: actions/checkout@v2

- name: Get dependencies
working-directory: ./leader
run: |
go get -v -t -d ./...
- name: Build
env:
GOPROXY: "https://proxy.golang.org"
working-directory: ./leader
run: go build -o $@ leader ./cmd/$@

- name: Test
env:
GOPROXY: "https://proxy.golang.org"
working-directory: ./leader
run: go test -v ./...
142 changes: 142 additions & 0 deletions docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
version: '3'
services:
prometheus:
image: prom/prometheus
container_name: prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
restart: unless-stopped
volumes:
- ./prometheus:/etc/prometheus
- prom_data:/prometheus

grafana:
image: grafana/grafana
container_name: grafana
ports:
- '3000:3000'
restart: unless-stopped
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=grafana
- GF_LOG_LEVEL=error
volumes:
- ./grafana:/etc/grafana/provisioning/datasources
- grafana_data:/var/lib/grafana

leader_0:
image: kysre/turtlemq:leader-${LEADER_IMAGE_TAG}
restart: unless-stopped
depends_on:
- prometheus
environment:
- LEADER_LOGGING_LEVEL=info
- LEADER_LEADER_DATANODEREMAININGCHECKPERIOD=2
- LEADER_LEADER_DATANODEPARTITIONCOUNT=100
- LEADER_LEADER_REPLICAHOST=leader_1
ports:
- '8000:8888'

leader_1:
image: kysre/turtlemq:leader-${LEADER_IMAGE_TAG}
restart: unless-stopped
depends_on:
- prometheus
- leader_0
environment:
- LEADER_LOGGING_LEVEL=info
- LEADER_LEADER_DATANODEREMAININGCHECKPERIOD=2
- LEADER_LEADER_DATANODEPARTITIONCOUNT=100
- LEADER_LEADER_REPLICAHOST=leader_0
ports:
- '8001:8888'

datanode_0:
image: kysre/turtlemq:datanode-${DATANODE_IMAGE_TAG}
restart: unless-stopped
depends_on:
- leader_0
- leader_1
environment:
- HOME_PATH=/var/lib/turtlemq/data/
- DATANODE_NAME=datanode_0
- DATANODE_PORT=8000
- LEADER_HOST=leader_0
- LEADER_PORT=8888
- PULL_TIMEOUT=10
- PENDING_TIMEOUT=15
- CLEANER_PERIOD=3
- PARTITIONS_COUNT=100
volumes:
- datanode_0_vol:/var/lib/turtlemq/data/

datanode_1:
image: kysre/turtlemq:datanode-${DATANODE_IMAGE_TAG}
restart: unless-stopped
depends_on:
- leader_0
- leader_1
environment:
- HOME_PATH=/var/lib/turtlemq/data/
- DATANODE_NAME=datanode_1
- DATANODE_PORT=8000
- LEADER_HOST=leader_0
- LEADER_PORT=8888
- PULL_TIMEOUT=10
- PENDING_TIMEOUT=15
- CLEANER_PERIOD=3
- PARTITIONS_COUNT=100
volumes:
- datanode_1_vol:/var/lib/turtlemq/data/

datanode_2:
image: kysre/turtlemq:datanode-${DATANODE_IMAGE_TAG}
restart: unless-stopped
depends_on:
- leader_0
- leader_1
environment:
- HOME_PATH=/var/lib/turtlemq/data/
- DATANODE_NAME=datanode_2
- DATANODE_PORT=8000
- LEADER_HOST=leader_0
- LEADER_PORT=8888
- PULL_TIMEOUT=10
- PENDING_TIMEOUT=15
- CLEANER_PERIOD=3
- PARTITIONS_COUNT=100
volumes:
- datanode_2_vol:/var/lib/turtlemq/data/

datanode_3:
image: kysre/turtlemq:datanode-${DATANODE_IMAGE_TAG}
restart: unless-stopped
depends_on:
- leader_0
- leader_1
environment:
- HOME_PATH=/var/lib/turtlemq/data/
- DATANODE_NAME=datanode_3
- DATANODE_PORT=8000
- LEADER_HOST=leader_0
- LEADER_PORT=8888
- PULL_TIMEOUT=10
- PENDING_TIMEOUT=15
- CLEANER_PERIOD=3
- PARTITIONS_COUNT=100
volumes:
- datanode_3_vol:/var/lib/turtlemq/data/

volumes:
prom_data:
driver: local
grafana_data:
driver: local
datanode_0_vol:
driver: local
datanode_1_vol:
driver: local
datanode_2_vol:
driver: local
datanode_3_vol:
driver: local

0 comments on commit 5cfd4c1

Please sign in to comment.