ci.yml 3.7 KB

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