merge.yml 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. name: merge
  2. concurrency:
  3. group: ${{ github.workflow }}-${{ github.ref }}
  4. cancel-in-progress: true
  5. on:
  6. push:
  7. branches:
  8. - 'v2'
  9. tags:
  10. - 'v*'
  11. permissions:
  12. contents: read # to fetch code (actions/checkout)
  13. env:
  14. REPO_SLUG: "docker/compose-bin"
  15. jobs:
  16. e2e:
  17. name: Build and test
  18. runs-on: ${{ matrix.os }}
  19. timeout-minutes: 15
  20. strategy:
  21. fail-fast: false
  22. matrix:
  23. os: [desktop-windows, desktop-macos, desktop-m1]
  24. # mode: [plugin, standalone]
  25. mode: [plugin]
  26. env:
  27. GO111MODULE: "on"
  28. steps:
  29. - uses: actions/checkout@v3
  30. - uses: actions/setup-go@v3
  31. with:
  32. go-version-file: go.mod
  33. cache: true
  34. check-latest: true
  35. - name: List Docker resources on machine
  36. run: |
  37. docker ps --all
  38. docker volume ls
  39. docker network ls
  40. docker image ls
  41. - name: Remove Docker resources on machine
  42. continue-on-error: true
  43. run: |
  44. docker kill $(docker ps -q)
  45. docker rm -f $(docker ps -aq)
  46. docker volume rm -f $(docker volume ls -q)
  47. docker ps --all
  48. - name: Unit tests
  49. run: make test
  50. - name: Build binaries
  51. run: |
  52. make
  53. - name: Check arch of go compose binary
  54. run: |
  55. file ./bin/build/docker-compose
  56. if: ${{ !contains(matrix.os, 'desktop-windows') }}
  57. -
  58. name: Test plugin mode
  59. if: ${{ matrix.mode == 'plugin' }}
  60. run: |
  61. make e2e-compose
  62. -
  63. name: Test standalone mode
  64. if: ${{ matrix.mode == 'standalone' }}
  65. run: |
  66. make e2e-compose-standalone
  67. bin-image:
  68. runs-on: ubuntu-22.04
  69. steps:
  70. -
  71. name: Checkout
  72. uses: actions/checkout@v3
  73. -
  74. name: Set up QEMU
  75. uses: docker/setup-qemu-action@v2
  76. -
  77. name: Set up Docker Buildx
  78. uses: docker/setup-buildx-action@v2
  79. -
  80. name: Docker meta
  81. id: meta
  82. uses: docker/metadata-action@v4
  83. with:
  84. images: |
  85. ${{ env.REPO_SLUG }}
  86. tags: |
  87. type=ref,event=tag
  88. type=edge
  89. bake-target: meta-helper
  90. -
  91. name: Login to DockerHub
  92. if: github.event_name != 'pull_request'
  93. uses: docker/login-action@v2
  94. with:
  95. username: ${{ secrets.DOCKERPUBLICBOT_USERNAME }}
  96. password: ${{ secrets.DOCKERPUBLICBOT_WRITE_PAT }}
  97. -
  98. name: Build and push image
  99. uses: docker/bake-action@v2
  100. with:
  101. files: |
  102. ./docker-bake.hcl
  103. ${{ steps.meta.outputs.bake-file }}
  104. targets: image-cross
  105. push: ${{ github.event_name != 'pull_request' }}
  106. set: |
  107. *.cache-from=type=gha,scope=bin-image
  108. *.cache-to=type=gha,scope=bin-image,mode=max
  109. *.attest=type=sbom
  110. *.attest=type=provenance,mode=max,builder-id=https://github.com/${{ env.GITHUB_REPOSITORY }}/actions/runs/${{ env.GITHUB_RUN_ID }}