mirror of
				https://github.com/crazy-max/ghaction-upx.git
				synced 2025-11-03 12:38:12 -07:00 
			
		
		
		
	Enhance workflow (#141)
Co-authored-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									4910783e91
								
							
						
					
					
						commit
						7070b31d6a
					
				@ -1,6 +1,2 @@
 | 
				
			|||||||
/.dev
 | 
					 | 
				
			||||||
/coverage
 | 
					/coverage
 | 
				
			||||||
/dist
 | 
					 | 
				
			||||||
/lib
 | 
					 | 
				
			||||||
/node_modules
 | 
					/node_modules
 | 
				
			||||||
/.env
 | 
					 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										18
									
								
								.github/CONTRIBUTING.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								.github/CONTRIBUTING.md
									
									
									
									
										vendored
									
									
								
							@ -2,18 +2,20 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great.
 | 
					Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Contributions to this project are [released](https://help.github.com/articles/github-terms-of-service/#6-contributions-under-repository-license) to the public under the [project's open source license](LICENSE).
 | 
					Contributions to this project are [released](https://docs.github.com/en/github/site-policy/github-terms-of-service#6-contributions-under-repository-license)
 | 
				
			||||||
 | 
					to the public under the [project's open source license](LICENSE).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Submitting a pull request
 | 
					## Submitting a pull request
 | 
				
			||||||
 | 
					
 | 
				
			||||||
1. [Fork](https://github.com/crazy-max/ghaction-upx/fork) and clone the repository
 | 
					1. [Fork](https://github.com/crazy-max/ghaction-upx/fork) and clone the repository
 | 
				
			||||||
2. Configure and install the dependencies locally: `yarn install`
 | 
					2. Configure and install the dependencies: `yarn install`
 | 
				
			||||||
3. Create a new branch: `git checkout -b my-branch-name`
 | 
					3. Create a new branch: `git checkout -b my-branch-name`
 | 
				
			||||||
4. Make your changes
 | 
					4. Make your changes
 | 
				
			||||||
5. Format code and build javascript artifacts: `docker buildx bake pre-checkin`
 | 
					5. Make sure the tests pass: `docker buildx bake test`
 | 
				
			||||||
6. Validate all code has correctly formatted and built: `docker buildx bake validate`
 | 
					6. Format code and build javascript artifacts: `docker buildx bake pre-checkin`
 | 
				
			||||||
7. Push to your fork and [submit a pull request](https://github.com/crazy-max/ghaction-upx/compare)
 | 
					7. Validate all code has correctly formatted and built: `docker buildx bake validate`
 | 
				
			||||||
8. Pat your self on the back and wait for your pull request to be reviewed and merged.
 | 
					8. Push to your fork and [submit a pull request](https://github.com/crazy-max/ghaction-upx/compare)
 | 
				
			||||||
 | 
					9. Pat your self on the back and wait for your pull request to be reviewed and merged.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
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:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -26,5 +28,5 @@ Here are a few things you can do that will increase the likelihood of your pull
 | 
				
			|||||||
## Resources
 | 
					## Resources
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/)
 | 
					- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/)
 | 
				
			||||||
- [Using Pull Requests](https://help.github.com/articles/about-pull-requests/)
 | 
					- [Using Pull Requests](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests)
 | 
				
			||||||
- [GitHub Help](https://help.github.com)
 | 
					- [GitHub Help](https://docs.github.com/en)
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										3
									
								
								.github/ISSUE_TEMPLATE/bug_report.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/ISSUE_TEMPLATE/bug_report.md
									
									
									
									
										vendored
									
									
								
							@ -30,4 +30,5 @@ about: Create a report to help us improve
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
### Logs
 | 
					### Logs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
> Download the [log file of your build](https://help.github.com/en/actions/configuring-and-managing-workflows/managing-a-workflow-run#downloading-logs) and [attach it](https://help.github.com/en/github/managing-your-work-on-github/file-attachments-on-issues-and-pull-requests) to this issue.
 | 
					> Download the [log file of your build](https://docs.github.com/en/actions/managing-workflow-runs/using-workflow-run-logs#downloading-logs)
 | 
				
			||||||
 | 
					> and [attach it](https://docs.github.com/en/github/managing-your-work-on-github/file-attachments-on-issues-and-pull-requests) to this issue.
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										6
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							@ -7,14 +7,12 @@ on:
 | 
				
			|||||||
    branches:
 | 
					    branches:
 | 
				
			||||||
      - 'master'
 | 
					      - 'master'
 | 
				
			||||||
      - 'releases/v*'
 | 
					      - 'releases/v*'
 | 
				
			||||||
    paths-ignore:
 | 
					    tags:
 | 
				
			||||||
      - '**.md'
 | 
					      - 'v*'
 | 
				
			||||||
  pull_request:
 | 
					  pull_request:
 | 
				
			||||||
    branches:
 | 
					    branches:
 | 
				
			||||||
      - 'master'
 | 
					      - 'master'
 | 
				
			||||||
      - 'releases/v*'
 | 
					      - 'releases/v*'
 | 
				
			||||||
    paths-ignore:
 | 
					 | 
				
			||||||
      - '**.md'
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  ci:
 | 
					  ci:
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										28
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							@ -5,24 +5,18 @@ on:
 | 
				
			|||||||
    branches:
 | 
					    branches:
 | 
				
			||||||
      - 'master'
 | 
					      - 'master'
 | 
				
			||||||
      - 'releases/v*'
 | 
					      - 'releases/v*'
 | 
				
			||||||
    paths-ignore:
 | 
					 | 
				
			||||||
      - '**.md'
 | 
					 | 
				
			||||||
  pull_request:
 | 
					  pull_request:
 | 
				
			||||||
    branches:
 | 
					    branches:
 | 
				
			||||||
      - 'master'
 | 
					      - 'master'
 | 
				
			||||||
      - 'releases/v*'
 | 
					      - 'releases/v*'
 | 
				
			||||||
    paths-ignore:
 | 
					 | 
				
			||||||
      - '**.md'
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  test-containerized:
 | 
					  test:
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      -
 | 
					      -
 | 
				
			||||||
        name: Checkout
 | 
					        name: Checkout
 | 
				
			||||||
        uses: actions/checkout@v2
 | 
					        uses: actions/checkout@v2
 | 
				
			||||||
        with:
 | 
					 | 
				
			||||||
          fetch-depth: 0
 | 
					 | 
				
			||||||
      -
 | 
					      -
 | 
				
			||||||
        name: Validate
 | 
					        name: Validate
 | 
				
			||||||
        uses: docker/bake-action@v1
 | 
					        uses: docker/bake-action@v1
 | 
				
			||||||
@ -33,28 +27,8 @@ jobs:
 | 
				
			|||||||
        uses: docker/bake-action@v1
 | 
					        uses: docker/bake-action@v1
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
          targets: test
 | 
					          targets: test
 | 
				
			||||||
 | 
					 | 
				
			||||||
  test:
 | 
					 | 
				
			||||||
    runs-on: ${{ matrix.os }}
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      fail-fast: false
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        os:
 | 
					 | 
				
			||||||
          - ubuntu-latest
 | 
					 | 
				
			||||||
          - windows-latest
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
      -
 | 
					 | 
				
			||||||
        name: Checkout
 | 
					 | 
				
			||||||
        uses: actions/checkout@v2
 | 
					 | 
				
			||||||
      -
 | 
					 | 
				
			||||||
        name: Install
 | 
					 | 
				
			||||||
        run: yarn install
 | 
					 | 
				
			||||||
      -
 | 
					 | 
				
			||||||
        name: Test
 | 
					 | 
				
			||||||
        run: yarn run test
 | 
					 | 
				
			||||||
      -
 | 
					      -
 | 
				
			||||||
        name: Upload coverage
 | 
					        name: Upload coverage
 | 
				
			||||||
        uses: codecov/codecov-action@v1
 | 
					        uses: codecov/codecov-action@v1
 | 
				
			||||||
        if: success()
 | 
					 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
          file: ./coverage/clover.xml
 | 
					          file: ./coverage/clover.xml
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,11 @@
 | 
				
			|||||||
variable "GITHUB_REPOSITORY" {
 | 
					variable "NODE_VERSION" {
 | 
				
			||||||
  default = "crazy-max/ghaction-upx"
 | 
					  default = "12"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					target "node-version" {
 | 
				
			||||||
 | 
					  args = {
 | 
				
			||||||
 | 
					    NODE_VERSION = NODE_VERSION
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
group "default" {
 | 
					group "default" {
 | 
				
			||||||
@ -7,51 +13,55 @@ group "default" {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
group "pre-checkin" {
 | 
					group "pre-checkin" {
 | 
				
			||||||
  targets = ["update-yarn", "format", "build"]
 | 
					  targets = ["vendor-update", "format", "build"]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
group "validate" {
 | 
					group "validate" {
 | 
				
			||||||
  targets = ["validate-format", "validate-build", "validate-yarn"]
 | 
					  targets = ["format-validate", "build-validate", "vendor-validate"]
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
target "dockerfile" {
 | 
					 | 
				
			||||||
  dockerfile = "dev.Dockerfile"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
target "update-yarn" {
 | 
					 | 
				
			||||||
  inherits = ["dockerfile"]
 | 
					 | 
				
			||||||
  target = "update-yarn"
 | 
					 | 
				
			||||||
  output = ["."]
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
target "build" {
 | 
					target "build" {
 | 
				
			||||||
  inherits = ["dockerfile"]
 | 
					  inherits = ["node-version"]
 | 
				
			||||||
  target = "dist"
 | 
					  dockerfile = "./hack/build.Dockerfile"
 | 
				
			||||||
 | 
					  target = "build-update"
 | 
				
			||||||
  output = ["."]
 | 
					  output = ["."]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
target "test" {
 | 
					target "build-validate" {
 | 
				
			||||||
  inherits = ["dockerfile"]
 | 
					  inherits = ["node-version"]
 | 
				
			||||||
  target = "test"
 | 
					  dockerfile = "./hack/build.Dockerfile"
 | 
				
			||||||
 | 
					  target = "build-validate"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
target "format" {
 | 
					target "format" {
 | 
				
			||||||
  inherits = ["dockerfile"]
 | 
					  inherits = ["node-version"]
 | 
				
			||||||
  target = "format"
 | 
					  dockerfile = "./hack/build.Dockerfile"
 | 
				
			||||||
 | 
					  target = "format-update"
 | 
				
			||||||
  output = ["."]
 | 
					  output = ["."]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
target "validate-format" {
 | 
					target "format-validate" {
 | 
				
			||||||
  inherits = ["dockerfile"]
 | 
					  inherits = ["node-version"]
 | 
				
			||||||
  target = "validate-format"
 | 
					  dockerfile = "./hack/build.Dockerfile"
 | 
				
			||||||
 | 
					  target = "format-validate"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
target "validate-build" {
 | 
					target "vendor-update" {
 | 
				
			||||||
  inherits = ["dockerfile"]
 | 
					  inherits = ["node-version"]
 | 
				
			||||||
  target = "validate-build"
 | 
					  dockerfile = "./hack/vendor.Dockerfile"
 | 
				
			||||||
 | 
					  target = "update"
 | 
				
			||||||
 | 
					  output = ["."]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
target "validate-yarn" {
 | 
					target "vendor-validate" {
 | 
				
			||||||
  inherits = ["dockerfile"]
 | 
					  inherits = ["node-version"]
 | 
				
			||||||
  target = "validate-yarn"
 | 
					  dockerfile = "./hack/vendor.Dockerfile"
 | 
				
			||||||
 | 
					  target = "validate"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					target "test" {
 | 
				
			||||||
 | 
					  inherits = ["node-version"]
 | 
				
			||||||
 | 
					  dockerfile = "./hack/test.Dockerfile"
 | 
				
			||||||
 | 
					  target = "test-coverage"
 | 
				
			||||||
 | 
					  output = ["./coverage"]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										42
									
								
								hack/build.Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								hack/build.Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					# syntax=docker/dockerfile:1.2
 | 
				
			||||||
 | 
					ARG NODE_VERSION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM node:${NODE_VERSION}-alpine AS base
 | 
				
			||||||
 | 
					RUN apk add --no-cache cpio findutils git
 | 
				
			||||||
 | 
					WORKDIR /src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM base AS deps
 | 
				
			||||||
 | 
					RUN --mount=type=bind,target=.,rw \
 | 
				
			||||||
 | 
					  --mount=type=cache,target=/src/node_modules \
 | 
				
			||||||
 | 
					  yarn install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM deps AS build
 | 
				
			||||||
 | 
					RUN --mount=type=bind,target=.,rw \
 | 
				
			||||||
 | 
					  --mount=type=cache,target=/src/node_modules \
 | 
				
			||||||
 | 
					  yarn run build && mkdir /out && cp -Rf dist /out/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM scratch AS build-update
 | 
				
			||||||
 | 
					COPY --from=build /out /
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM build AS build-validate
 | 
				
			||||||
 | 
					RUN --mount=type=bind,target=.,rw \
 | 
				
			||||||
 | 
					  git add -A && cp -rf /out/* .; \
 | 
				
			||||||
 | 
					  if [ -n "$(git status --porcelain -- dist)" ]; then \
 | 
				
			||||||
 | 
					    echo >&2 'ERROR: Build result differs. Please build first with "docker buildx bake build"'; \
 | 
				
			||||||
 | 
					    git status --porcelain -- dist; \
 | 
				
			||||||
 | 
					    exit 1; \
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM deps AS format
 | 
				
			||||||
 | 
					RUN --mount=type=bind,target=.,rw \
 | 
				
			||||||
 | 
					  --mount=type=cache,target=/src/node_modules \
 | 
				
			||||||
 | 
					  yarn run format \
 | 
				
			||||||
 | 
					  && mkdir /out && find . -name '*.ts' -not -path './node_modules/*' | cpio -pdm /out
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM scratch AS format-update
 | 
				
			||||||
 | 
					COPY --from=format /out /
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM deps AS format-validate
 | 
				
			||||||
 | 
					RUN --mount=type=bind,target=.,rw \
 | 
				
			||||||
 | 
					  --mount=type=cache,target=/src/node_modules \
 | 
				
			||||||
 | 
					  yarn run format-check \
 | 
				
			||||||
							
								
								
									
										21
									
								
								hack/test.Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								hack/test.Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					# syntax=docker/dockerfile:1.2
 | 
				
			||||||
 | 
					ARG NODE_VERSION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM node:${NODE_VERSION}-alpine AS base
 | 
				
			||||||
 | 
					RUN apk add --no-cache git
 | 
				
			||||||
 | 
					WORKDIR /src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM base AS deps
 | 
				
			||||||
 | 
					RUN --mount=type=bind,target=.,rw \
 | 
				
			||||||
 | 
					  --mount=type=cache,target=/src/node_modules \
 | 
				
			||||||
 | 
					  yarn install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM deps AS test
 | 
				
			||||||
 | 
					ENV RUNNER_TEMP=/tmp/github_runner
 | 
				
			||||||
 | 
					ENV RUNNER_TOOL_CACHE=/tmp/github_tool_cache
 | 
				
			||||||
 | 
					RUN --mount=type=bind,target=.,rw \
 | 
				
			||||||
 | 
					  --mount=type=cache,target=/src/node_modules \
 | 
				
			||||||
 | 
					  yarn run test --coverageDirectory=/tmp/coverage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM scratch AS test-coverage
 | 
				
			||||||
 | 
					COPY --from=test /tmp/coverage /
 | 
				
			||||||
							
								
								
									
										23
									
								
								hack/vendor.Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								hack/vendor.Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					# syntax=docker/dockerfile:1.2
 | 
				
			||||||
 | 
					ARG NODE_VERSION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM node:${NODE_VERSION}-alpine AS base
 | 
				
			||||||
 | 
					RUN apk add --no-cache git
 | 
				
			||||||
 | 
					WORKDIR /src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM base AS vendored
 | 
				
			||||||
 | 
					RUN --mount=type=bind,target=.,rw \
 | 
				
			||||||
 | 
					  --mount=type=cache,target=/src/node_modules \
 | 
				
			||||||
 | 
					  yarn install && mkdir /out && cp yarn.lock /out
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM scratch AS update
 | 
				
			||||||
 | 
					COPY --from=vendored /out /
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM vendored AS validate
 | 
				
			||||||
 | 
					RUN --mount=type=bind,target=.,rw \
 | 
				
			||||||
 | 
					  git add -A && cp -rf /out/* .; \
 | 
				
			||||||
 | 
					  if [ -n "$(git status --porcelain -- yarn.lock)" ]; then \
 | 
				
			||||||
 | 
					    echo >&2 'ERROR: Vendor result differs. Please vendor your package with "docker buildx bake vendor-update"'; \
 | 
				
			||||||
 | 
					    git status --porcelain -- yarn.lock; \
 | 
				
			||||||
 | 
					    exit 1; \
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user