mirror of
				https://github.com/docker/setup-qemu-action.git
				synced 2025-10-31 17:30:10 +08:00 
			
		
		
		
	Merge pull request #19 from crazy-max/bake
Container based developer flow
This commit is contained in:
		
						commit
						6e477fb1f7
					
				
							
								
								
									
										4
									
								
								.dockerignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								.dockerignore
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | |||||||
|  | /.dev | ||||||
|  | /dist | ||||||
|  | /lib | ||||||
|  | /node_modules | ||||||
							
								
								
									
										13
									
								
								.github/CONTRIBUTING.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								.github/CONTRIBUTING.md
									
									
									
									
										vendored
									
									
								
							| @ -14,6 +14,19 @@ Contributions to this project are [released](https://help.github.com/articles/gi | |||||||
| 7. Push to your fork and [submit a pull request](https://github.com/docker/setup-qemu-action/compare) | 7. Push to your fork and [submit a pull request](https://github.com/docker/setup-qemu-action/compare) | ||||||
| 8. Pat your self on the back and wait for your pull request to be reviewed and merged. | 8. Pat your self on the back and wait for your pull request to be reviewed and merged. | ||||||
| 
 | 
 | ||||||
|  | ## Container based developer flow | ||||||
|  | 
 | ||||||
|  | If you don't want to maintain a Node developer environment that fits this project you can use containerized commands | ||||||
|  | instead of invoking yarn directly. | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | # format code and build javascript artifacts | ||||||
|  | docker buildx bake pre-checkin | ||||||
|  | 
 | ||||||
|  | # validate all code has correctly formatted and built | ||||||
|  | docker buildx bake validate | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
| Here are a few things you can do that will increase the likelihood of your pull request being accepted: | Here are a few things you can do that will increase the likelihood of your pull request being accepted: | ||||||
| 
 | 
 | ||||||
| - Make sure the `README.md` and any other relevant **documentation are kept up-to-date**. | - Make sure the `README.md` and any other relevant **documentation are kept up-to-date**. | ||||||
|  | |||||||
							
								
								
									
										25
									
								
								.github/workflows/validate.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								.github/workflows/validate.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,25 @@ | |||||||
|  | name: validate | ||||||
|  | 
 | ||||||
|  | on: | ||||||
|  |   push: | ||||||
|  |     branches: | ||||||
|  |       - 'master' | ||||||
|  |       - 'releases/v*' | ||||||
|  |     paths-ignore: | ||||||
|  |       - '**.md' | ||||||
|  |   pull_request: | ||||||
|  |     branches: | ||||||
|  |       - 'master' | ||||||
|  |     paths-ignore: | ||||||
|  |       - '**.md' | ||||||
|  | 
 | ||||||
|  | jobs: | ||||||
|  |   validate: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     steps: | ||||||
|  |       - | ||||||
|  |         name: Checkout | ||||||
|  |         uses: actions/checkout@v2 | ||||||
|  |       - | ||||||
|  |         name: Validate | ||||||
|  |         run: docker buildx bake validate | ||||||
							
								
								
									
										41
									
								
								Dockerfile.dev
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								Dockerfile.dev
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,41 @@ | |||||||
|  | #syntax=docker/dockerfile:1.2 | ||||||
|  | 
 | ||||||
|  | FROM node:12 AS deps | ||||||
|  | WORKDIR /src | ||||||
|  | COPY package.json yarn.lock ./ | ||||||
|  | RUN --mount=type=cache,target=/src/node_modules \ | ||||||
|  |   yarn install | ||||||
|  | 
 | ||||||
|  | FROM scratch AS update-yarn | ||||||
|  | COPY --from=deps /src/yarn.lock / | ||||||
|  | 
 | ||||||
|  | FROM deps AS validate-yarn | ||||||
|  | COPY .git .git | ||||||
|  | RUN status=$(git status --porcelain -- yarn.lock); if [ -n "$status" ]; then echo $status; exit 1; fi | ||||||
|  | 
 | ||||||
|  | FROM deps AS base | ||||||
|  | COPY . . | ||||||
|  | 
 | ||||||
|  | FROM base AS build | ||||||
|  | RUN --mount=type=cache,target=/src/node_modules \ | ||||||
|  |   yarn build | ||||||
|  | 
 | ||||||
|  | FROM base AS run-format | ||||||
|  | RUN --mount=type=cache,target=/src/node_modules \ | ||||||
|  |   yarn run format | ||||||
|  | 
 | ||||||
|  | FROM scratch AS format | ||||||
|  | COPY --from=run-format /src/src/*.ts /src/ | ||||||
|  | 
 | ||||||
|  | FROM base AS validate-format | ||||||
|  | RUN --mount=type=cache,target=/src/node_modules \ | ||||||
|  |   yarn run format-check | ||||||
|  | 
 | ||||||
|  | FROM scratch AS dist | ||||||
|  | COPY --from=build /src/dist/ /dist/ | ||||||
|  | 
 | ||||||
|  | FROM build AS validate-build | ||||||
|  | RUN status=$(git status --porcelain -- dist); if [ -n "$status" ]; then echo $status; exit 1; fi | ||||||
|  | 
 | ||||||
|  | FROM base AS dev | ||||||
|  | ENTRYPOINT ["bash"] | ||||||
							
								
								
									
										52
									
								
								docker-bake.hcl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								docker-bake.hcl
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,52 @@ | |||||||
|  | variable "GITHUB_REPOSITORY" { | ||||||
|  |   default = "docker/setup-qemu-action" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | group "default" { | ||||||
|  |   targets = ["build"] | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | group "pre-checkin" { | ||||||
|  |   targets = ["update-yarn", "format", "build"] | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | group "validate" { | ||||||
|  |   targets = ["validate-format", "validate-build", "validate-yarn"] | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | target "dockerfile" { | ||||||
|  |   dockerfile = "Dockerfile.dev" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | target "update-yarn" { | ||||||
|  |   inherits = ["dockerfile"] | ||||||
|  |   target = "update-yarn" | ||||||
|  |   output = ["."] | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | target "build" { | ||||||
|  |   inherits = ["dockerfile"] | ||||||
|  |   target = "dist" | ||||||
|  |   output = ["."] | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | target "format" { | ||||||
|  |   inherits = ["dockerfile"] | ||||||
|  |   target = "format" | ||||||
|  |   output = ["."] | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | target "validate-format" { | ||||||
|  |   inherits = ["dockerfile"] | ||||||
|  |   target = "validate-format" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | target "validate-build" { | ||||||
|  |   inherits = ["dockerfile"] | ||||||
|  |   target = "validate-build" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | target "validate-yarn" { | ||||||
|  |   inherits = ["dockerfile"] | ||||||
|  |   target = "validate-yarn" | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 CrazyMax
						CrazyMax