mirror of
				https://github.com/openimsdk/open-im-server.git
				synced 2025-10-31 16:32:12 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			198 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			198 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| # Copyright © 2023 OpenIM open source community. All rights reserved.
 | |
| #
 | |
| # Licensed under the Apache License, Version 2.0 (the "License");
 | |
| # you may not use this file except in compliance with the License.
 | |
| # You may obtain a copy of the License at
 | |
| #
 | |
| #     http://www.apache.org/licenses/LICENSE-2.0
 | |
| #
 | |
| # Unless required by applicable law or agreed to in writing, software
 | |
| # distributed under the License is distributed on an "AS IS" BASIS,
 | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| # See the License for the specific language governing permissions and
 | |
| # limitations under the License.
 | |
| 
 | |
| name: OpenIM CI Aotu Build and Install
 | |
| 
 | |
| on: 
 | |
|   push:
 | |
|     branches:
 | |
|         - main
 | |
|     paths-ignore:
 | |
|         - "docs/**"
 | |
|         - "README.md"
 | |
|         - "README_zh-CN.md"
 | |
|         - "CONTRIBUTING.md"
 | |
|   pull_request:
 | |
|     branches:
 | |
|         - main
 | |
|     paths-ignore:
 | |
|         - "README.md"
 | |
|         - "README_zh-CN.md"
 | |
|         - "CONTRIBUTING.md"
 | |
|         - "docs/**"
 | |
| 
 | |
| env:
 | |
|   GO_VERSION: "1.19"
 | |
|   GOLANGCI_VERSION: "v1.50.1"
 | |
| 
 | |
| 
 | |
| jobs:
 | |
|   openim:
 | |
|     name: Test with go ${{ matrix.go_version }} on ${{ matrix.os }}
 | |
|     runs-on: ${{ matrix.os }}
 | |
|     permissions:
 | |
|         contents: write
 | |
|     environment:
 | |
|       name: openim
 | |
| 
 | |
|     strategy:
 | |
|       matrix:
 | |
|         go_version: ["1.19","1.20","1.21"]
 | |
|         os: [ubuntu-latest]
 | |
| 
 | |
|     steps:
 | |
|     - name: Setup
 | |
|       uses: actions/checkout@v4
 | |
|       
 | |
|     - name: Set up Go ${{ matrix.go_version }}
 | |
|       uses: actions/setup-go@v4
 | |
|       with:
 | |
|         go-version: ${{ matrix.go_version }}
 | |
|       id: go
 | |
| 
 | |
|     - name: Install Task
 | |
|       uses: arduino/setup-task@v1
 | |
|       with:
 | |
|         version: '3.x' # If available, use the latest major version that's compatible
 | |
|         repo-token: ${{ secrets.GITHUB_TOKEN }}
 | |
| 
 | |
|     - name: Module Operations
 | |
|       run: |
 | |
|         sudo make tidy
 | |
|         sudo make tools.verify.go-gitlint
 | |
| 
 | |
|     - name: Format Code
 | |
|       run: sudo make format
 | |
|       continue-on-error: true
 | |
| 
 | |
|     - name: Generate Files
 | |
|       run: make gen
 | |
|       continue-on-error: true
 | |
| 
 | |
|     - name: Build Source
 | |
|       run: sudo make build
 | |
| 
 | |
|     - name: Cleanup Build
 | |
|       run: sudo make clean
 | |
| 
 | |
|     - name: Push Changes to Main
 | |
|       uses: stefanzweifel/git-auto-commit-action@v5
 | |
|       with:
 | |
|         commit_message: "cicd: robot automated Change"
 | |
|         branch: main
 | |
|       continue-on-error: true
 | |
| 
 | |
|     - name: Set Current Directory
 | |
|       id: set_directory
 | |
|       run: echo "::set-output name=directory::$(pwd)"
 | |
|       continue-on-error: true
 | |
| 
 | |
|     - name: Collect and Display Test Coverage
 | |
|       id: collect_coverage
 | |
|       run: |
 | |
|         cd ${{ steps.set_directory.outputs.directory }}
 | |
