run_relup_tests.yaml 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. name: Release Upgrade Tests
  2. on:
  3. push:
  4. tags:
  5. - v*
  6. - e*
  7. pull_request:
  8. jobs:
  9. relup_test:
  10. strategy:
  11. matrix:
  12. otp:
  13. - "23.2.7.2-emqx-2"
  14. - "24.0.5-emqx-1"
  15. runs-on: ubuntu-20.04
  16. container: "ghcr.io/emqx/emqx-builder-helper/5.0:${{ matrix.otp }}-ubuntu20.04"
  17. defaults:
  18. run:
  19. shell: bash
  20. steps:
  21. - uses: actions/setup-python@v2
  22. with:
  23. python-version: '3.8'
  24. architecture: 'x64'
  25. - uses: actions/checkout@v2
  26. with:
  27. repository: emqx/paho.mqtt.testing
  28. ref: develop-4.0
  29. path: paho.mqtt.testing
  30. - uses: actions/checkout@v2
  31. with:
  32. repository: terry-xiaoyu/one_more_emqx
  33. ref: master
  34. path: one_more_emqx
  35. - uses: actions/checkout@v2
  36. with:
  37. repository: emqx/emqtt-bench
  38. ref: master
  39. path: emqtt-bench
  40. - uses: actions/checkout@v2
  41. with:
  42. repository: hawk/lux
  43. ref: lux-2.6
  44. path: lux
  45. - uses: actions/checkout@v2
  46. with:
  47. repository: ${{ github.repository }}
  48. path: emqx
  49. fetch-depth: 0
  50. - name: prepare
  51. run: |
  52. if make -C emqx emqx-ee --dry-run > /dev/null 2>&1; then
  53. echo "https://ci%40emqx.io:${{ secrets.CI_GIT_TOKEN }}@github.com" > $HOME/.git-credentials
  54. git config --global credential.helper store
  55. echo "${{ secrets.CI_GIT_TOKEN }}" >> emqx/scripts/git-token
  56. echo "PROFILE=emqx-ee" >> $GITHUB_ENV
  57. else
  58. echo "PROFILE=emqx" >> $GITHUB_ENV
  59. fi
  60. - name: get version
  61. run: |
  62. set -e -x -u
  63. cd emqx
  64. if [ $PROFILE = "emqx" ];then
  65. broker="emqx-ce"
  66. edition='opensource'
  67. else
  68. broker="emqx-ee"
  69. edition='enterprise'
  70. fi
  71. echo "BROKER=$broker" >> $GITHUB_ENV
  72. vsn="$(./pkg-vsn.sh)"
  73. echo "VSN=$vsn" >> $GITHUB_ENV
  74. pre_vsn="$(echo $vsn | grep -oE '^[0-9]+.[0-9]')"
  75. if [ $PROFILE = "emqx" ]; then
  76. old_vsns="$(git tag -l "v$pre_vsn.[0-9]" | xargs echo -n | sed "s/v$vsn//")"
  77. else
  78. old_vsns="$(git tag -l "e$pre_vsn.[0-9]" | xargs echo -n | sed "s/e$vsn//")"
  79. fi
  80. echo "OLD_VSNS=$old_vsns" >> $GITHUB_ENV
  81. - name: download emqx
  82. run: |
  83. set -e -x -u
  84. mkdir -p emqx/_upgrade_base
  85. cd emqx/_upgrade_base
  86. old_vsns=($(echo $OLD_VSNS | tr ' ' ' '))
  87. for old_vsn in ${old_vsns[@]}; do
  88. wget --no-verbose https://s3-us-west-2.amazonaws.com/packages.emqx/$BROKER/$old_vsn/$PROFILE-ubuntu20.04-${old_vsn#[e|v]}-amd64.zip
  89. done
  90. - name: build emqx
  91. run: make -C emqx ${PROFILE}-zip
  92. - name: build emqtt-bench
  93. run: make -C emqtt-bench
  94. - name: build lux
  95. run: |
  96. set -e -u -x
  97. cd lux
  98. autoconf
  99. ./configure
  100. make
  101. make install
  102. - name: run relup test
  103. timeout-minutes: 20
  104. run: |
  105. set -e -x -u
  106. if [ -n "$OLD_VSNS" ]; then
  107. mkdir -p packages
  108. cp emqx/_packages/${PROFILE}/*.zip packages
  109. cp emqx/_upgrade_base/*.zip packages
  110. lux \
  111. --case_timeout infinity \
  112. --var PROFILE=$PROFILE \
  113. --var PACKAGE_PATH=$(pwd)/packages \
  114. --var BENCH_PATH=$(pwd)/emqtt-bench \
  115. --var ONE_MORE_EMQX_PATH=$(pwd)/one_more_emqx \
  116. --var VSN="$VSN" \
  117. --var OLD_VSNS="$OLD_VSNS" \
  118. emqx/.ci/fvt_tests/relup.lux
  119. fi
  120. - uses: actions/upload-artifact@v1
  121. if: failure()
  122. with:
  123. name: lux_logs
  124. path: lux_logs