| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- name: merge
- concurrency:
- group: ${{ github.workflow }}-${{ github.ref }}
- cancel-in-progress: true
- on:
- push:
- branches:
- - 'main'
- tags:
- - 'v*'
- permissions:
- contents: read # to fetch code (actions/checkout)
- env:
- REPO_SLUG: "docker/compose-bin"
- jobs:
- e2e:
- name: Build and test
- runs-on: ${{ matrix.os }}
- timeout-minutes: 15
- strategy:
- fail-fast: false
- matrix:
- os: [desktop-windows, desktop-macos, desktop-m1]
- # mode: [plugin, standalone]
- mode: [plugin]
- env:
- GO111MODULE: "on"
- steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- - uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6
- with:
- go-version-file: '.go-version'
- cache: true
- check-latest: true
- - name: List Docker resources on machine
- run: |
- docker ps --all
- docker volume ls
- docker network ls
- docker image ls
- - name: Remove Docker resources on machine
- continue-on-error: true
- run: |
- docker kill $(docker ps -q)
- docker rm -f $(docker ps -aq)
- docker volume rm -f $(docker volume ls -q)
- docker ps --all
- - name: Unit tests
- run: make test
- - name: Build binaries
- run: |
- make
- - name: Check arch of go compose binary
- run: |
- file ./bin/build/docker-compose
- if: ${{ !contains(matrix.os, 'desktop-windows') }}
- -
- name: Test plugin mode
- if: ${{ matrix.mode == 'plugin' }}
- run: |
- make e2e-compose
- -
- name: Test standalone mode
- if: ${{ matrix.mode == 'standalone' }}
- run: |
- make e2e-compose-standalone
- bin-image-prepare:
- runs-on: ubuntu-24.04
- outputs:
- repo-slug: ${{ env.REPO_SLUG }}
- steps:
- # FIXME: can't use env object in reusable workflow inputs: https://github.com/orgs/community/discussions/26671
- - run: echo "Exposing env vars for reusable workflow"
- bin-image:
- uses: docker/github-builder/.github/workflows/bake.yml@70313223e2665c3211b454b3fea6534624e78d64 # v1.4.0
- needs:
- - bin-image-prepare
- permissions:
- contents: read # same as global permission
- id-token: write # for signing attestation(s) with GitHub OIDC Token
- with:
- runner: amd64
- target: image-cross
- cache: true
- cache-scope: bin-image
- output: image
- push: ${{ github.event_name != 'pull_request' }}
- sbom: true
- set-meta-labels: true
- meta-images: |
- ${{ needs.bin-image-prepare.outputs.repo-slug }}
- meta-tags: |
- type=ref,event=tag
- type=edge
- meta-bake-target: meta-helper
- secrets:
- registry-auths: |
- - registry: docker.io
- username: ${{ secrets.DOCKERPUBLICBOT_USERNAME }}
- password: ${{ secrets.DOCKERPUBLICBOT_WRITE_PAT }}
- desktop-edge-test:
- runs-on: ubuntu-latest
- needs: bin-image
- steps:
- -
- name: Generate Token
- id: generate_token
- uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v3
- with:
- app-id: ${{ vars.DOCKERDESKTOP_APP_ID }}
- private-key: ${{ secrets.DOCKERDESKTOP_APP_PRIVATEKEY }}
- owner: docker
- repositories: |
- ${{ secrets.DOCKERDESKTOP_REPO }}
- -
- name: Trigger Docker Desktop e2e with edge version
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
- with:
- github-token: ${{ steps.generate_token.outputs.token }}
- script: |
- await github.rest.actions.createWorkflowDispatch({
- owner: 'docker',
- repo: '${{ secrets.DOCKERDESKTOP_REPO }}',
- workflow_id: 'compose-edge-integration.yml',
- ref: 'main',
- inputs: {
- "image-tag": "${{ env.REPO_SLUG }}:edge"
- }
- })
|