You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by zh...@apache.org on 2023/02/14 10:53:40 UTC
[rocketmq] 02/10: Create pr-e2e-test.yml
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 <wa...@alibaba-inc.com>
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/github-script@v3.1.0
+ 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/cloud-native-test-ci-tool@v0.0.1
+ 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/cloud-native-test-ci-tool@v0.0.1
+ 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/cloud-native-test-ci-tool@v0.0.1
+ name: clean
+ with:
+ action: "clean"
+ ask-config: "${{ secrets.ASK_CONFIG }}"
+ test-version: "${{ matrix.version }}"
+ job-id: ${{ strategy.job-index }}