build_packages.yaml 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. name: Build packages
  2. on:
  3. push:
  4. pull_request:
  5. release:
  6. types:
  7. - published
  8. - prereleased
  9. jobs:
  10. build:
  11. runs-on: ubuntu-latest
  12. steps:
  13. - uses: actions/checkout@v2
  14. - name: install docker
  15. run: |
  16. sudo apt-get remove docker docker-engine docker.io containerd runc
  17. sudo apt-get update
  18. sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
  19. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  20. sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  21. sudo apt-get update
  22. sudo apt-get install docker-ce docker-ce-cli containerd.io
  23. - name: prepare docker
  24. run: |
  25. mkdir -p $HOME/.docker
  26. echo '{ "experimental": "enabled" }' | tee $HOME/.docker/config.json
  27. echo '{ "experimental": true, "storage-driver": "overlay2", "max-concurrent-downloads": 50, "max-concurrent-uploads": 50, "graph": "/mnt/docker" }' | sudo tee /etc/docker/daemon.json
  28. sudo systemctl restart docker
  29. docker info
  30. docker buildx create --use --name mybuild
  31. - name: build
  32. run: |
  33. make cross_build
  34. cd _packages && for var in $(ls); do sudo bash -c "echo $(sha256sum $var | awk '{print $1}') > $var.sha256"; done && cd -
  35. - uses: actions/upload-artifact@v1
  36. with:
  37. name: packages
  38. path: _packages/.
  39. build-on-mac:
  40. runs-on: macos-latest
  41. steps:
  42. - uses: actions/checkout@v2
  43. - uses: actions/setup-go@v1
  44. with:
  45. go-version: '1.13.10'
  46. - name: prepare
  47. run: |
  48. /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  49. brew install curl zip unzip gnu-sed upx pkg-config zmq
  50. echo "/usr/local/bin:$PATH" >> ~/.bashrc
  51. - name: build
  52. run: |
  53. make pkg
  54. cd _packages && for var in $(ls); do openssl dgst -sha256 $var | awk '{print $2}' > $var.sha256; done && cd -
  55. - uses: actions/upload-artifact@v1
  56. with:
  57. name: packages-mac
  58. path: _packages/.
  59. build-docker-images:
  60. runs-on: ubuntu-latest
  61. steps:
  62. - uses: actions/checkout@v2
  63. - name: install docker
  64. run: |
  65. sudo apt-get remove docker docker-engine docker.io containerd runc
  66. sudo apt-get update
  67. sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
  68. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  69. sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  70. sudo apt-get update
  71. sudo apt-get install docker-ce docker-ce-cli containerd.io
  72. - name: prepare docker
  73. run: |
  74. mkdir -p $HOME/.docker
  75. echo '{ "experimental": "enabled" }' | tee $HOME/.docker/config.json
  76. echo '{ "experimental": true, "storage-driver": "overlay2", "max-concurrent-downloads": 50, "max-concurrent-uploads": 50, "graph": "/mnt/docker" }' | sudo tee /etc/docker/daemon.json
  77. sudo systemctl restart docker
  78. docker version
  79. docker buildx create --use --name mybuild
  80. - name: build docker image
  81. run: make docker
  82. - name: build docker images
  83. if: github.event_name == 'release'
  84. run: |
  85. echo ${{ secrets.DockerHubPassword }} | docker login -u ${{ secrets.DockerHubUser }} --password-stdin
  86. make cross_docker
  87. release:
  88. runs-on: ubuntu-latest
  89. needs: [build, build-on-mac]
  90. steps:
  91. - uses: actions/checkout@v2
  92. - uses: actions/download-artifact@v1
  93. with:
  94. name: packages
  95. path: _packages
  96. - uses: actions/download-artifact@v1
  97. with:
  98. name: packages-mac
  99. path: _packages
  100. - name: check packages
  101. run: |
  102. cd _packages && for var in $( ls |grep -v sha256); do
  103. echo "$(cat $var.sha256) $var" | sha256sum -c || exit 1
  104. done
  105. - name: update github release
  106. if: github.event_name == 'release'
  107. run: |
  108. version=$(echo ${{ github.ref }} | sed -r "s .*/.*/(.*) \1 g")
  109. for var in $(ls _packages) ; do
  110. .github/workflows/script/upload_github_release_asset.sh owner=emqx repo=kuiper tag=$version filename=_packages/$var github_api_token=$(echo ${{ secrets.AccessToken }})
  111. done
  112. - name: create invalidation for cloudfront
  113. if: github.event_name == 'release'
  114. run: |
  115. version=$(echo ${{ github.ref }} | sed -r "s .*/.*/(.*) \1 g")
  116. curl "https://d1vvhvl2y92vvt.cloudfront.net/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
  117. unzip awscliv2.zip
  118. sudo ./aws/install
  119. aws configure set aws_access_key_id ${{ secrets.AwsAccessKeyId }}
  120. aws configure set aws_secret_access_key ${{ secrets.AwsSecretAccessKey }}
  121. aws configure set default.region us-west-2
  122. aws s3 rm --quiet --recursive s3://packages.emqx.io/kuiper/$version
  123. aws s3 cp --quiet --recursive ./_packages s3://packages.emqx.io/kuiper/$version
  124. aws cloudfront create-invalidation --distribution-id E3TYD0WSP4S14P --paths "/kuiper/$version/*"
  125. - name: update emqx.io
  126. if: github.event_name == 'release'
  127. run: |
  128. version=$(echo ${{ github.ref }} | sed -r "s .*/.*/(.*) \1 g")
  129. curl -w %{http_code} --insecure -H ${{ secrets.EmqxHeader }} https://admin.emqx.io/api/v1/kuiper_github_release_callback?tag=$version
  130. - name: update helm packages
  131. if: github.event_name == 'release'
  132. run: |
  133. version=$(echo ${{ github.ref }} | sed -r "s .*/.*/(.*) \1 g")
  134. curl -H "Authorization: token ${{ secrets.AccessToken }}" -H "Accept: application/vnd.github.everest-preview+json" -H "Content-Type: application/json" -X POST -d "{\"event_type\":\"update_repos_for_kuiper\",\"client_payload\":{\"version\": \"$version\"}}" https://api.github.com/repos/emqx/emqx-packages-docker/dispatches