Skip to content

Update chaos config

Update chaos config #6

Workflow file for this run

name: CHAOS-TEST
on:
push:
branches: [chaos-test]
env:
MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.httpconnectionManager.ttlSeconds=120
DOCKER_REPO: registry.cn-guangzhou.aliyuncs.com/cc-aliyun/rocketmq-ci
jobs:
dist-tar:
name: Build dist tar
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 -Dspotbugs.skip=true 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
# Modify the startup script of broker and nameserver to start sshd together
- name: update start script
run: |
path=$(echo ./rocketmq/rocketmq*/rocketmq*/bin/)
sed -i '/^export ROCKETMQ_HOME/i if command -v ssh >/dev/null 2>&1; then\n /usr/sbin/sshd\nfi\n' $path/mqbroker
sed -i '/^export ROCKETMQ_HOME/i if command -v ssh >/dev/null 2>&1; then\n /usr/sbin/sshd\nfi\n' $path/mqnamesrv
- name: docker-login
run: echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login registry.cn-guangzhou.aliyuncs.com --username=aliyun3982714546 --password-stdin
# Modify the Dockerfile to add the sshd service to the image
- name: append to Dockerfile
run: |
cat <<EOL >> rocketmq-docker/image-build-ci/Dockerfile-${{ matrix.base-image }}
RUN apt-get update && \\
apt-get install -y openssh-server && \\
apt-get clean
RUN mkdir /var/run/sshd && \\
mkdir -p /root/.ssh && \\
chmod 700 /root/.ssh && \\
ssh-keygen -A
RUN echo 'PermitEmptyPasswords yes' >> /etc/ssh/sshd_config
RUN passwd -d root
EOL
- 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@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: chi3316/rocketmq-test-tool/chaos-test-runner@46e1b58492a73c88fb1b97217dd8308cfafef7bb
name: Deploy rocketmq
with:
# TODO: Unable to modify the chart configuration here
action: "deploy"
ask-config: "${{ secrets.ASK_CONFIG_VIRGINA }}"
test-version: "${{ matrix.version }}"
chart-git: "https://mirror.ghproxy.com/https://github.com/chi3316/rocketmq-docker"
chart-branch: "chaos-test"
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 }}
chaos-test:
runs-on: ubuntu-latest
needs: deploy
timeout-minutes: 20
steps:
- name: Checkout repository
uses: actions/checkout@v2
- uses: chi3316/rocketmq-test-tool/chaos-test-runner@46e1b58492a73c88fb1b97217dd8308cfafef7bb
name: Chaos test
with:
action: "chaos-test"
ask-config: "${{ secrets.ASK_CONFIG_VIRGINA }}"
job-id: ${{ strategy.job-index }}
openchaos-driver: ".github/chaos-configs/driver.yml"
chaos-mesh-fault-file: ".github/chaos-configs/pod-failure.yml"
fault-scheduler-interval: "60"
openchaos-args: "-t 600"
fault-durition: "60"
node-lable: "app.kubernetes.io/name=broker"
meta-node-lable: "app.kubernetes.io/name=nameserver"
- name: Upload test report
if: always()
uses: actions/upload-artifact@v4
with:
name: chaos-test-report
path: chaos-test-report/
clean:
if: always()
name: Clean
needs: [ list-version, chaos-test ]
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
version: ${{ fromJSON(needs.list-version.outputs.version-json) }}
steps:
- uses: chi3316/rocketmq-test-tool/chaos-test-runner@46e1b58492a73c88fb1b97217dd8308cfafef7bb
name: clean
with:
action: "clean"
ask-config: "${{ secrets.ASK_CONFIG_VIRGINA }}"
test-version: "${{ matrix.version }}"
job-id: ${{ strategy.job-index }}