Skip to content

E2E test for pull request #43

E2E test for pull request

E2E test for pull request #43

Workflow file for this run

name: E2E test for pull request
# read-write repo token
# access to secrets
on:
workflow_run:
workflows: ["PR-CI"]
types:
- completed
env:
DOCKER_REPO: crpi-5qz7c1igs2n2qu5k.cn-hangzhou.personal.cr.aliyuncs.com/aliyunci/ccaliyun
jobs:
docker:
if: >
github.event.workflow_run.event == 'pull_request' &&
github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
matrix:
base-image: ["ubuntu"]
java-version: ["8"]
steps:
- name: 'Download artifact'
uses: actions/github-script@v6
with:
script: |
let artifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: ${{github.event.workflow_run.id }},
});
let matchArtifactRmq = artifacts.data.artifacts.filter((artifact) => {
return artifact.name == "rocketmq"
})[0];
let download = await github.rest.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: apache/rocketmq-docker.git
ref: master
path: rocketmq-docker
- name: docker-login
run: echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login crpi-5qz7c1igs2n2qu5k.cn-hangzhou.personal.cr.aliyuncs.com --username=aliyun0168044802 --password-stdin
- 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 }} ${DOCKER_REPO}
- uses: actions/upload-artifact@v4
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@v4
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:
- name: Encode secret
run: echo "${{ secrets.ASK_CONFIG_VIRGINA }}" | base64 -w 0 > secret.txt
- name: Set secret environment variable
run: echo "SECRET=$(cat secret.txt)" >> $GITHUB_ENV
- uses: chi3316/rocketmq-test-tool/benchmark-runner@e670a74fe1f0ccbe1d28081dbf6c0fc35372b885
name: Deploy rocketmq
with:
action: "deploy"
ask-config: "${{ env.SECRET }}"
test-version: "${{ matrix.version }}"
chart-git: "https://mirror.ghproxy.com/https://github.com/chi3316/rocketmq-docker"
chart-branch: "feat-custom-jvm-memory"
chart-path: "./rocketmq-k8s-helm"
job-id: ${{ strategy.job-index }}
helm-values: |
nameserver:
image:
repository: ${{env.DOCKER_REPO}}
tag: ${{ matrix.version }}
broker:
image:
repository: ${{env.DOCKER_REPO}}
tag: ${{ matrix.version }}
proxy:
image:
repository: ${{env.DOCKER_REPO}}
tag: ${{ matrix.version }}
controller:
image:
repository: ${{env.DOCKER_REPO}}
tag: ${{ matrix.version }}
benchmark-test:
if: ${{ success() }}
runs-on: ubuntu-latest
name: Performance benchmark test
needs: [ list-version, deploy ]
timeout-minutes: 60
steps:
- uses: chi3316/rocketmq-test-tool/benchmark-runner@e670a74fe1f0ccbe1d28081dbf6c0fc35372b885
name: Performance benchmark
with:
action: "performance-benchmark"
ask-config: "${{ env.SECRET }}"
job-id: 0
test-time: "300"
- name: Upload test report
if: always()
uses: actions/upload-artifact@v4
with:
name: benchmark-report
path: benchmark/
clean:
if: always()
name: Clean
needs: [list-version, benchmark-test]
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
version: ${{ fromJSON(needs.list-version.outputs.version-json) }}
steps:
- name: Encode secret
run: echo "${{ secrets.ASK_CONFIG_VIRGINA }}" | base64 -w 0 > secret.txt
- name: Set secret environment variable
run: echo "SECRET=$(cat secret.txt)" >> $GITHUB_ENV
- uses: chi3316/rocketmq-test-tool/benchmark-runner@e670a74fe1f0ccbe1d28081dbf6c0fc35372b885
name: clean
with:
action: "clean"
ask-config: "${{ env.SECRET }}"
test-version: "${{ matrix.version }}"
job-id: ${{ strategy.job-index }}