ci.yml 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  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.17.1
  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.17.1
  32. - name: Build
  33. run: make
  34. linux:
  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.17.1
  42. - name: Build kg and kgctl for all Linux Architectures
  43. run: make all-build
  44. darwin:
  45. runs-on: ubuntu-latest
  46. steps:
  47. - uses: actions/checkout@v2
  48. - name: Set up Go
  49. uses: actions/setup-go@v2
  50. with:
  51. go-version: 1.17.1
  52. - name: Build kgctl for Darwin amd64
  53. run: make OS=darwin ARCH=amd64
  54. - name: Build kgctl for Darwin arm64
  55. run: make OS=darwin ARCH=arm64
  56. windows:
  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.17.1
  64. - name: Build kgctl for Windows
  65. run: make OS=windows
  66. unit:
  67. runs-on: ubuntu-latest
  68. steps:
  69. - uses: actions/checkout@v2
  70. - name: Set up Go
  71. uses: actions/setup-go@v2
  72. with:
  73. go-version: 1.17.1
  74. - name: Run Unit Tests
  75. run: make unit
  76. e2e:
  77. if: github.event_name == 'pull_request'
  78. runs-on: ubuntu-latest
  79. steps:
  80. - uses: actions/checkout@v2
  81. - name: Set up Go
  82. uses: actions/setup-go@v2
  83. with:
  84. go-version: 1.17.1
  85. - name: Run e2e Tests
  86. run: make e2e
  87. lint:
  88. runs-on: ubuntu-latest
  89. steps:
  90. - uses: actions/checkout@v2
  91. - name: Set up Go
  92. uses: actions/setup-go@v2
  93. with:
  94. go-version: 1.17.1
  95. - name: Lint Code
  96. run: make lint
  97. container:
  98. runs-on: ubuntu-latest
  99. steps:
  100. - uses: actions/checkout@v2
  101. - name: Set up Go
  102. uses: actions/setup-go@v2
  103. with:
  104. go-version: 1.17.1
  105. - name: Enable Experimental Docker CLI
  106. run: |
  107. echo $'{\n "experimental": true\n}' | sudo tee /etc/docker/daemon.json
  108. mkdir -p ~/.docker
  109. echo $'{\n "experimental": "enabled"\n}' | sudo tee ~/.docker/config.json
  110. sudo service docker restart
  111. docker version -f '{{.Client.Experimental}}'
  112. docker version -f '{{.Server.Experimental}}'
  113. docker buildx version
  114. - name: Container
  115. run: make container
  116. push:
  117. if: github.event_name != 'pull_request'
  118. needs:
  119. - vendor
  120. - build
  121. - linux
  122. - darwin
  123. - windows
  124. - unit
  125. - lint
  126. - container
  127. runs-on: ubuntu-latest
  128. steps:
  129. - uses: actions/checkout@v2
  130. - name: Set up Go
  131. uses: actions/setup-go@v2
  132. with:
  133. go-version: 1.17.1
  134. - name: Enable Experimental Docker CLI
  135. run: |
  136. echo $'{\n "experimental": true\n}' | sudo tee /etc/docker/daemon.json
  137. mkdir -p ~/.docker
  138. echo $'{\n "experimental": "enabled"\n}' | sudo tee ~/.docker/config.json
  139. sudo service docker restart
  140. docker version -f '{{.Client.Experimental}}'
  141. docker version -f '{{.Server.Experimental}}'
  142. docker buildx version
  143. - name: Set up QEMU
  144. uses: docker/setup-qemu-action@master
  145. with:
  146. platforms: all
  147. - name: Login to DockerHub
  148. if: github.event_name != 'pull_request'
  149. uses: docker/login-action@v1
  150. with:
  151. username: ${{ secrets.DOCKER_USERNAME }}
  152. password: ${{ secrets.DOCKER_PASSWORD }}
  153. - name: Build and push
  154. if: github.event_name != 'pull_request'
  155. run: make manifest
  156. - name: Build and push latest
  157. if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main'
  158. run: make manifest-latest