ci.yml 3.6 KB

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