mirror of
				https://github.com/openimsdk/open-im-server.git
				synced 2025-11-04 03:13:15 +08:00 
			
		
		
		
	* feat: catch panic * feat: docker file * feat: cicd * feat: dockerfile --------- Co-authored-by: Monet Lee <monet_lee@163.com>
		
			
				
	
	
		
			194 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			194 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: Go Build Test
 | 
						|
 | 
						|
on:
 | 
						|
  push:
 | 
						|
  pull_request:
 | 
						|
    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: Benchmark 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.22"]
 | 
						|
 | 
						|
    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
 |