ci.yml 3.4 KB

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