merge.yml 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. name: merge
  2. concurrency:
  3. group: ${{ github.workflow }}-${{ github.ref }}
  4. cancel-in-progress: true
  5. on:
  6. push:
  7. branches:
  8. - 'main'
  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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
  30. - uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6
  31. with:
  32. go-version-file: '.go-version'
  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-prepare:
  68. runs-on: ubuntu-24.04
  69. outputs:
  70. repo-slug: ${{ env.REPO_SLUG }}
  71. steps:
  72. # FIXME: can't use env object in reusable workflow inputs: https://github.com/orgs/community/discussions/26671
  73. - run: echo "Exposing env vars for reusable workflow"
  74. bin-image:
  75. uses: docker/github-builder/.github/workflows/bake.yml@70313223e2665c3211b454b3fea6534624e78d64 # v1.4.0
  76. needs:
  77. - bin-image-prepare
  78. permissions:
  79. contents: read # same as global permission
  80. id-token: write # for signing attestation(s) with GitHub OIDC Token
  81. with:
  82. runner: amd64
  83. target: image-cross
  84. cache: true
  85. cache-scope: bin-image
  86. output: image
  87. push: ${{ github.event_name != 'pull_request' }}
  88. sbom: true
  89. set-meta-labels: true
  90. meta-images: |
  91. ${{ needs.bin-image-prepare.outputs.repo-slug }}
  92. meta-tags: |
  93. type=ref,event=tag
  94. type=edge
  95. meta-bake-target: meta-helper
  96. secrets:
  97. registry-auths: |
  98. - registry: docker.io
  99. username: ${{ secrets.DOCKERPUBLICBOT_USERNAME }}
  100. password: ${{ secrets.DOCKERPUBLICBOT_WRITE_PAT }}
  101. desktop-edge-test:
  102. runs-on: ubuntu-latest
  103. needs: bin-image
  104. steps:
  105. -
  106. name: Generate Token
  107. id: generate_token
  108. uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v3
  109. with:
  110. app-id: ${{ vars.DOCKERDESKTOP_APP_ID }}
  111. private-key: ${{ secrets.DOCKERDESKTOP_APP_PRIVATEKEY }}
  112. owner: docker
  113. repositories: |
  114. ${{ secrets.DOCKERDESKTOP_REPO }}
  115. -
  116. name: Trigger Docker Desktop e2e with edge version
  117. uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
  118. with:
  119. github-token: ${{ steps.generate_token.outputs.token }}
  120. script: |
  121. await github.rest.actions.createWorkflowDispatch({
  122. owner: 'docker',
  123. repo: '${{ secrets.DOCKERDESKTOP_REPO }}',
  124. workflow_id: 'compose-edge-integration.yml',
  125. ref: 'main',
  126. inputs: {
  127. "image-tag": "${{ env.REPO_SLUG }}:edge"
  128. }
  129. })