# 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", "macos-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: Install latest Bash (macOS only) # if: runner.os == 'macOS' # run: | # /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # brew update # brew install bash # brew install gnu-sed # echo "/usr/local/bin" >> $GITHUB_PATH # echo "$(brew --prefix)/opt/gnu-sed/libexec/gnubin" >> $GITHUB_PATH # continue-on-error: true - name: Set up Docker for Ubuntu if: runner.os == 'Linux' run: | sudo make init sudo docker compose up -d sudo sleep 20 # - name: Set up Docker for macOS # if: runner.os == 'macOS' # run: | # brew install --cask docker # open /Applications/Docker.app # sleep 10 # docker-compose --version || brew install docker-compose # docker-compose up -d # sleep 20 - name: Module Operations for Ubuntu if: runner.os == 'Linux' run: | sudo make tidy sudo make tools.verify.go-gitlint # - name: Module Operations for macOS # if: runner.os == 'macOS' # run: | # make tidy # make tools.verify.go-gitlint - name: Build, Start, Check Services and Print Logs for Ubuntu if: runner.os == 'Linux' run: | sudo make build && \ sudo make start && \ sudo make check || \ (echo "An error occurred, printing logs:" && sudo cat ./_output/logs/* 2>/dev/null) - name: Restart Services and Print Logs for Ubuntu if: runner.os == 'Linux' run: | sudo make restart sudo make check # - name: Build, Start, Check Services and Print Logs for macOS # if: runner.os == 'macOS' # run: | # make init && \ # make build && \ # make start && \ # 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 init sudo make image