ci.yml 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  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@v3
  16. - name: Set up Go
  17. uses: actions/setup-go@v4
  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@v3
  28. - name: Set up Go
  29. uses: actions/setup-go@v4
  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@v3
  38. - name: Set up Go
  39. uses: actions/setup-go@v4
  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@v3
  50. - name: Set up Go
  51. uses: actions/setup-go@v4
  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@v3
  60. - name: Set up Go
  61. uses: actions/setup-go@v4
  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@v3
  72. - name: Set up Go
  73. uses: actions/setup-go@v4
  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@v3
  82. - name: Set up Go
  83. uses: actions/setup-go@v4
  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@v3
  92. - name: Set up Go
  93. uses: actions/setup-go@v4
  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@v3
  102. - name: Set up Go
  103. uses: actions/setup-go@v4
  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@v3
  112. - name: Set up Go
  113. uses: actions/setup-go@v4
  114. with:
  115. go-version: 1.19
  116. - name: Container
  117. run: make container
  118. push:
  119. if: github.event_name != 'pull_request'
  120. needs:
  121. - vendor
  122. - build
  123. - linux
  124. - darwin
  125. - windows
  126. - unit
  127. - lint
  128. - container
  129. runs-on: ubuntu-latest
  130. steps:
  131. - uses: actions/checkout@v3
  132. - name: Set up Go
  133. uses: actions/setup-go@v4
  134. with:
  135. go-version: 1.19
  136. - name: Set up QEMU
  137. uses: docker/setup-qemu-action@v2
  138. with:
  139. platforms: all
  140. - name: Login to DockerHub
  141. if: github.event_name != 'pull_request'
  142. uses: docker/login-action@v2
  143. with:
  144. username: ${{ secrets.DOCKER_USERNAME }}
  145. password: ${{ secrets.DOCKER_PASSWORD }}
  146. - name: Build and push
  147. if: github.event_name != 'pull_request'
  148. run: make manifest
  149. - name: Build and push latest
  150. if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main'
  151. run: make manifest-latest