ci.yml 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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. lint:
  62. runs-on: ubuntu-latest
  63. steps:
  64. - uses: actions/checkout@v2
  65. - name: Set up Go
  66. uses: actions/setup-go@v2
  67. with:
  68. go-version: 1.15.7
  69. - name: Lint Code
  70. run: make lint
  71. container:
  72. runs-on: ubuntu-latest
  73. steps:
  74. - uses: actions/checkout@v2
  75. - name: Set up Go
  76. uses: actions/setup-go@v2
  77. with:
  78. go-version: 1.15.7
  79. - name: Enable Experimental Docker CLI
  80. run: |
  81. echo $'{\n "experimental": true\n}' | sudo tee /etc/docker/daemon.json
  82. mkdir -p ~/.docker
  83. echo $'{\n "experimental": "enabled"\n}' | sudo tee ~/.docker/config.json
  84. sudo service docker restart
  85. docker version -f '{{.Client.Experimental}}'
  86. docker version -f '{{.Server.Experimental}}'
  87. docker buildx version
  88. - name: Container
  89. run: make container
  90. push:
  91. if: github.event_name != 'pull_request'
  92. needs:
  93. - build
  94. - linux
  95. - darwin
  96. - windows
  97. - unit
  98. - lint
  99. - container
  100. runs-on: ubuntu-latest
  101. steps:
  102. - uses: actions/checkout@v2
  103. - name: Set up Go
  104. uses: actions/setup-go@v2
  105. with:
  106. go-version: 1.15.7
  107. - name: Enable Experimental Docker CLI
  108. run: |
  109. echo $'{\n "experimental": true\n}' | sudo tee /etc/docker/daemon.json
  110. mkdir -p ~/.docker
  111. echo $'{\n "experimental": "enabled"\n}' | sudo tee ~/.docker/config.json
  112. sudo service docker restart
  113. docker version -f '{{.Client.Experimental}}'
  114. docker version -f '{{.Server.Experimental}}'
  115. docker buildx version
  116. - name: Set up QEMU
  117. uses: docker/setup-qemu-action@master
  118. with:
  119. platforms: all
  120. - name: Login to DockerHub
  121. if: github.event_name != 'pull_request'
  122. uses: docker/login-action@v1
  123. with:
  124. username: ${{ secrets.DOCKER_USERNAME }}
  125. password: ${{ secrets.DOCKER_PASSWORD }}
  126. - name: Build and push
  127. if: github.event_name != 'pull_request'
  128. run: make manifest
  129. - name: Build and push latest
  130. if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main'
  131. run: make manifest-latest