ci.yml 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. name: CI
  2. on:
  3. push:
  4. branches: [ main ]
  5. tags:
  6. - "*"
  7. pull_request:
  8. schedule:
  9. - cron: '0 0 * * *'
  10. workflow_dispatch:
  11. jobs:
  12. vendor:
  13. runs-on: ubuntu-latest
  14. steps:
  15. - uses: actions/checkout@v2
  16. - name: Set up Go
  17. uses: actions/setup-go@v2
  18. with:
  19. go-version: 1.18
  20. - name: Vendor
  21. run: |
  22. make vendor
  23. git diff --exit-code
  24. build:
  25. runs-on: ubuntu-latest
  26. steps:
  27. - uses: actions/checkout@v2
  28. - name: Set up Go
  29. uses: actions/setup-go@v2
  30. with:
  31. go-version: 1.18
  32. - name: Build
  33. run: make
  34. docs:
  35. runs-on: ubuntu-latest
  36. steps:
  37. - uses: actions/checkout@v2
  38. - name: Set up Go
  39. uses: actions/setup-go@v2
  40. with:
  41. go-version: 1.18
  42. - name: Build docs
  43. run: |
  44. make gen-docs
  45. git diff --exit-code
  46. linux:
  47. runs-on: ubuntu-latest
  48. steps:
  49. - uses: actions/checkout@v2
  50. - name: Set up Go
  51. uses: actions/setup-go@v2
  52. with:
  53. go-version: 1.18
  54. - name: Build kg and kgctl for all Linux Architectures
  55. run: make all-build
  56. darwin:
  57. runs-on: ubuntu-latest
  58. steps:
  59. - uses: actions/checkout@v2
  60. - name: Set up Go
  61. uses: actions/setup-go@v2
  62. with:
  63. go-version: 1.18
  64. - name: Build kgctl for Darwin amd64
  65. run: make OS=darwin ARCH=amd64
  66. - name: Build kgctl for Darwin arm64
  67. run: make OS=darwin ARCH=arm64
  68. windows:
  69. runs-on: ubuntu-latest
  70. steps:
  71. - uses: actions/checkout@v2
  72. - name: Set up Go
  73. uses: actions/setup-go@v2
  74. with:
  75. go-version: 1.18
  76. - name: Build kgctl for Windows
  77. run: make OS=windows
  78. unit:
  79. runs-on: ubuntu-latest
  80. steps:
  81. - uses: actions/checkout@v2
  82. - name: Set up Go
  83. uses: actions/setup-go@v2
  84. with:
  85. go-version: 1.18
  86. - name: Run Unit Tests
  87. run: make unit
  88. e2e:
  89. if: github.event_name == 'pull_request'
  90. runs-on: ubuntu-latest
  91. steps:
  92. - uses: actions/checkout@v2
  93. - name: Set up Go
  94. uses: actions/setup-go@v2
  95. with:
  96. go-version: 1.18
  97. - name: Run e2e Tests
  98. run: make e2e
  99. lint:
  100. runs-on: ubuntu-latest
  101. steps:
  102. - uses: actions/checkout@v2
  103. - name: Set up Go
  104. uses: actions/setup-go@v2
  105. with:
  106. go-version: 1.18
  107. - name: Lint Code
  108. run: make lint
  109. container:
  110. runs-on: ubuntu-latest
  111. steps:
  112. - uses: actions/checkout@v2
  113. - name: Set up Go
  114. uses: actions/setup-go@v2
  115. with:
  116. go-version: 1.18
  117. - name: Enable Experimental Docker CLI
  118. run: |
  119. echo $'{\n "experimental": true\n}' | sudo tee /etc/docker/daemon.json
  120. mkdir -p ~/.docker
  121. echo $'{\n "experimental": "enabled"\n}' | sudo tee ~/.docker/config.json
  122. sudo service docker restart
  123. docker version -f '{{.Client.Experimental}}'
  124. docker version -f '{{.Server.Experimental}}'
  125. docker buildx version
  126. - name: Container
  127. run: make container
  128. push:
  129. if: github.event_name != 'pull_request'
  130. needs:
  131. - vendor
  132. - build
  133. - linux
  134. - darwin
  135. - windows
  136. - unit
  137. - lint
  138. - container
  139. runs-on: ubuntu-latest
  140. steps:
  141. - uses: actions/checkout@v2
  142. - name: Set up Go
  143. uses: actions/setup-go@v2
  144. with:
  145. go-version: 1.18
  146. - name: Enable Experimental Docker CLI
  147. run: |
  148. echo $'{\n "experimental": true\n}' | sudo tee /etc/docker/daemon.json
  149. mkdir -p ~/.docker
  150. echo $'{\n "experimental": "enabled"\n}' | sudo tee ~/.docker/config.json
  151. sudo service docker restart
  152. docker version -f '{{.Client.Experimental}}'
  153. docker version -f '{{.Server.Experimental}}'
  154. docker buildx version
  155. - name: Set up QEMU
  156. uses: docker/setup-qemu-action@master
  157. with:
  158. platforms: all
  159. - name: Login to DockerHub
  160. if: github.event_name != 'pull_request'
  161. uses: docker/login-action@v1
  162. with:
  163. username: ${{ secrets.DOCKER_USERNAME }}
  164. password: ${{ secrets.DOCKER_PASSWORD }}
  165. - name: Build and push
  166. if: github.event_name != 'pull_request'
  167. run: make manifest
  168. - name: Build and push latest
  169. if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main'
  170. run: make manifest-latest