# 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