This is an automated email from the ASF dual-hosted git repository. zhouxzhan pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/rocketmq.git
commit c7142c8e0c787fbe76f724344291d5b773f31a2e Author: deepsola <[email protected]> AuthorDate: Mon Feb 6 17:42:57 2023 +0800 Create push-ci.yml --- .github/workflows/push-ci.yml | 202 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 202 insertions(+) diff --git a/.github/workflows/push-ci.yml b/.github/workflows/push-ci.yml new file mode 100644 index 000000000..16aabb0e0 --- /dev/null +++ b/.github/workflows/push-ci.yml @@ -0,0 +1,202 @@ +name: PUSH-CI + +on: + push: + #schedule: + # - cron: "0 18 * * *" # TimeZone: UTC 0 + +concurrency: + group: rocketmq-${{ github.ref }} + cancel-in-progress: true + +env: + MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 + +jobs: + unit-test: + if: always() + name: Unit test + # needs: [] + runs-on: ${{ matrix.os }}-latest + timeout-minutes: 30 + strategy: + matrix: + os: [ubuntu, macos, windows] + java-version: [8] + include: + - os: ubuntu + java-version: 11 + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - name: Cache maven repository + uses: actions/cache@v3 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-maven- + - uses: actions/setup-java@v3 + with: + java-version: ${{ matrix.java-version }} + distribution: adopt + - name: Build and test + run: | + cd broker + mvn -B test --file pom.xml + - name: Publish Test Report + uses: mikepenz/action-junit-report@v3 + if: always() # always run even if the previous step fails + with: + report_paths: '**/surefire-reports/TEST-*.xml' + + dist-tar: + if: ${{ success() }} + name: Build dist tar + needs: [unit-test] + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - uses: actions/setup-java@v3 + with: + distribution: "temurin" + java-version: "8" + cache: "maven" + - name: Build distribution tar + run: | + mvn -Prelease-all -DskipTests clean install -U + - uses: actions/upload-artifact@v3 + name: Upload distribution tar + with: + name: rocketmq + path: distribution/target/rocketmq*/rocketmq* + + docker: + if: ${{ success() }} + name: Docker images + needs: [dist-tar] + runs-on: ubuntu-latest + timeout-minutes: 30 + strategy: + matrix: + base-image: ["ubuntu"] + java-version: ["8"] + steps: + - uses: actions/checkout@v3 + with: + repository: apache/rocketmq-docker.git + ref: master + path: rocketmq-docker + - uses: actions/download-artifact@v3 + name: Download distribution tar + with: + name: rocketmq + path: rocketmq + - name: Build and save docker images + id: build-images + run: | + cd rocketmq-docker/image-build-ci + version=${{ github.event.pull_request.number || github.ref_name }}-$(uuidgen) + mkdir versionlist + touch versionlist/"${version}-`echo ${{ matrix.base-image }} | sed -e "s/:/-/g"`" + sh ./build-image-local.sh ${version} ${{ matrix.base-image }} ${{ matrix.java-version }} "cn-cicd-repo-registry.cn-hangzhou.cr.aliyuncs.com/cicd/rocketmq" ${{ secrets.DOCKER_REPO_USERNAME }} ${{ secrets.DOCKER_REPO_PASSWORD }} + - uses: actions/upload-artifact@v3 + name: Upload distribution tar + with: + name: versionlist + path: rocketmq-docker/image-build-ci/versionlist/* + + + list-version: + if: always() + name: List version + needs: [docker] + runs-on: ubuntu-latest + timeout-minutes: 30 + outputs: + version-json: ${{ steps.show_versions.outputs.version-json }} + steps: + - uses: actions/download-artifact@v3 + name: Download versionlist + with: + name: versionlist + path: versionlist + - name: Show versions + id: show_versions + run: | + a=(`ls versionlist`) + printf '%s\n' "${a[@]}" | jq -R . | jq -s . + echo version-json=`printf '%s\n' "${a[@]}" | jq -R . | jq -s .` >> $GITHUB_OUTPUT + deploy: + if: ${{ success() }} + name: Deploy RocketMQ + needs: [list-version,docker] + runs-on: ubuntu-latest + timeout-minutes: 60 + strategy: + matrix: + version: ${{ fromJSON(needs.list-version.outputs.version-json) }} + steps: + - uses: alibaba/[email protected] + name: Deploy rocketmq + with: + action: "deploy" + ask-config: "${{ secrets.ASK_CONFIG }}" + test-version: "${{ matrix.version }}" + docker-repo-username: "${{ secrets.DOCKER_REPO_USERNAME }}" + docker-repo-password: "${{ secrets.DOCKER_REPO_PASSWORD }}" + chart-git: "https://ghproxy.com/https://github.com/cryptoya/rocketmq-docker.git" + chart-branch: "master" + chart-path: "./rocketmq-k8s-helm" + job-id: ${{ strategy.job-index }} + + e2e-test: + if: ${{ success() }} + name: E2E Test + needs: [list-version, deploy] + runs-on: ubuntu-latest + timeout-minutes: 60 + strategy: + matrix: + version: ${{ fromJSON(needs.list-version.outputs.version-json) }} + steps: + - uses: alibaba/[email protected] + name: e2e test + with: + action: "test" + ask-config: "${{ secrets.ASK_CONFIG }}" + test-version: "${{ matrix.version }}" + test-code-git: "https://ghproxy.com/https://github.com/apache/rocketmq-e2e.git" + test-code-branch: "master" + test-code-path: java/e2e + test-cmd: "mvn -B test" + job-id: ${{ strategy.job-index }} + - name: Publish Test Report + uses: mikepenz/action-junit-report@v3 + if: always() # always run even if the previous step fails + with: + report_paths: '**/test_report/TEST-*.xml' + annotate_only: true + include_passed: true + detailed_summary: true + + clean: + if: always() + name: Clean + needs: [list-version, e2e-test] + runs-on: ubuntu-latest + timeout-minutes: 60 + strategy: + matrix: + version: ${{ fromJSON(needs.list-version.outputs.version-json) }} + steps: + - uses: alibaba/[email protected] + name: clean + with: + action: "clean" + ask-config: "${{ secrets.ASK_CONFIG }}" + test-version: "${{ matrix.version }}" + job-id: ${{ strategy.job-index }}