|         make cover
 | |
|         echo "::set-output name=coverage_file::./_output/tmp/coverage.out"
 | |
|         echo "Test Coverage:"
 | |
|         cat ${{ steps.collect_coverage.outputs.coverage_file }}
 | |
|       continue-on-error: true
 | |
| 
 | |
|   openim-start:
 | |
|     name: Test OpenIM install/start on ${{ matrix.os }}
 | |
|     runs-on: ${{ matrix.os }}
 | |
|     environment:
 | |
|       name: openim
 | |
|     strategy:
 | |
|       matrix:
 | |
|         go_version: ["1.21"]
 | |
|         os: ["ubuntu-latest"]
 | |
|     steps:
 | |
|     - name: Checkout and Install OpenIM
 | |
|       uses: actions/checkout@v4
 | |
|     - name: Install Task
 | |
|       uses: arduino/setup-task@v1
 | |
|       with:
 | |
|         version: '3.x' # If available, use the latest major version that's compatible
 | |
|         repo-token: ${{ secrets.GITHUB_TOKEN }}
 | |
|     - name: Run OpenIM make install start
 | |
|       run: |
 | |
|         sudo make install
 | |
| 
 | |
|   execute-scripts:
 | |
|     name: Execute OpenIM script on ${{ matrix.os }}
 | |
|     runs-on: ${{ matrix.os }}
 | |
|     environment:
 | |
|       name: openim
 | |
|     strategy:
 | |
|       matrix:
 | |
|         go_version: ["1.20"]
 | |
|         os: ["ubuntu-latest"]
 | |
|     steps:
 | |
|     - name: Checkout code
 | |
|       uses: actions/checkout@v4
 | |
| 
 | |
|     - name: Set up Go ${{ matrix.go_version }}
 | |
|       uses: actions/setup-go@v4
 | |
|       with:
 | |
|         go-version: ${{ matrix.go_version }}
 | |
|       id: go
 | |
| 
 | |
|     - name: Install Task
 | |
|       uses: arduino/setup-task@v1
 | |
|       with:
 | |
|         version: '3.x' # If available, use the latest major version that's compatible
 | |
|         repo-token: ${{ secrets.GITHUB_TOKEN }}
 | |
| 
 | |
|     - name: Docker Operations
 | |
|       run: |
 | |
|         curl -o docker-compose.yml https://raw.githubusercontent.com/OpenIMSDK/openim-docker/main/example/basic-openim-server-dependency.yml
 | |
|         sudo docker compose up -d
 | |
|         sudo sleep 60
 | |
| 
 | |
|     - name: Module Operations
 | |
|       run: |
 | |
|         sudo make tidy
 | |
|         sudo make tools.verify.go-gitlint
 | |
| 
 | |
|     - name: Build, Start, Check Services and Print Logs
 | |
|       run: |
 | |
|         sudo make init && \
 | |
|         sudo make build && \
 | |
|         sudo make start && \
 | |
|         sudo make check || \
 | |
|         (echo "An error occurred, printing logs:" && sudo cat ./_output/logs/* 2>/dev/null)
 | |
| 
 | |
|   openim-test-build-image:
 | |
|     name: Build OpenIM Docker Image
 | |
|     runs-on: ubuntu-latest
 | |
|     environment:
 | |
|       name: openim
 | |
|     steps:
 | |
|     - name: Checkout code
 | |
|       uses: actions/checkout@v4
 | |
|     - name: Set up Go ${{ matrix.go_version }}
 | |
|       uses: actions/setup-go@v4
 | |
|       with:
 | |
|         go-version: ${{ matrix.go_version }}
 | |
|       id: go
 | |
| 
 | |
|     - name: Install Task
 | |
|       uses: arduino/setup-task@v1
 | |
|       with:
 | |
|         version: '3.x' # If available, use the latest major version that's compatible
 | |
|         repo-token: ${{ secrets.GITHUB_TOKEN }}
 | |
| 
 | |
|     - name: Test Docker Build
 | |
|       run: |
 | |
|         sudo make image |