run_relup_tests.yaml 3.7 KB

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