ci.yml 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  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.19
  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.19
  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.19
  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.19
  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.19
  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.19
  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.19
  86. - name: Run Unit Tests
  87. run: make unit
  88. e2e:
  89. runs-on: ubuntu-latest
  90. steps:
  91. - uses: actions/checkout@v2
  92. - name: Set up Go
  93. uses: actions/setup-go@v2
  94. with:
  95. go-version: 1.19
  96. - name: Run e2e Tests
  97. run: make e2e
  98. lint:
  99. runs-on: ubuntu-latest
  100. steps:
  101. - uses: actions/checkout@v2
  102. - name: Set up Go
  103. uses: actions/setup-go@v2
  104. with:
  105. go-version: 1.19
  106. - name: Lint Code
  107. run: make lint
  108. container:
  109. runs-on: ubuntu-latest
  110. steps:
  111. - uses: actions/checkout@v2
  112. - name: Set up Go
  113. uses: actions/setup-go@v2
  114. with:
  115. go-version: 1.19
  116. - name: Enable Experimental Docker CLI
  117. run: |
  118. echo $'{\n "experimental": true\n}' | sudo tee /etc/docker/daemon.json
  119. mkdir -p ~/.docker
  120. echo $'{\n "experimental": "enabled"\n}' | sudo tee ~/.docker/config.json
  121. sudo service docker restart
  122. docker version -f '{{.Client.Experimental}}'
  123. docker version -f '{{.Server.Experimental}}'
  124. docker buildx version
  125. - name: Container
  126. run: make container
  127. push:
  128. if: github.event_name != 'pull_request'
  129. needs:
  130. - vendor
  131. - build
  132. - linux
  133. - darwin
  134. - windows
  135. - unit
  136. - lint
  137. - container
  138. runs-on: ubuntu-latest
  139. steps:
  140. - uses: actions/checkout@v2
  141. - name: Set up Go
  142. uses: actions/setup-go@v2
  143. with:
  144. go-version: 1.19
  145. - name: Enable Experimental Docker CLI
  146. run: |
  147. echo $'{\n "experimental": true\n}' | sudo tee /etc/docker/daemon.json
  148. mkdir -p ~/.docker
  149. echo $'{\n "experimental": "enabled"\n}' | sudo tee ~/.docker/config.json
  150. sudo service docker restart
  151. docker version -f '{{.Client.Experimental}}'
  152. docker version -f '{{.Server.Experimental}}'
  153. docker buildx version
  154. - name: Set up QEMU
  155. uses: docker/setup-qemu-action@master
  156. with:
  157. platforms: all
  158. - name: Login to DockerHub
  159. if: github.event_name != 'pull_request'
  160. uses: docker/login-action@v1
  161. with:
  162. username: ${{ secrets.DOCKER_USERNAME }}
  163. password: ${{ secrets.DOCKER_PASSWORD }}
  164. - name: Build and push
  165. if: github.event_name != 'pull_request'
  166. run: make manifest
  167. - name: Build and push latest
  168. if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main'
  169. run: make manifest-latest