mirror of
				https://github.com/openimsdk/open-im-server.git
				synced 2025-10-31 16:32:12 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			131 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| name: Go Build Test
 | |
| 
 | |
| on:
 | |
|   push:
 | |
|     branches:
 | |
|       - main
 | |
|   pull_request:
 | |
|     branches:
 | |
|       - main
 | |
|   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: Build and test Chat Services
 | |
|         run: |
 | |
|           cd ${{ github.workspace }}/chat-repo
 | |
|           go mod tidy
 | |
|           go mod download
 | |
|           go install github.com/magefile/mage@latest
 | |
|           sudo mage build
 | |
|           sudo mage start
 | |
|           sudo mage check
 | |
| 
 | |
|   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
 |