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 5604d725efad74ea884bbe4ee727e380e8da4f35
Author: deepsola <[email protected]>
AuthorDate: Mon Feb 6 17:42:28 2023 +0800

    Create pr-e2e-test.yml
---
 .github/workflows/pr-e2e-test.yml | 156 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 156 insertions(+)

diff --git a/.github/workflows/pr-e2e-test.yml 
b/.github/workflows/pr-e2e-test.yml
new file mode 100644
index 000000000..e2c7e06b7
--- /dev/null
+++ b/.github/workflows/pr-e2e-test.yml
@@ -0,0 +1,156 @@
+name: E2E test for pull request
+
+# read-write repo token
+# access to secrets
+on:
+  workflow_run:
+    workflows: ["PR-CI"]
+    types:
+      - completed
+
+jobs:
+  docker:
+    runs-on: ubuntu-latest
+    if: >
+      github.event.workflow_run.event == 'pull_request' &&
+      github.event.workflow_run.conclusion == 'success'
+    timeout-minutes: 30
+    strategy:
+      matrix:
+        base-image: ["ubuntu"]
+        java-version: ["8"]
+    steps:
+      - name: 'Download artifact'
+        uses: actions/[email protected]
+        with:
+          script: |
+            var artifacts = await github.actions.listWorkflowRunArtifacts({
+               owner: context.repo.owner,
+               repo: context.repo.repo,
+               run_id: ${{github.event.workflow_run.id }},
+            });
+            var matchArtifactRmq = artifacts.data.artifacts.filter((artifact) 
=> {
+              return artifact.name == "rocketmq"
+            })[0];
+            var download = await github.actions.downloadArtifact({
+               owner: context.repo.owner,
+               repo: context.repo.repo,
+               artifact_id: matchArtifactRmq.id,
+               archive_format: 'zip',
+            });
+            var fs = require('fs');
+            fs.writeFileSync('${{github.workspace}}/rocketmq.zip', 
Buffer.from(download.data));
+      - run: |
+          unzip rocketmq.zip
+          mkdir rocketmq
+          cp -r rocketmq-* rocketmq/
+          ls
+      - uses: actions/checkout@v3
+        with:
+          repository: cryptoya/rocketmq-docker.git
+          ref: master
+          path: rocketmq-docker
+      - 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 }}

Reply via email to