diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..e8796d6 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,54 @@ +name: Build + +on: + workflow_dispatch: + push: + branches: + - main + - beta + - dev + - master + +env: + IMAGE_NAME: ghcr.io/${{ github.repository }} + IMAGE_TAG: ${{ github.sha }} + +jobs: + build: + name: Build + runs-on: ubuntu-latest + + permissions: + contents: read + packages: write + + outputs: + BRANCH: ${{ steps.branch.outputs.BRANCH }} + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Set branch + id: branch + run: | + echo "::set-output name=BRANCH::${GITHUB_REF#refs/heads/}" + + - name: Log in to the Container Registry + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and Push Docker Image + uses: docker/build-push-action@v2 + with: + context: . + push: true + tags: ${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }},${{ env.IMAGE_NAME }}:latest + cache-from: type=registry,ref=${{ env.IMAGE_NAME }}:buildcache + cache-to: type=registry,ref=${{ env.IMAGE_NAME }}:buildcache,mode=max \ No newline at end of file diff --git a/README.md b/README.md index ad50fd8..f813ad7 100644 --- a/README.md +++ b/README.md @@ -1 +1,43 @@ -# johnjud-backend +# Johnjud-backend + +Johnjud-backend handles data management and business logic for the Johnjud project. + +### What is Johnjud? +Johnjud is a pet adoption web application of the [CUVET For Animal Welfare Club](https://www.facebook.com/CUVETforAnimalWelfareClub) + +## Stack + +- golang +- gRPC +- postgresql + +## Getting Started + +### Prerequisites + +- golang 1.21 or [later](https://go.dev) +- docker +- makefile + +### Installation + +1. Clone this repo +2. Copy every `config.example.yaml` in `config` and paste it in the same directory with `.example` removed from its name. + +3. Run `go mod download` to download all the dependencies. + +### Running +1. Run `docker-compose up -d` +2. Run `make server` or `go run ./src/.` + +### Testing +1. Run `make test` or `go test -v -coverpkg ./... -coverprofile coverage.out -covermode count ./...` + +## Other microservices/repositories of Johnjud +- [Johnjud-gateway](https://github.com/isd-sgcu/johnjud-gateway): Routing and request handling +- [Johnjud-auth](https://github.com/isd-sgcu/johnjud-auth): Authentication and authorization +- [Johnjud-backend](https://github.com/isd-sgcu/johnjud-backend): Main business logic +- [Johnjud-file](https://github.com/isd-sgcu/johnjud-file): File management service +- [Johnjud-proto](https://github.com/isd-sgcu/johnjud-proto): Protobuf files generator +- [Johnjud-go-proto](https://github.com/isd-sgcu/johnjud-go-proto): Generated protobuf files for golang +- [Johnjud-frontend](https://github.com/isd-sgcu/johnjud-frontend): Frontend web application diff --git a/config/file/config.example.yaml b/config/file/config.example.yaml new file mode 100644 index 0000000..f1ecd10 --- /dev/null +++ b/config/file/config.example.yaml @@ -0,0 +1,14 @@ +app: + port: 3004 + debug: true + +database: + host: local-db + port: 5432 + name: johnjud_db + username: root + password: root + +s3: + bucket_name: + region: \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml index 2ddebae..707a72e 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,6 +1,17 @@ version: "3.9" services: + local-file: + image: ghcr.io/isd-sgcu/johnjud-file + container_name: file + depends_on: + - local-db + restart: unless-stopped + volumes: + - ./config/file:/app/config + ports: + - "3004:3004" + local-db: image: postgres:15.1-alpine3.17 container_name: johnjud-local-db