mirror of
				https://github.com/openimsdk/open-im-server.git
				synced 2025-10-31 16:32:12 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			199 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			199 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| name: Go Build Test
 | |
| 
 | |
| on:
 | |
|   push:
 | |
|     branches:
 | |
|       - main
 | |
|       - workflow
 | |
|   pull_request:
 | |
|     branches:
 | |
|       - main
 | |
|     paths-ignore:
 | |
|       - '**/*.md'
 | |
| 
 | |
|   workflow_dispatch:
 | |
| 
 | |
| jobs:
 | |
|   go-build:
 | |
|     name: Test with go ${{ matrix.go_version }} on ${{ matrix.os }}
 | |
|     runs-on: ${{ matrix.os }}
 | |
|     permissions:
 | |
|       contents: write
 | |
|       pull-requests: write
 | |
|     strategy:
 | |
|       matrix:
 | |
|         os: [ubuntu-latest]
 | |
|         go_version: ["1.21.x", "1.22.x"]
 | |
| 
 | |
|     steps:
 | |
|       - name: Checkout Server repository
 | |
|         uses: actions/checkout@v4
 | |
| 
 | |
|       - name: Set up Go ${{ matrix.go_version }}
 | |
|         uses: actions/setup-go@v5
 | |
|         with:
 | |
|           go-version: ${{ matrix.go_version }}
 | |
| 
 | |
|       - name: Get Server dependencies
 | |
|         run: |
 | |
|           go install github.com/magefile/mage@latest
 | |
|           go mod tidy
 | |
|           go mod download
 | |
| 
 | |
|       - name: Set up infra services
 | |
|         uses: hoverkraft-tech/compose-action@v2.0.1
 | |
|         # Uncomment and set the correct path to your docker-compose file
 | |
|         with:
 | |
|           compose-file: "./docker-compose.yml"
 | |
| 
 | |
|         # run: |
 | |
|         #   sudo docker compose up -d
 | |
|         #   sudo sleep 30  # Increased sleep time for better stability
 | |
|         # timeout-minutes: 60 # Increased timeout for Docker setup
 | |
| 
 | |
| 
 | |
|     # - name: Get Internal IP Address
 | |
|     #   id: get-ip
 | |
|     #   run: |
 | |
|     #     IP=$(hostname -I | awk '{print $1}')
 | |
|     #     echo "The IP Address is: $IP"
 | |
|     #     echo "::set-output name=ip::$IP"
 | |
|       
 | |
|     # - name: Update .env
 | |
|     #   run: |
 | |
|     #     sed -i 's|externalAddress:.*|externalAddress: "http://${{ steps.get-ip.outputs.ip }}:10005"|' config/minio.yml
 | |
|     #     cat config/minio.yml
 | |
| 
 | |
|       - name: Build and test Server Services
 | |
|         run: |
 | |
|           mage build
 | |
|           mage start
 | |
|           mage check
 | |
| 
 | |
|       - name: Checkout Chat repository
 | |
|         uses: actions/checkout@v4
 | |
|         with:
 | |
|           repository: "openimsdk/chat"
 | |
|           path: "chat-repo"
 | |
| 
 | |
|       - name: Get Chat dependencies
 | |
|         run: |
 | |
|           cd ${{ github.workspace }}/chat-repo
 | |
|           go mod tidy
 | |
|           go mod download
 | |
|           go install github.com/magefile/mage@latest
 | |
| 
 | |
|       - name: Build and test Chat Services
 | |
|         run: |
 | |
|           cd ${{ github.workspace }}/chat-repo
 | |
|           mage build
 | |
|           mage start
 | |
|           mage check
 | |
| 
 | |
|   go-test:
 | |
|     name: Test with go ${{ matrix.go_version }} on ${{ matrix.os }}
 | |
|     runs-on: ${{ matrix.os }}
 | |
|     permissions:
 | |
|       contents: write
 | |
|     env:
 | |
|       SDK_DIR: openim-sdk-core
 | |
|       CONFIG_PATH: config/notification.yml
 | |
|     #   pull-requests: write
 | |
|     strategy:
 | |
|       matrix:
 | |
|         os: [ ubuntu-latest ]
 | |
|         go_version: [ "1.22.x" ]
 | |
| 
 | |
