ci.yml 4.0 KB

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