name: Go Build Test on: push: branches: - main 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: 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.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