mirror of
				https://gitea.com/docker/build-push-action.git
				synced 2025-10-31 09:08:18 +07:00 
			
		
		
		
	Add GitHub cache example
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									fbd19d2677
								
							
						
					
					
						commit
						c124ff0226
					
				
							
								
								
									
										62
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										62
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							| @ -123,6 +123,68 @@ jobs: | |||||||
|         if: always() |         if: always() | ||||||
|         uses: crazy-max/ghaction-dump-context@v1 |         uses: crazy-max/ghaction-dump-context@v1 | ||||||
| 
 | 
 | ||||||
|  |   github-cache: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     steps: | ||||||
|  |       - | ||||||
|  |         name: Run local registry | ||||||
|  |         run: | | ||||||
|  |           docker run -d -p 5000:5000 registry:2 | ||||||
|  |       - | ||||||
|  |         name: Checkout | ||||||
|  |         uses: actions/checkout@v2.3.1 | ||||||
|  |       - | ||||||
|  |         name: Set up QEMU | ||||||
|  |         uses: docker/setup-qemu-action@master | ||||||
|  |         with: | ||||||
|  |           platforms: all | ||||||
|  |       - | ||||||
|  |         name: Set up Docker Buildx | ||||||
|  |         id: buildx | ||||||
|  |         uses: docker/setup-buildx-action@master | ||||||
|  |         with: | ||||||
|  |           driver-opt: network=host | ||||||
|  |           buildkitd-flags: --allow-insecure-entitlement security.insecure | ||||||
|  |       - | ||||||
|  |         name: Cache Docker layers | ||||||
|  |         uses: actions/cache@v2 | ||||||
|  |         id: cache | ||||||
|  |         with: | ||||||
|  |           path: /tmp/.buildx-cache | ||||||
|  |           key: ${{ runner.os }}-buildx-${{ github.sha }} | ||||||
|  |           restore-keys: | | ||||||
|  |             ${{ runner.os }}-buildx- | ||||||
|  |       - | ||||||
|  |         name: Build and push | ||||||
|  |         id: docker_build | ||||||
|  |         uses: ./ | ||||||
|  |         with: | ||||||
|  |           context: ./test | ||||||
|  |           file: ./test/Dockerfile-multi-golang | ||||||
|  |           builder: ${{ steps.buildx.outputs.name }} | ||||||
|  |           platforms: linux/amd64,linux/arm64 | ||||||
|  |           allow: network.host,security.insecure | ||||||
|  |           push: true | ||||||
|  |           tags: | | ||||||
|  |             localhost:5000/name/app:latest | ||||||
|  |             localhost:5000/name/app:1.0.0 | ||||||
|  |           cache-from: type=local,src=/tmp/.buildx-cache | ||||||
|  |           cache-to: type=local,dest=/tmp/.buildx-cache | ||||||
|  |       - | ||||||
|  |         name: Inspect | ||||||
|  |         run: | | ||||||
|  |           docker buildx imagetools inspect localhost:5000/name/app:1.0.0 | ||||||
|  |       - | ||||||
|  |         name: Image digest | ||||||
|  |         run: echo ${{ steps.docker_build.outputs.digest }} | ||||||
|  |       - | ||||||
|  |         name: Cache hit | ||||||
|  |         run: echo ${{ steps.cache.outputs.cache-hit }} | ||||||
|  |       - | ||||||
|  |         name: Dump context | ||||||
|  |         if: always() | ||||||
|  |         uses: crazy-max/ghaction-dump-context@v1 | ||||||
|  | 
 | ||||||
|   git-context: |   git-context: | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     strategy: |     strategy: | ||||||
|  | |||||||
							
								
								
									
										80
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										80
									
								
								README.md
									
									
									
									
									
								
							| @ -7,8 +7,10 @@ | |||||||
| 
 | 
 | ||||||
| GitHub Action to build and push Docker images. | GitHub Action to build and push Docker images. | ||||||
| 
 | 
 | ||||||