|     steps:
 | |
|       - name: Checkout Server repository
 | |
|         uses: actions/checkout@v4
 | |
| 
 | |
|       - name: Checkout SDK repository
 | |
|         uses: actions/checkout@v4
 | |
|         with:
 | |
|           repository: 'openimsdk/openim-sdk-core'
 | |
|           path: ${{ env.SDK_DIR }}
 | |
| 
 | |
|       - name: Set up Go ${{ matrix.go_version }}
 | |
|         uses: actions/setup-go@v5
 | |
|         with:
 | |
|           go-version: ${{ matrix.go_version }}
 | |
| 
 | |
|       - name: Get Server dependencies
 | |
|         run: |
 | |
|           go install github.com/magefile/mage@latest
 | |
|           go mod download
 | |
| 
 | |
|       - name: Install yq
 | |
|         run: |
 | |
|           sudo wget https://github.com/mikefarah/yq/releases/download/v4.34.1/yq_linux_amd64 -O /usr/bin/yq
 | |
|           sudo chmod +x /usr/bin/yq
 | |
| 
 | |
|       - name: Modify Server Configuration
 | |
|         run: |
 | |
|           yq e '.groupCreated.unreadCount = true' -i ${{ env.CONFIG_PATH }}
 | |
|           yq e '.friendApplicationApproved.unreadCount = true' -i ${{ env.CONFIG_PATH }}
 | |
| 
 | |
|       - name: Start Server Services
 | |
|         run: |
 | |
|           docker compose up -d
 | |
|           mage build
 | |
|           mage start
 | |
|           mage check
 | |
| 
 | |
|       - name: Build test SDK core
 | |
|         run: |
 | |
|           cd ${{ env.SDK_DIR }}
 | |
|           go mod tidy
 | |
|           cd integration_test
 | |
|           mkdir data
 | |
|           go run main.go -lgr 0.8 -imf -crg -ckgn -ckcon -sem -ckmsn -u 20 -su 5 -lg 2 -cg 2 -cgm 3 -sm 10 -gm 10 -reg
 | |
| 
 | |
|   dockerfile-test:
 | |
|     name: Build and Test Dockerfile
 | |
|     runs-on: ubuntu-latest
 | |
|     strategy:
 | |
|       matrix:
 | |
|         go_version: ["1.21"]
 | |
| 
 | |
|     steps:
 | |
|       - name: Checkout Repository
 | |
|         uses: actions/checkout@v4
 | |
| 
 | |
|       - name: Set up Go ${{ matrix.go_version }}
 | |
|         uses: actions/setup-go@v5
 | |
|         with:
 | |
|           go-version: ${{ matrix.go_version }}
 | |
| 
 | |
|       - name: Get dependencies
 | |
|         run: |
 | |
|           go mod tidy
 | |
|           go mod download
 | |
|           go install github.com/magefile/mage@latest
 | |
| 
 | |
|       - name: Build Docker Image
 | |
|         run: |
 | |
|           IMAGE_NAME="${{ github.event.repository.name }}-test"
 | |
|           CONTAINER_NAME="${{ github.event.repository.name }}-container"
 | |
|           docker build -t $IMAGE_NAME .
 | |
| 
 | |
|       - name: Run Docker Container
 | |
|         run: |
 | |
|           IMAGE_NAME="${{ github.event.repository.name }}-test"
 | |
|           CONTAINER_NAME="${{ github.event.repository.name }}-container"
 | |
|           docker run --name $CONTAINER_NAME -d $IMAGE_NAME
 | |
|           docker ps -a
 | |
| 
 | |
|       - name: Test Docker Container Logs
 | |
|         run: |
 | |
|           CONTAINER_NAME="${{ github.event.repository.name }}-container"
 | |
|           docker logs $CONTAINER_NAME
 | |
| 
 | |
|       # - name: Cleanup Docker Container
 | |
|       #   run: |
 | |
|       #     CONTAINER_NAME="${{ github.event.repository.name }}-container"
 | |
|       #     IMAGE_NAME="${{ github.event.repository.name }}-test"
 | |
|       #     docker stop $CONTAINER_NAME
 | |
|       #     docker rm $CONTAINER_NAME
 | |
|       #     docker rmi $IMAGE_NAME
 |