| > :bulb: See also our [setup-buildx](https://github.com/docker/setup-buildx-action) | > :bulb: See also: | ||||||
| > and [setup-qemu](https://github.com/docker/setup-qemu-action) actions | > * [login](https://github.com/docker/login-action) action | ||||||
|  | > * [setup-buildx](https://github.com/docker/setup-buildx-action) action | ||||||
|  | > * [setup-qemu](https://github.com/docker/setup-qemu-action) action | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| 
 | 
 | ||||||
| @ -18,6 +20,7 @@ ___ | |||||||
|   * [Quick start](#quick-start) |   * [Quick start](#quick-start) | ||||||
|   * [Multi-platform image](#multi-platform-image) |   * [Multi-platform image](#multi-platform-image) | ||||||
|   * [Git context](#git-context) |   * [Git context](#git-context) | ||||||
|  |   * [Leverage GitHub cache](#leverage-github-cache) | ||||||
|   * [Complete workflow](#complete-workflow) |   * [Complete workflow](#complete-workflow) | ||||||
| * [Customizing](#customizing) | * [Customizing](#customizing) | ||||||
|   * [inputs](#inputs) |   * [inputs](#inputs) | ||||||
| @ -51,13 +54,13 @@ jobs: | |||||||
|         uses: actions/checkout@v2 |         uses: actions/checkout@v2 | ||||||
|       - |       - | ||||||
|         name: Set up QEMU |         name: Set up QEMU | ||||||
|         uses: docker/setup-qemu-action@v1 |         uses: docker/setup-qemu-action@master | ||||||
|         with: |         with: | ||||||
|           platforms: all |           platforms: all | ||||||
|       - |       - | ||||||
|         name: Set up Docker Buildx |         name: Set up Docker Buildx | ||||||
|         id: buildx |         id: buildx | ||||||
|         uses: docker/setup-buildx-action@v1 |         uses: docker/setup-buildx-action@master | ||||||
|       - |       - | ||||||
|         name: Login to DockerHub |         name: Login to DockerHub | ||||||
|         uses: docker/login-action@v1  |         uses: docker/login-action@v1  | ||||||
| @ -95,13 +98,13 @@ jobs: | |||||||
|         uses: actions/checkout@v2 |         uses: actions/checkout@v2 | ||||||
|       - |       - | ||||||
|         name: Set up QEMU |         name: Set up QEMU | ||||||
|         uses: docker/setup-qemu-action@v1 |         uses: docker/setup-qemu-action@master | ||||||
|         with: |         with: | ||||||
|           platforms: all |           platforms: all | ||||||
|       - |       - | ||||||
|         name: Set up Docker Buildx |         name: Set up Docker Buildx | ||||||
|         id: buildx |         id: buildx | ||||||
|         uses: docker/setup-buildx-action@v1 |         uses: docker/setup-buildx-action@master | ||||||
|       - |       - | ||||||
|         name: Login to DockerHub |         name: Login to DockerHub | ||||||
|         uses: docker/login-action@v1  |         uses: docker/login-action@v1  | ||||||
| @ -140,13 +143,13 @@ jobs: | |||||||
|     steps: |     steps: | ||||||
|       - |       - | ||||||
|         name: Set up QEMU |         name: Set up QEMU | ||||||
|         uses: docker/setup-qemu-action@v1 |         uses: docker/setup-qemu-action@master | ||||||
|         with: |         with: | ||||||
|           platforms: all |           platforms: all | ||||||
|       - |       - | ||||||
|         name: Set up Docker Buildx |         name: Set up Docker Buildx | ||||||
|         id: buildx |         id: buildx | ||||||
|         uses: docker/setup-buildx-action@v1 |         uses: docker/setup-buildx-action@master | ||||||
|         with: |         with: | ||||||
|           version: latest |           version: latest | ||||||
|       - |       - | ||||||
| @ -170,6 +173,63 @@ jobs: | |||||||
|           GIT_AUTH_TOKEN: ${{ github.token }} |           GIT_AUTH_TOKEN: ${{ github.token }} | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | ### Leverage GitHub cache | ||||||
|  | 
 | ||||||
|  | You can leverage [GitHub cache](https://docs.github.com/en/actions/configuring-and-managing-workflows/caching-dependencies-to-speed-up-workflows) | ||||||
|  | using [@actions/cache](https://github.com/actions/cache) with this action. | ||||||
|  | 
 | ||||||
|  | ```yaml | ||||||
|  | name: ci | ||||||
|  | 
 | ||||||
|  | on: | ||||||
|  |   push: | ||||||
|  |     branches: master | ||||||
|  | 
 | ||||||
|  | jobs: | ||||||
|  |   main: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     steps: | ||||||
|  |       - | ||||||
|  |         name: Checkout | ||||||
|  |         uses: actions/checkout@v2 | ||||||
|  |       - | ||||||
|  |         name: Set up QEMU | ||||||
|  |         uses: docker/setup-qemu-action@master | ||||||
|  |         with: | ||||||
|  |           platforms: all | ||||||
|  |       - | ||||||
|  |         name: Set up Docker Buildx | ||||||
|  |         id: buildx | ||||||
|  |         uses: docker/setup-buildx-action@master | ||||||
|  |       - | ||||||
|  |         name: Cache Docker layers | ||||||
|  |         uses: actions/cache@v2 | ||||||
|  |         with: | ||||||
|  |           path: /tmp/.buildx-cache | ||||||
|  |           key: ${{ runner.os }}-buildx-${{ github.sha }} | ||||||
|  |           restore-keys: | | ||||||
|  |             ${{ runner.os }}-buildx- | ||||||
|  |       - | ||||||
|  |         name: Login to DockerHub | ||||||
|  |         uses: docker/login-action@v1  | ||||||
|  |         with: | ||||||
|  |           username: ${{ secrets.DOCKER_USERNAME }} | ||||||
|  |           password: ${{ secrets.DOCKER_PASSWORD }} | ||||||
|  |       - | ||||||
|  |         name: Build and push | ||||||
|  |         id: docker_build | ||||||
|  |         uses: docker/build-push-action@v2 | ||||||
|  |         with: | ||||||
|  |           builder: ${{ steps.buildx.outputs.name }} | ||||||
|  |           push: true | ||||||
|  |           tags: user/app:latest | ||||||
|  |           cache-from: type=local,src=/tmp/.buildx-cache | ||||||
|  |           cache-to: type=local,dest=/tmp/.buildx-cache | ||||||
|  |       - | ||||||
|  |         name: Image digest | ||||||
|  |         run: echo ${{ steps.docker_build.outputs.digest }} | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
| ### Complete workflow | ### Complete workflow | ||||||
| 
 | 
 | ||||||
| * On `pull_request` event, Docker image `name/app:edge` is **built**. | * On `pull_request` event, Docker image `name/app:edge` is **built**. | ||||||
| @ -216,13 +276,13 @@ jobs: | |||||||
|           echo ::set-output name=tags::${TAGS} |           echo ::set-output name=tags::${TAGS} | ||||||
|       - |       - | ||||||
|         name: Set up QEMU |         name: Set up QEMU | ||||||
|         uses: docker/setup-qemu-action@v1 |         uses: docker/setup-qemu-action@master | ||||||
|         with: |         with: | ||||||
|           platforms: all |           platforms: all | ||||||
|       - |       - | ||||||
|         name: Set up Docker Buildx |         name: Set up Docker Buildx | ||||||
|         id: buildx |         id: buildx | ||||||
|         uses: docker/setup-buildx-action@v1 |         uses: docker/setup-buildx-action@master | ||||||
|       - |       - | ||||||
|         name: Login to DockerHub |         name: Login to DockerHub | ||||||
|         if: github.event_name != 'pull_request' |         if: github.event_name != 'pull_request' | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user