mirror of
https://github.com/docker/setup-docker-action.git
synced 2026-11-08 09:01:40 +05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1a6edb0ba9 | ||
|
|
1c63d0a9bc | ||
|
|
36efcb97db | ||
|
|
61e47f647f | ||
|
|
64e9804c90 | ||
|
|
ca54cb1e9e | ||
|
|
2d1c601523 | ||
|
|
87e5e87f0e | ||
|
|
c5620aed45 | ||
|
|
76747bc859 | ||
|
|
ba311ac264 | ||
|
|
817f81dc01 | ||
|
|
f524fc8e8f | ||
|
|
d628ef03a6 | ||
|
|
bd87803de9 | ||
|
|
d758fac2f6 | ||
|
|
994ca6a470 | ||
|
|
567531d87b | ||
|
|
9ba91cefb5 | ||
|
|
73dd80d85e | ||
|
|
6d927c4c13 | ||
|
|
48428700fb | ||
|
|
206b75dbd2 | ||
|
|
c5226a330b | ||
|
|
7ca7d98ba6 | ||
|
|
44cc003740 | ||
|
|
992974e691 | ||
|
|
1d3903993e | ||
|
|
dabbf8396d | ||
|
|
e43656e248 | ||
|
|
51b16473d8 | ||
|
|
34fbc53a71 | ||
|
|
ec52bdf18d | ||
|
|
c2e06996ea | ||
|
|
02a35a12bc | ||
|
|
1d30751f7d | ||
|
|
20e0c03a8d | ||
|
|
069eb67b1b | ||
|
|
c17c6939ae | ||
|
|
42e161ad30 | ||
|
|
37fd203c16 | ||
|
|
c33cda087a | ||
|
|
714148933e | ||
|
|
56702790ee | ||
|
|
b989044537 | ||
|
|
f2e530b12f | ||
|
|
db7d380101 | ||
|
|
e61617a16c | ||
|
|
4d3a27b3a8 | ||
|
|
84eefba60b | ||
|
|
71cca025e9 | ||
|
|
beedf3fcfc | ||
|
|
efe9e3891a | ||
|
|
78e4df2bef | ||
|
|
9321b687cf | ||
|
|
276a2f38a4 | ||
|
|
4160483120 | ||
|
|
b71d5ee00d | ||
|
|
d3f310eaa3 | ||
|
|
c8283cc2af | ||
|
|
3fb92d6d9c | ||
|
|
138843162e | ||
|
|
4d8e316444 | ||
|
|
13bc64bf22 | ||
|
|
9b44f456e3 | ||
|
|
db9988d080 | ||
|
|
80ba8d8f5f | ||
|
|
48f9dddab2 | ||
|
|
746efa2ccb | ||
|
|
46897a6289 | ||
|
|
74ac62f5d7 | ||
|
|
a4da7e5ab9 | ||
|
|
8f22df35b2 | ||
|
|
d2d8fc9bf5 | ||
|
|
de8d0f39ec | ||
|
|
0d6d6d60ff | ||
|
|
29412e2cf6 | ||
|
|
59de7d6072 | ||
|
|
7fa26c3c14 | ||
|
|
3072e160e1 | ||
|
|
efe6ba76e3 | ||
|
|
1211ebfa1f | ||
|
|
63f2e57f85 | ||
|
|
b7bb1d4426 | ||
|
|
7db77378a9 | ||
|
|
2d89c571bd | ||
|
|
f27261ca18 | ||
|
|
a39f563e16 | ||
|
|
54c51f4ee8 | ||
|
|
364f5e215c | ||
|
|
b60f85385d | ||
|
|
643c69a8cb | ||
|
|
5c724e91b0 | ||
|
|
c2d73c1a11 | ||
|
|
bb512e8cb4 | ||
|
|
36de8cc80a | ||
|
|
f96ea45537 | ||
|
|
6b291a174a | ||
|
|
d44b774c56 | ||
|
|
057bfa9666 | ||
|
|
0f738e9bf9 | ||
|
|
a329cfc112 | ||
|
|
979ffe9e09 | ||
|
|
847482916a | ||
|
|
d6e275d4ff | ||
|
|
370a7dad4b | ||
|
|
23c3839175 | ||
|
|
b814c39737 | ||
|
|
75153b5b5e | ||
|
|
3a56725668 | ||
|
|
fde3095c59 | ||
|
|
d22c57e6c4 | ||
|
|
6172ee107f | ||
|
|
2a248d822c | ||
|
|
6dbd87054b | ||
|
|
68b1efda1d | ||
|
|
7188e7a998 | ||
|
|
927974f719 | ||
|
|
1439ace8f2 | ||
|
|
b86a7cc004 | ||
|
|
01efb57f88 | ||
|
|
f5dddcbf38 | ||
|
|
ccdfecaaf2 | ||
|
|
07f0e609c6 | ||
|
|
eff8d999dc | ||
|
|
57e629a437 | ||
|
|
5bf030df68 | ||
|
|
635d07c09d | ||
|
|
34a3d15d63 | ||
|
|
560d8b137b | ||
|
|
482b1d74c1 | ||
|
|
f0ff59fe55 | ||
|
|
939fbc5e6e | ||
|
|
a0bafae0b8 | ||
|
|
a37e5b7d61 | ||
|
|
f6d883591e | ||
|
|
02c50bf68d | ||
|
|
6ec0bb821a | ||
|
|
3b54d1cfdf | ||
|
|
eaea3291c9 | ||
|
|
8b555caf8d | ||
|
|
40162ae1f1 | ||
|
|
7d1184f528 | ||
|
|
2419f2cbba | ||
|
|
332d315257 | ||
|
|
343f86705e | ||
|
|
bcd97be19b | ||
|
|
e02739be38 | ||
|
|
0d3aa44c5c | ||
|
|
a508bb356e | ||
|
|
3e94cecda0 | ||
|
|
701f172a16 | ||
|
|
90aad53e72 | ||
|
|
a9ddd812ce | ||
|
|
91cbfc7996 | ||
|
|
7de04ecfd0 | ||
|
|
8321f1dc18 | ||
|
|
ff9a36b06e | ||
|
|
cd5049af64 | ||
|
|
810b53a8ba | ||
|
|
ba5a8c50ed | ||
|
|
8677037d08 | ||
|
|
ff2661333b | ||
|
|
26145a578d | ||
|
|
0692aeebfc | ||
|
|
47611ea40b | ||
|
|
7bb565780b | ||
|
|
9794ac9406 | ||
|
|
701bc4e9ed | ||
|
|
958155397b | ||
|
|
de4e249b98 | ||
|
|
a2e96b1577 | ||
|
|
2e05eb17ec | ||
|
|
b52307508d | ||
|
|
a3485f7b8f | ||
|
|
1977c86a96 | ||
|
|
e98084b722 | ||
|
|
ca246a1805 | ||
|
|
40c64fb090 | ||
|
|
4acbcb8479 | ||
|
|
8f832606d8 | ||
|
|
4f5bb9fcef | ||
|
|
da44386179 | ||
|
|
f4a5b99d88 | ||
|
|
c794b17d99 | ||
|
|
e188b1d368 | ||
|
|
e0c95fcf69 | ||
|
|
25cb73f3c4 | ||
|
|
a93701ec9b | ||
|
|
3a19e60609 | ||
|
|
78318f8be5 | ||
|
|
54f3988321 | ||
|
|
f437b67409 | ||
|
|
06b9bc80b3 | ||
|
|
a6fae2d4e8 | ||
|
|
a4ef905acc | ||
|
|
41a5151e81 | ||
|
|
e96e0e2c98 | ||
|
|
8d0a8e33ff | ||
|
|
9bd97ff018 | ||
|
|
bca5e4d3e2 | ||
|
|
031a2987b7 | ||
|
|
753106f35c | ||
|
|
a1e4314d8f | ||
|
|
a7f3aad3f5 | ||
|
|
faa196892b | ||
|
|
796ce734cb | ||
|
|
3eb24de4f6 | ||
|
|
5bddaa4323 | ||
|
|
17819a1af9 | ||
|
|
d20884258e | ||
|
|
b74351ab97 | ||
|
|
0f5a011c3d | ||
|
|
99cad45695 | ||
|
|
aceee1722e | ||
|
|
0cb459c59a | ||
|
|
81886c7276 | ||
|
|
fdc6583d4e | ||
|
|
a4b15f09d5 | ||
|
|
c2351bbd0b | ||
|
|
c14b6e1c32 | ||
|
|
f1d16883d0 | ||
|
|
5de1d6bef5 | ||
|
|
7d4fd999a5 | ||
|
|
38c07112bd | ||
|
|
c6f8a8a2ba | ||
|
|
2960188cea | ||
|
|
8e060aa468 | ||
|
|
fc6fa62ba9 | ||
|
|
7864da88cb | ||
|
|
36eedea576 | ||
|
|
95a170fa60 | ||
|
|
1ea15ee881 | ||
|
|
729d91c21f | ||
|
|
c553dd0c3f | ||
|
|
a307846a9f | ||
|
|
57929789e6 | ||
|
|
d9be6cade4 | ||
|
|
e1c24ba1f0 | ||
|
|
979d352bf6 | ||
|
|
db8a75eba6 | ||
|
|
69b561f709 | ||
|
|
c33ee55bce | ||
|
|
12e445b81b | ||
|
|
60457dabd3 | ||
|
|
8f158b20ff | ||
|
|
9057e9e607 | ||
|
|
addf8fa212 | ||
|
|
63346e6cc5 | ||
|
|
83adf3b3da | ||
|
|
828496ee08 | ||
|
|
df46d8995c | ||
|
|
6ac516eae5 | ||
|
|
df974f607b | ||
|
|
cf7c9d54cf | ||
|
|
1026ab4694 | ||
|
|
4c602a2061 | ||
|
|
806baaed75 | ||
|
|
cadd55dc3d | ||
|
|
f3fe780861 | ||
|
|
9aeea9f032 | ||
|
|
f920b5cca7 | ||
|
|
784197509a | ||
|
|
72f088c678 | ||
|
|
94fed099f6 | ||
|
|
87e8022576 | ||
|
|
64ced80536 | ||
|
|
cc7ab4747a | ||
|
|
2105ee4f68 | ||
|
|
32402da4e2 | ||
|
|
6a07d2066a | ||
|
|
8fac59bbad | ||
|
|
e031a1afa4 | ||
|
|
bba98f9cf3 | ||
|
|
c9a433aeef | ||
|
|
35358c035e |
No files matched your search
+11
-1
@@ -1,2 +1,12 @@
|
||||
/coverage
|
||||
/node_modules
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# yarn v2
|
||||
.yarn/cache
|
||||
.yarn/unplugged
|
||||
.yarn/build-state.yml
|
||||
.yarn/install-state.gz
|
||||
.pnp.*
|
||||
@@ -1,23 +0,0 @@
|
||||
{
|
||||
"env": {
|
||||
"node": true,
|
||||
"es2021": true,
|
||||
"jest": true
|
||||
},
|
||||
"extends": [
|
||||
"eslint:recommended",
|
||||
"plugin:@typescript-eslint/recommended",
|
||||
"plugin:jest/recommended",
|
||||
"plugin:prettier/recommended"
|
||||
],
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"parserOptions": {
|
||||
"ecmaVersion": "latest",
|
||||
"sourceType": "module"
|
||||
},
|
||||
"plugins": [
|
||||
"@typescript-eslint",
|
||||
"jest",
|
||||
"prettier"
|
||||
]
|
||||
}
|
||||
@@ -1,2 +1,4 @@
|
||||
/.yarn/releases/** binary
|
||||
/.yarn/plugins/** binary
|
||||
/dist/** linguist-generated=true
|
||||
/lib/** linguist-generated=true
|
||||
@@ -1 +0,0 @@
|
||||
* @crazy-max
|
||||
@@ -0,0 +1,3 @@
|
||||
# Code of conduct
|
||||
|
||||
- [Moby community guidelines](https://github.com/moby/moby/blob/master/CONTRIBUTING.md#moby-community-guidelines)
|
||||
@@ -7,13 +7,13 @@ to the public under the [project's open source license](LICENSE).
|
||||
|
||||
## Submitting a pull request
|
||||
|
||||
1. [Fork](https://github.com/crazy-max/ghaction-setup-docker/fork) and clone the repository
|
||||
1. [Fork](https://github.com/docker/setup-docker-action/fork) and clone the repository
|
||||
2. Configure and install the dependencies: `yarn install`
|
||||
3. Create a new branch: `git checkout -b my-branch-name`
|
||||
4. Make your changes
|
||||
5. Format code and build javascript artifacts: `docker buildx bake pre-checkin`
|
||||
6. Validate all code has correctly formatted and built: `docker buildx bake validate`
|
||||
7. Push to your fork and [submit a pull request](https://github.com/crazy-max/ghaction-setup-docker/compare)
|
||||
7. Push to your fork and [submit a pull request](https://github.com/docker/setup-docker-action/compare)
|
||||
8. 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:
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
# https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema
|
||||
name: Bug Report
|
||||
description: Report a bug
|
||||
labels:
|
||||
- status/triage
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thank you for taking the time to report a bug!
|
||||
If this is a security issue please report it to the [Docker Security team](mailto:security@docker.com).
|
||||
Before submitting a bug report, check out the [Troubleshooting doc](https://github.com/docker/setup-docker-action/blob/master/TROUBLESHOOTING.md).
|
||||
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Contributing guidelines
|
||||
description: >
|
||||
Make sure you've read the contributing guidelines before proceeding.
|
||||
options:
|
||||
- label: I've read the [contributing guidelines](https://github.com/docker/setup-docker-action/blob/master/.github/CONTRIBUTING.md) and wholeheartedly agree
|
||||
required: true
|
||||
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: "I've found a bug, and:"
|
||||
description: |
|
||||
Make sure that your request fulfills all of the following requirements.
|
||||
If one requirement cannot be satisfied, explain in detail why.
|
||||
options:
|
||||
- label: The documentation does not mention anything about my problem
|
||||
- label: There are no open or closed issues that are related to my problem
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Description
|
||||
description: >
|
||||
Provide a brief description of the bug in 1-2 sentences.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Expected behaviour
|
||||
description: >
|
||||
Describe precisely what you'd expect to happen.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Actual behaviour
|
||||
description: >
|
||||
Describe precisely what is actually happening.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Repository URL
|
||||
description: >
|
||||
Enter the URL of the repository where you are experiencing the
|
||||
issue. If your repository is private, provide a link to a minimal
|
||||
repository that reproduces the issue.
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Workflow run URL
|
||||
description: >
|
||||
Enter the URL of the GitHub Action workflow run if public (e.g.
|
||||
`https://github.com/<user>/<repo>/actions/runs/<id>`)
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: YAML workflow
|
||||
description: |
|
||||
Provide the YAML of the workflow that's causing the issue.
|
||||
Make sure to remove any sensitive information.
|
||||
render: yaml
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Workflow logs
|
||||
description: >
|
||||
[Attach](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/attaching-files)
|
||||
the [log file of your workflow run](https://docs.github.com/en/actions/managing-workflow-runs/using-workflow-run-logs#downloading-logs)
|
||||
and make sure to remove any sensitive information.
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Docker daemon logs
|
||||
description: >
|
||||
If applicable, provide the Docker logs available in post step.
|
||||
render: text
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional info
|
||||
description: |
|
||||
Provide any additional information that could be useful.
|
||||
@@ -1,34 +0,0 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
---
|
||||
|
||||
### Behaviour
|
||||
|
||||
#### Steps to reproduce this issue
|
||||
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
#### Expected behaviour
|
||||
|
||||
> Tell us what should happen
|
||||
|
||||
#### Actual behaviour
|
||||
|
||||
> Tell us what happens instead
|
||||
|
||||
### Configuration
|
||||
|
||||
* Repository URL (if public):
|
||||
* Build URL (if public):
|
||||
|
||||
```yml
|
||||
# paste your YAML workflow file here and remove sensitive data
|
||||
```
|
||||
|
||||
### Logs
|
||||
|
||||
> 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.
|
||||
@@ -0,0 +1,6 @@
|
||||
# https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository#configuring-the-template-chooser
|
||||
blank_issues_enabled: true
|
||||
contact_links:
|
||||
- name: Questions and Discussions
|
||||
url: https://github.com/docker/setup-docker-action/discussions/new
|
||||
about: Use Github Discussions to ask questions and/or open discussion topics.
|
||||
@@ -0,0 +1,15 @@
|
||||
# https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema
|
||||
name: Feature request
|
||||
description: Missing functionality? Come tell us about it!
|
||||
labels:
|
||||
- kind/enhancement
|
||||
- status/triage
|
||||
|
||||
body:
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description
|
||||
description: What is the feature you want to see?
|
||||
validations:
|
||||
required: true
|
||||
@@ -0,0 +1,12 @@
|
||||
# Reporting security issues
|
||||
|
||||
The project maintainers take security seriously. If you discover a security
|
||||
issue, please bring it to their attention right away!
|
||||
|
||||
**Please _DO NOT_ file a public issue**, instead send your report privately to
|
||||
[security@docker.com](mailto:security@docker.com).
|
||||
|
||||
Security reports are greatly appreciated, and we will publicly thank you for it.
|
||||
We also like to send gifts—if you'd like Docker swag, make sure to let
|
||||
us know. We currently do not offer a paid security bounty program, but are not
|
||||
ruling it out in the future.
|
||||
@@ -1,31 +0,0 @@
|
||||
# Support [](https://isitmaintained.com/project/crazy-max/ghaction-setup-docker)
|
||||
|
||||
First, [be a good guy](https://github.com/kossnocorp/etiquette/blob/master/README.md).
|
||||
|
||||
## Reporting an issue
|
||||
|
||||
Please do a search in [open issues](https://github.com/crazy-max/ghaction-setup-docker/issues?utf8=%E2%9C%93&q=) to see if the issue or feature request has already been filed.
|
||||
|
||||
If you find your issue already exists, make relevant comments and add your [reaction](https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments). Use a reaction in place of a "+1" comment.
|
||||
|
||||
:+1: - upvote
|
||||
|
||||
:-1: - downvote
|
||||
|
||||
If you cannot find an existing issue that describes your bug or feature, submit an issue using the guidelines below.
|
||||
|
||||
## Writing good bug reports and feature requests
|
||||
|
||||
File a single issue per problem and feature request.
|
||||
|
||||
* Do not enumerate multiple bugs or feature requests in the same issue.
|
||||
* Do not add your issue as a comment to an existing issue unless it's for the identical input. Many issues look similar, but have different causes.
|
||||
|
||||
The more information you can provide, the more likely someone will be successful reproducing the issue and finding a fix.
|
||||
|
||||
You are now ready to [create a new issue](https://github.com/crazy-max/ghaction-setup-docker/issues/new/choose)!
|
||||
|
||||
## Closure policy
|
||||
|
||||
* Issues that don't have the information requested above (when applicable) will be closed immediately and the poster directed to the support guidelines.
|
||||
* Issues that go a week without a response from original poster are subject to closure at our discretion.
|
||||
@@ -4,6 +4,11 @@ updates:
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
ignore:
|
||||
# ignore this dependency
|
||||
# it seems a bug with dependabot as pining to commit sha should not
|
||||
# trigger a new version similar to https://github.com/docker/buildx/pull/2222#issuecomment-1919092153
|
||||
- dependency-name: "docker/actions-toolkit"
|
||||
labels:
|
||||
- "dependencies"
|
||||
- "bot"
|
||||
|
||||
+159
-60
@@ -1,5 +1,9 @@
|
||||
name: ci
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
@@ -13,8 +17,8 @@ on:
|
||||
pull_request:
|
||||
|
||||
env:
|
||||
DOCKER_VERSION: v23.0.6
|
||||
SIGN_QEMU_BINARY: 1
|
||||
DOCKER_VERSION: v27.3.1
|
||||
DOCKER_BUILD_SUMMARY: false
|
||||
|
||||
jobs:
|
||||
main:
|
||||
@@ -24,31 +28,22 @@ jobs:
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- macos-latest
|
||||
- ubuntu-24.04-arm
|
||||
- macos-15-intel
|
||||
- windows-latest
|
||||
version:
|
||||
- pinned
|
||||
- latest
|
||||
- ""
|
||||
- v27.3.1
|
||||
- type=image,tag=27.3.1
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
-
|
||||
name: Set version
|
||||
shell: bash
|
||||
run: |
|
||||
if [ "${{ matrix.version }}" != "pinned" ]; then
|
||||
echo "DOCKER_VERSION=${{ matrix.version }}" >> $GITHUB_ENV
|
||||
fi
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker
|
||||
uses: ./
|
||||
with:
|
||||
version: ${{ env.DOCKER_VERSION }}
|
||||
-
|
||||
name: Dump context
|
||||
if: always()
|
||||
uses: crazy-max/ghaction-dump-context@v2
|
||||
version: ${{ matrix.version }}
|
||||
|
||||
channel:
|
||||
runs-on: ${{ matrix.os }}
|
||||
@@ -57,22 +52,19 @@ jobs:
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- macos-latest
|
||||
- ubuntu-24.04-arm
|
||||
- macos-15-intel
|
||||
- windows-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker
|
||||
uses: ./
|
||||
with:
|
||||
version: v23.0.0-rc.4
|
||||
version: ${{ env.DOCKER_VERSION }}
|
||||
channel: test
|
||||
-
|
||||
name: Dump context
|
||||
if: always()
|
||||
uses: crazy-max/ghaction-dump-context@v2
|
||||
|
||||
daemon-config:
|
||||
runs-on: ${{ matrix.os }}
|
||||
@@ -81,16 +73,18 @@ jobs:
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- macos-latest
|
||||
- ubuntu-24.04-arm
|
||||
- macos-15-intel
|
||||
- windows-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker
|
||||
uses: ./
|
||||
with:
|
||||
version: ${{ env.DOCKER_VERSION }}
|
||||
daemon-config: |
|
||||
{
|
||||
"debug": true,
|
||||
@@ -98,10 +92,6 @@ jobs:
|
||||
"containerd-snapshotter": true
|
||||
}
|
||||
}
|
||||
-
|
||||
name: Dump context
|
||||
if: always()
|
||||
uses: crazy-max/ghaction-dump-context@v2
|
||||
|
||||
context:
|
||||
runs-on: ${{ matrix.os }}
|
||||
@@ -110,12 +100,13 @@ jobs:
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- macos-latest
|
||||
- ubuntu-24.04-arm
|
||||
- macos-15-intel
|
||||
- windows-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker
|
||||
uses: ./
|
||||
@@ -126,29 +117,38 @@ jobs:
|
||||
name: Check context
|
||||
run: |
|
||||
docker context inspect foo
|
||||
-
|
||||
name: Dump context
|
||||
if: always()
|
||||
uses: crazy-max/ghaction-dump-context@v2
|
||||
|
||||
colima-start-args:
|
||||
runs-on: macos-latest
|
||||
lima-start-args:
|
||||
runs-on: macos-15-intel
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker
|
||||
uses: ./
|
||||
with:
|
||||
version: ${{ env.DOCKER_VERSION }}
|
||||
env:
|
||||
COLIMA_START_ARGS: --cpu 4 --memory 8 --disk 32 --dns 1.1.1.1 --dns 8.8.8.8 --dns-host example.com=1.2.3.4
|
||||
LIMA_START_ARGS: --cpus 4 --memory 8
|
||||
|
||||
build-linux:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
containerd:
|
||||
- containerd-system
|
||||
- containerd-tarball
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Uninstall containerd
|
||||
if: matrix.containerd == 'containerd-tarball'
|
||||
run: |
|
||||
sudo apt-get remove -y containerd.io
|
||||
-
|
||||
name: Set up Docker
|
||||
uses: ./
|
||||
@@ -160,13 +160,13 @@ jobs:
|
||||
docker run -d -p 5000:5000 --restart=always --name registry registry:2
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
uses: docker/setup-buildx-action@v3
|
||||
with:
|
||||
driver: docker
|
||||
driver-opts: network=host
|
||||
-
|
||||
name: Build and push
|
||||
uses: docker/build-push-action@v4
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: ./test
|
||||
push: true
|
||||
@@ -176,17 +176,18 @@ jobs:
|
||||
name: Inspect
|
||||
run: |
|
||||
docker buildx imagetools inspect localhost:5000/name/app:latest --format '{{json .}}'
|
||||
-
|
||||
name: Dump context
|
||||
if: always()
|
||||
uses: crazy-max/ghaction-dump-context@v2
|
||||
|
||||
build-macos:
|
||||
runs-on: macos-latest
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os:
|
||||
- macos-15-intel
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker
|
||||
uses: ./
|
||||
@@ -198,13 +199,13 @@ jobs:
|
||||
docker run -d -p 5000:5000 --restart=always --name registry registry:2
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
uses: docker/setup-buildx-action@v3
|
||||
with:
|
||||
driver: docker
|
||||
driver-opts: network=host
|
||||
-
|
||||
name: Build and push
|
||||
uses: docker/build-push-action@v4
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: ./test
|
||||
push: true
|
||||
@@ -214,17 +215,13 @@ jobs:
|
||||
name: Inspect
|
||||
run: |
|
||||
docker buildx imagetools inspect localhost:5000/name/app:latest --format '{{json .}}'
|
||||
-
|
||||
name: Dump context
|
||||
if: always()
|
||||
uses: crazy-max/ghaction-dump-context@v2
|
||||
|
||||
build-windows:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker
|
||||
uses: ./
|
||||
@@ -239,7 +236,109 @@ jobs:
|
||||
name: Inspect
|
||||
run: |
|
||||
docker image inspect test
|
||||
|
||||
set-host:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Dump context
|
||||
if: always()
|
||||
uses: crazy-max/ghaction-dump-context@v2
|
||||
name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker
|
||||
uses: ./
|
||||
with:
|
||||
version: ${{ env.DOCKER_VERSION }}
|
||||
set-host: true
|
||||
-
|
||||
name: List contexts
|
||||
run: |
|
||||
docker context ls
|
||||
|
||||
rootless:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker
|
||||
uses: ./
|
||||
with:
|
||||
version: ${{ env.DOCKER_VERSION }}
|
||||
rootless: true
|
||||
-
|
||||
name: List contexts
|
||||
run: |
|
||||
docker context ls
|
||||
|
||||
tcp:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- ubuntu-24.04-arm
|
||||
- macos-15-intel
|
||||
- windows-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker
|
||||
id: setup_docker
|
||||
uses: ./
|
||||
with:
|
||||
version: ${{ env.DOCKER_VERSION }}
|
||||
tcp-port: 2378
|
||||
-
|
||||
name: Check docker info through TCP
|
||||
run: |
|
||||
docker info
|
||||
env:
|
||||
DOCKER_HOST: ${{ steps.setup_docker.outputs.tcp }}
|
||||
|
||||
undock-regctl-version:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
undock_version:
|
||||
- ''
|
||||
- v0.9.0
|
||||
regctl_version:
|
||||
- ''
|
||||
- v0.8.2
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker
|
||||
uses: ./
|
||||
with:
|
||||
version: type=image
|
||||
env:
|
||||
UNDOCK_VERSION: ${{ matrix.undock_version }}
|
||||
REGCTL_VERSION: ${{ matrix.regctl_version }}
|
||||
|
||||
docker-29:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- macos-15-intel
|
||||
- windows-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker
|
||||
uses: ./
|
||||
with:
|
||||
version: v29.0.0-rc.1
|
||||
channel: test
|
||||
@@ -0,0 +1,17 @@
|
||||
name: pr-assign-author
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
|
||||
jobs:
|
||||
run:
|
||||
uses: crazy-max/.github/.github/workflows/pr-assign-author.yml@1b673f36fad86812f538c1df9794904038a23cbf
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
@@ -0,0 +1,21 @@
|
||||
name: publish
|
||||
|
||||
on:
|
||||
release:
|
||||
types:
|
||||
- published
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
id-token: write
|
||||
packages: write
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Publish
|
||||
uses: actions/publish-immutable-action@v0.0.4
|
||||
@@ -1,5 +1,9 @@
|
||||
name: test
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
@@ -13,14 +17,16 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Test
|
||||
uses: docker/bake-action@v3
|
||||
uses: docker/bake-action@v6
|
||||
with:
|
||||
targets: test
|
||||
-
|
||||
name: Upload coverage
|
||||
uses: codecov/codecov-action@v3
|
||||
uses: codecov/codecov-action@v5
|
||||
with:
|
||||
file: ./coverage/clover.xml
|
||||
source: .
|
||||
files: ./coverage/clover.xml
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
@@ -0,0 +1,49 @@
|
||||
name: update-dist
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types:
|
||||
- opened
|
||||
- synchronize
|
||||
|
||||
jobs:
|
||||
update-dist:
|
||||
if: github.actor == 'dependabot[bot]'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: GitHub auth token from GitHub App
|
||||
id: docker-read-app
|
||||
uses: actions/create-github-app-token@v2
|
||||
with:
|
||||
app-id: ${{ secrets.GHACTIONS_REPO_WRITE_APP_ID }}
|
||||
private-key: ${{ secrets.GHACTIONS_REPO_WRITE_APP_PRIVATE_KEY }}
|
||||
owner: docker
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.ref }}
|
||||
fetch-depth: 0
|
||||
token: ${{ steps.docker-read-app.outputs.token || github.token }}
|
||||
-
|
||||
name: Build
|
||||
uses: docker/bake-action@v6
|
||||
with:
|
||||
source: .
|
||||
targets: build
|
||||
-
|
||||
name: Commit and push dist
|
||||
run: |
|
||||
if [ -n "$(git status --porcelain -- dist)" ]; then
|
||||
(
|
||||
set -x
|
||||
git config user.name "github-actions[bot]"
|
||||
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
||||
git add dist
|
||||
git commit -m "chore: update generated content"
|
||||
git push
|
||||
)
|
||||
else
|
||||
echo "No changes in dist"
|
||||
fi
|
||||
@@ -1,5 +1,9 @@
|
||||
name: validate
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
@@ -11,16 +15,17 @@ jobs:
|
||||
prepare:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
targets: ${{ steps.targets.outputs.matrix }}
|
||||
targets: ${{ steps.generate.outputs.targets }}
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Targets matrix
|
||||
id: targets
|
||||
run: |
|
||||
echo "matrix=$(docker buildx bake validate --print | jq -cr '.group.validate.targets')" >> $GITHUB_OUTPUT
|
||||
name: List targets
|
||||
id: generate
|
||||
uses: docker/bake-action/subaction/list-targets@v6
|
||||
with:
|
||||
target: validate
|
||||
|
||||
validate:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -31,11 +36,8 @@ jobs:
|
||||
matrix:
|
||||
target: ${{ fromJson(needs.prepare.outputs.targets) }}
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
-
|
||||
name: Validate
|
||||
uses: docker/bake-action@v3
|
||||
uses: docker/bake-action@v6
|
||||
with:
|
||||
targets: ${{ matrix.target }}
|
||||
+14
-52
@@ -1,7 +1,5 @@
|
||||
node_modules
|
||||
lib
|
||||
# https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore
|
||||
|
||||
# Rest of the file pulled from https://github.com/github/gitignore/blob/master/Node.gitignore
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
@@ -9,6 +7,7 @@ npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
lerna-debug.log*
|
||||
.pnpm-debug.log*
|
||||
|
||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||
@@ -19,34 +18,14 @@ pids
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
*.lcov
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# TypeScript v1 declaration files
|
||||
typings/
|
||||
|
||||
# TypeScript cache
|
||||
*.tsbuildinfo
|
||||
|
||||
@@ -56,36 +35,19 @@ typings/
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variables file
|
||||
# dotenv environment variable files
|
||||
.env
|
||||
.env.test
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
.env.local
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
.cache
|
||||
|
||||
# next.js build output
|
||||
.next
|
||||
|
||||
# nuxt.js build output
|
||||
.nuxt
|
||||
|
||||
# vuepress build output
|
||||
.vuepress/dist
|
||||
|
||||
# Serverless directories
|
||||
.serverless/
|
||||
|
||||
# FuseBox cache
|
||||
.fusebox/
|
||||
|
||||
# DynamoDB Local files
|
||||
.dynamodb/
|
||||
# yarn v2
|
||||
.yarn/cache
|
||||
.yarn/unplugged
|
||||
.yarn/build-state.yml
|
||||
.yarn/install-state.gz
|
||||
.pnp.*
|
||||
@@ -0,0 +1,6 @@
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# yarn v2
|
||||
.yarn/
|
||||
+1
-2
@@ -6,6 +6,5 @@
|
||||
"singleQuote": true,
|
||||
"trailingComma": "none",
|
||||
"bracketSpacing": false,
|
||||
"arrowParens": "avoid",
|
||||
"parser": "typescript"
|
||||
"arrowParens": "avoid"
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
# https://yarnpkg.com/configuration/yarnrc
|
||||
|
||||
compressionLevel: mixed
|
||||
enableGlobalCache: false
|
||||
enableHardenedMode: true
|
||||
|
||||
logFilters:
|
||||
- code: YN0013
|
||||
level: discard
|
||||
- code: YN0019
|
||||
level: discard
|
||||
- code: YN0076
|
||||
level: discard
|
||||
- code: YN0086
|
||||
level: discard
|
||||
|
||||
nodeLinker: node-modules
|
||||
@@ -1,14 +1,26 @@
|
||||
[](https://github.com/crazy-max/ghaction-setup-docker/releases/latest)
|
||||
[](https://github.com/docker/setup-docker-action/releases/latest)
|
||||
[](https://github.com/marketplace/actions/docker-setup-docker)
|
||||
[](https://github.com/crazy-max/ghaction-setup-docker/actions?workflow=ci)
|
||||
[](https://github.com/crazy-max/ghaction-setup-docker/actions?workflow=test)
|
||||
[](https://codecov.io/gh/crazy-max/ghaction-setup-docker)
|
||||
[](https://github.com/docker/setup-docker-action/actions?workflow=ci)
|
||||
[](https://github.com/docker/setup-docker-action/actions?workflow=test)
|
||||
[](https://codecov.io/gh/docker/setup-docker-action)
|
||||
|
||||
## About
|
||||
|
||||
GitHub Action to set up (download and install) [Docker CE](https://docs.docker.com/engine/).
|
||||
Works on Linux, macOS and Windows.
|
||||
|
||||
> [!NOTE]
|
||||
> This action is useful if you want to pin against a specific Docker version or
|
||||
> set up a custom daemon configuration or if Docker is not available on your
|
||||
> runner. If you're using [GitHub-hosted runners](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources)
|
||||
> on Linux or Windows, Docker is already up and running, so it might not be
|
||||
> necessary to use this action.
|
||||
|
||||
> [!WARNING]
|
||||
> Does not work on macOS runners with ARM architecture (no nested virtualization):
|
||||
> * https://github.com/crazy-max/ghaction-setup-docker/pull/53
|
||||
> * https://github.com/docker/actions-toolkit/issues/317
|
||||
|
||||

|
||||
|
||||
___
|
||||
@@ -16,10 +28,11 @@ ___
|
||||
* [Usage](#usage)
|
||||
* [Quick start](#quick-start)
|
||||
* [Daemon configuration](#daemon-configuration)
|
||||
* [Define custom `colima start` arguments (macOS)](#define-custom-colima-start-arguments-macos)
|
||||
* [Define custom `limactl start` arguments (macOS)](#define-custom-limactl-start-arguments-macos)
|
||||
* [Customizing](#customizing)
|
||||
* [inputs](#inputs)
|
||||
* [Notes](#notes)
|
||||
* [inputs.version](#inputsversion)
|
||||
* [outputs](#outputs)
|
||||
* [Contributing](#contributing)
|
||||
* [License](#license)
|
||||
|
||||
@@ -39,7 +52,7 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Set up Docker
|
||||
uses: crazy-max/ghaction-setup-docker@v1
|
||||
uses: docker/setup-docker-action@v4
|
||||
```
|
||||
|
||||
### Daemon configuration
|
||||
@@ -61,7 +74,7 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Set up Docker
|
||||
uses: crazy-max/ghaction-setup-docker@v1
|
||||
uses: docker/setup-docker-action@v4
|
||||
with:
|
||||
daemon-config: |
|
||||
{
|
||||
@@ -72,10 +85,10 @@ jobs:
|
||||
}
|
||||
```
|
||||
|
||||
### Define custom `colima start` arguments (macOS)
|
||||
### Define custom `limactl start` arguments (macOS)
|
||||
|
||||
You can define custom [`colima start` arguments](https://github.com/abiosoft/colima#customizing-the-vm)
|
||||
using the `COLIMA_START_ARGS` environment variable to customize the VM:
|
||||
You can define custom [`limactl start` arguments](https://lima-vm.io/docs/reference/limactl_start/)
|
||||
using the `LIMA_START_ARGS` environment variable to customize the VM:
|
||||
|
||||
```yaml
|
||||
name: ci
|
||||
@@ -89,92 +102,108 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Set up Docker
|
||||
uses: crazy-max/ghaction-setup-docker@v1
|
||||
uses: docker/setup-docker-action@v4
|
||||
env:
|
||||
COLIMA_START_ARGS: --cpu 4 --memory 8 --disk 32
|
||||
LIMA_START_ARGS: --cpus 4 --memory 8
|
||||
```
|
||||
|
||||
## Customizing
|
||||
|
||||
### inputs
|
||||
|
||||
Following inputs can be used as `step.with` keys
|
||||
The following inputs can be used as `step.with` keys
|
||||
|
||||
| Name | Type | Default | Description |
|
||||
|-----------------|--------|-----------------------|-----------------------------------------------------------------------------------------------------------------------------|
|
||||
| `version` | String | `latest` | Docker CE version (e.g., `v23.0.1`). |
|
||||
| `channel` | String | `stable` | Docker CE [channel](https://download.docker.com/linux/static/) (e.g, `stable`, `edge` or `test`). |
|
||||
| `daemon-config` | String | | [Docker daemon JSON configuration](https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file) |
|
||||
| `context` | String | `setup-docker-action` | Docker context name. |
|
||||
| Name | Type | Default | Description |
|
||||
|-------------------|--------|------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `version` | String | `latest` | Docker version to use. See [inputs.version](#inputs.version). |
|
||||
| `channel` | String | `stable` | Docker CE [channel](https://download.docker.com/linux/static/) (`stable` or `test`). Only applicable to `type=archive` |
|
||||
| `daemon-config` | String | | [Docker daemon JSON configuration](https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file) |
|
||||
| `tcp-port` | Number | | TCP port to expose the Docker API locally |
|
||||
| `context` | String | `setup-docker-action` | Docker context name. |
|
||||
| `set-host` | Bool | `false` | Set `DOCKER_HOST` environment variable to docker socket path. |
|
||||
| `rootless` | Bool | `false` | Start daemon in rootless mode |
|
||||
| `runtime-basedir` | String | `<home>/setup-docker-action` | Docker runtime base directory |
|
||||
| `github-token` | String | `${{ github.token }}` | Optional GitHub Token used to get releases and download assets to avoid rate limitation. On GitHub Enterprise, you might need to set a PAT for `github.com`. |
|
||||
|
||||
## Notes
|
||||
### inputs.version
|
||||
|
||||
### macOS: `qemu[stderr]: qemu-system-x86_64: Unknown Error`
|
||||
By default, the latest stable version of Docker is fetched from download.docker.com.
|
||||
|
||||
Colima may fail to start with the following error:
|
||||
You can specify a specific version number (e.g. `v27.4.0`).
|
||||
Which is a shorthand for the full comma separated value:
|
||||
|
||||
`type=archive,channel=stable,version=v27.4.0`
|
||||
|
||||
You can also use this full csv format instead.
|
||||
|
||||
Currently supported source types are:
|
||||
- `archive`
|
||||
- `image`
|
||||
|
||||
#### `type=archive`
|
||||
| Key | Default | Description |
|
||||
|-----------|------------|--------------------------------------------------------------------------------------|
|
||||
| `type` | `archive` | The source type of the Docker binaries. Possible values are `archive` and `image`. |
|
||||
| `channel` | `stable` | The download.docker.com channel (`stable` or `test`). |
|
||||
| `version` | `latest` | The Docker version to use. |
|
||||
|
||||
Examples:
|
||||
```yaml
|
||||
# last stable released version
|
||||
version: latest
|
||||
version: type=archive # same as above
|
||||
version: version=latest # same as above
|
||||
version: type=archive,version=latest # same as above
|
||||
```
|
||||
time="2023-08-26T06:30:33Z" level=info msg="[hostagent] Starting QEMU (hint: to watch the boot progress, see \"/Users/runner/.lima/colima/serial*.log\")"
|
||||
time="2023-08-26T06:30:34Z" level=info msg="SSH Local Port: 49209"
|
||||
time="2023-08-26T06:30:34Z" level=info msg="[hostagent] Waiting for the essential requirement 1 of 3: \"ssh\""
|
||||
time="2023-08-26T06:30:34Z" level=info msg="[hostagent] Driver stopped due to error: \"exit status 255\""
|
||||
time="2023-08-26T06:30:34Z" level=info msg="[hostagent] Shutting down the host agent"
|
||||
time="2023-08-26T06:30:34Z" level=warning msg="[hostagent] failed to exit SSH master"
|
||||
time="2023-08-26T06:30:34Z" level=info msg="[hostagent] Shutting down QEMU with ACPI"
|
||||
time="2023-08-26T06:30:34Z" level=warning msg="[hostagent] failed to open the QMP socket \"/Users/runner/.lima/colima/qmp.sock\", forcibly killing QEMU"
|
||||
time="2023-08-26T06:30:34Z" level=info msg="[hostagent] QEMU has already exited"
|
||||
time="2023-08-26T06:30:34Z" level=fatal msg="exiting, status={Running:false Degraded:false Exiting:true Errors:[] SSHLocalPort:0} (hint: see \"/Users/runner/.lima/colima/ha.stderr.log\")"
|
||||
time="2023-08-26T06:30:34Z" level=fatal msg="error starting vm: error at 'creating and starting': exit status 1"
|
||||
```
|
||||
|
||||
```
|
||||
{"level":"debug","msg":"executing [ssh-keygen -t ed25519 -q -N -f /Users/runner/.lima/_config/user]","time":"2023-08-26T07:16:40Z"}
|
||||
{"level":"debug","msg":"Creating iso file /Users/runner/.lima/colima/cidata.iso","time":"2023-08-26T07:16:41Z"}
|
||||
{"level":"debug","msg":"Using /var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/diskfs_iso3418167253 as workspace","time":"2023-08-26T07:16:41Z"}
|
||||
{"level":"debug","msg":"OpenSSH version 8.6.1 detected","time":"2023-08-26T07:16:41Z"}
|
||||
{"level":"debug","msg":"AES accelerator seems available, prioritizing aes128-gcm@openssh.com and aes256-gcm@openssh.com","time":"2023-08-26T07:16:41Z"}
|
||||
{"level":"debug","msg":"QEMU version 8.0.4 detected","time":"2023-08-26T07:16:43Z"}
|
||||
{"level":"debug","msg":"firmware candidates = [/Users/runner/.local/share/qemu/edk2-x86_64-code.fd /Users/runner/.colima/_wrapper/4e1b408f843d1c63afbbdcf80c40e4c88d33509f/share/qemu/edk2-x86_64-code.fd /usr/share/OVMF/OVMF_CODE.fd /usr/share/qemu/ovmf-x86_64-code.bin /usr/share/edk2-ovmf/x64/OVMF_CODE.fd]","time":"2023-08-26T07:16:43Z"}
|
||||
{"level":"info","msg":"Starting QEMU (hint: to watch the boot progress, see \"/Users/runner/.lima/colima/serial*.log\")","time":"2023-08-26T07:16:43Z"}
|
||||
{"level":"debug","msg":"qCmd.Args: [/Users/runner/.colima/_wrapper/4e1b408f843d1c63afbbdcf80c40e4c88d33509f/bin/qemu-system-x86_64 -m 2048 -cpu host,-pdpe1gb -machine q35,accel=hvf -smp 2,sockets=1,cores=2,threads=1 -drive if=pflash,format=raw,readonly=on,file=/Users/runner/.colima/_wrapper/4e1b408f843d1c63afbbdcf80c40e4c88d33509f/share/qemu/edk2-x86_64-code.fd -boot order=d,splash-time=0,menu=on -drive file=/Users/runner/.lima/colima/basedisk,format=raw,media=cdrom,readonly=on -drive file=/Users/runner/.lima/colima/diffdisk,if=virtio,discard=on -drive id=cdrom0,if=none,format=raw,readonly=on,file=/Users/runner/.lima/colima/cidata.iso -device virtio-scsi-pci,id=scsi0 -device scsi-cd,bus=scsi0.0,drive=cdrom0 -netdev user,id=net0,net=192.168.5.0/24,dhcpstart=192.168.5.15,hostfwd=tcp:127.0.0.1:49168-:22 -device virtio-net-pci,netdev=net0,mac=52:55:55:be:6e:dd -device virtio-rng-pci -display none -device virtio-vga -device virtio-keyboard-pci -device virtio-mouse-pci -device qemu-xhci,id=usb-bus -parallel none -chardev socket,id=char-serial,path=/Users/runner/.lima/colima/serial.sock,server=on,wait=off,logfile=/Users/runner/.lima/colima/serial.log -serial chardev:char-serial -chardev socket,id=char-serial-virtio,path=/Users/runner/.lima/colima/serialv.sock,server=on,wait=off,logfile=/Users/runner/.lima/colima/serialv.log -device virtio-serial-pci,id=virtio-serial0,max_ports=1 -device virtconsole,chardev=char-serial-virtio,id=console0 -virtfs local,mount_tag=mount0,path=/Users/runner,security_model=none -virtfs local,mount_tag=mount1,path=/tmp/colima,security_model=none -chardev socket,id=char-qmp,path=/Users/runner/.lima/colima/qmp.sock,server=on,wait=off -qmp chardev:char-qmp -name lima-colima -pidfile /Users/runner/.lima/colima/qemu.pid]","time":"2023-08-26T07:16:43Z"}
|
||||
{"level":"info","msg":"Waiting for the essential requirement 1 of 3: \"ssh\"","time":"2023-08-26T07:16:43Z"}
|
||||
{"level":"debug","msg":"executing script \"ssh\"","time":"2023-08-26T07:16:43Z"}
|
||||
{"level":"debug","msg":"executing ssh for script \"ssh\": /usr/bin/ssh [ssh -F /dev/null -o IdentityFile=\"/Users/runner/.lima/_config/user\" -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o NoHostAuthenticationForLocalhost=yes -o GSSAPIAuthentication=no -o PreferredAuthentications=publickey -o Compression=no -o BatchMode=yes -o IdentitiesOnly=yes -o Ciphers=\"^aes128-gcm@openssh.com,aes256-gcm@openssh.com\" -o User=runner -o ControlMaster=auto -o ControlPath=\"/Users/runner/.lima/colima/ssh.sock\" -o ControlPersist=5m -p 49168 127.0.0.1 -- /bin/bash]","time":"2023-08-26T07:16:43Z"}
|
||||
{"level":"debug","msg":"stdout=\"\", stderr=\"ssh: connect to host 127.0.0.1 port 49168: Connection refused\\r\\n\", err=failed to execute script \"ssh\": stdout=\"\", stderr=\"ssh: connect to host 127.0.0.1 port 49168: Connection refused\\r\\n\": exit status 255","time":"2023-08-26T07:16:43Z"}
|
||||
{"level":"debug","msg":"qemu[stderr]: qemu-system-x86_64: Unknown Error","time":"2023-08-26T07:16:43Z"}
|
||||
{"level":"info","msg":"Driver stopped due to error: \"exit status 255\"","time":"2023-08-26T07:16:43Z"}
|
||||
{"level":"info","msg":"Shutting down the host agent","time":"2023-08-26T07:16:44Z"}
|
||||
{"level":"debug","msg":"shutting down the SSH master","time":"2023-08-26T07:16:44Z"}
|
||||
{"level":"debug","msg":"executing ssh for exiting the master: /usr/bin/ssh [ssh -F /dev/null -o IdentityFile=\"/Users/runner/.lima/_config/user\" -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o NoHostAuthenticationForLocalhost=yes -o GSSAPIAuthentication=no -o PreferredAuthentications=publickey -o Compression=no -o BatchMode=yes -o IdentitiesOnly=yes -o Ciphers=\"^aes128-gcm@openssh.com,aes256-gcm@openssh.com\" -o User=runner -o ControlMaster=auto -o ControlPath=\"/Users/runner/.lima/colima/ssh.sock\" -o ControlPersist=5m -O exit -p 49168 127.0.0.1]","time":"2023-08-26T07:16:44Z"}
|
||||
{"error":"failed to execute `ssh -O exit -p 49168 127.0.0.1`, out=\"Control socket connect(/Users/runner/.lima/colima/ssh.sock): No such file or directory\\r\\n\": exit status 255","level":"warning","msg":"failed to exit SSH master","time":"2023-08-26T07:16:44Z"}
|
||||
{"level":"info","msg":"Shutting down QEMU with ACPI","time":"2023-08-26T07:16:44Z"}
|
||||
{"error":"dial unix /Users/runner/.lima/colima/qmp.sock: connect: connection refused","level":"warning","msg":"failed to open the QMP socket \"/Users/runner/.lima/colima/qmp.sock\", forcibly killing QEMU","time":"2023-08-26T07:16:44Z"}
|
||||
{"level":"info","msg":"QEMU has already exited","time":"2023-08-26T07:16:44Z"}
|
||||
```
|
||||
|
||||
To fix this issue you can replace the existing signature of QEMU binary with
|
||||
the required entitlements as suggested in https://github.com/abiosoft/colima/issues/786#issuecomment-1693629650.
|
||||
This can be done within this action by setting the env var `SIGN_QEMU_BINARY=1`:
|
||||
|
||||
```yaml
|
||||
-
|
||||
name: Set up Docker
|
||||
uses: crazy-max/ghaction-setup-docker@v1
|
||||
env:
|
||||
SIGN_QEMU_BINARY: 1
|
||||
# v27.3.0-rc.1 from test channel
|
||||
version: type=archive,version=27.3.0-rc.1,channel=test
|
||||
```
|
||||
|
||||
#### `type=image`
|
||||
|
||||
Other possible source type is `image` which will pull the Docker binaries from the `moby/moby-bin` and
|
||||
`dockereng/cli-bin` Docker Hub repositories.
|
||||
The advantage of using this source type is that these images are built by the Moby and Docker CI pipelines
|
||||
for each branch and PR, so you can use the `tag` input to install a specific version or branch (e.g. `master`).
|
||||
|
||||
| Key | Default | Description |
|
||||
|-----------|------------|--------------------------------------------------------------------------------------|
|
||||
| `tag` | `latest` | The image tag to use. |
|
||||
|
||||
See https://hub.docker.com/r/moby/moby-bin/tags and https://hub.docker.com/r/dockereng/cli-bin/tags for available tags.
|
||||
|
||||
Examples:
|
||||
```yaml
|
||||
# install last stable released version from bin images
|
||||
version: type=image
|
||||
version: type=image,tag=latest # same as above
|
||||
```
|
||||
|
||||
```yaml
|
||||
# a cutting-edge version from the `master` branch
|
||||
version: type=image,tag=master
|
||||
```
|
||||
|
||||
```yaml
|
||||
# install v27.4.0 from bin images
|
||||
version: type=image,tag=27.4.0
|
||||
```
|
||||
|
||||
### outputs
|
||||
|
||||
The following outputs are available
|
||||
|
||||
| Name | Type | Description |
|
||||
|--------|--------|---------------------------------------|
|
||||
| `sock` | String | Docker socket path |
|
||||
| `tcp` | String | Docker TCP address if tcp-port is set |
|
||||
|
||||
## Contributing
|
||||
|
||||
Want to contribute? Awesome! The most basic way to show your support is to star
|
||||
the project, or to raise issues. If you want to open a pull request, please
|
||||
read the [contributing guidelines](.github/CONTRIBUTING.md).
|
||||
|
||||
You can also support this project by [**becoming a sponsor on GitHub**](https://github.com/sponsors/crazy-max)
|
||||
or by making a [PayPal donation](https://www.paypal.me/crazyws) to ensure this
|
||||
journey continues indefinitely!
|
||||
|
||||
Thanks again for your support, it is much appreciated! :pray:
|
||||
Want to contribute? Awesome! You can find information about contributing to
|
||||
this project in the [CONTRIBUTING.md](/.github/CONTRIBUTING.md)
|
||||
|
||||
## License
|
||||
|
||||
|
||||
+196
-18
@@ -1,6 +1,8 @@
|
||||
import {beforeEach, describe, expect, test} from '@jest/globals';
|
||||
import {beforeEach, describe, expect, test} from 'vitest';
|
||||
import * as os from 'os';
|
||||
import * as path from 'path';
|
||||
|
||||
import * as context from '../src/context';
|
||||
import * as context from '../src/context.js';
|
||||
|
||||
describe('getInputs', () => {
|
||||
beforeEach(() => {
|
||||
@@ -13,46 +15,222 @@ describe('getInputs', () => {
|
||||
});
|
||||
|
||||
// prettier-ignore
|
||||
test.each([
|
||||
const cases: [number, Map<string, string>, context.Inputs][] = [
|
||||
[
|
||||
0,
|
||||
new Map<string, string>([
|
||||
['version', 'v23.0.1'],
|
||||
['version', 'v24.0.8'],
|
||||
['set-host', 'false'],
|
||||
['rootless', 'false'],
|
||||
]),
|
||||
{
|
||||
version: 'v23.0.1',
|
||||
channel: '',
|
||||
source: {
|
||||
type: 'archive',
|
||||
version: 'v24.0.8',
|
||||
channel: 'stable'
|
||||
},
|
||||
context: '',
|
||||
daemonConfig: '',
|
||||
} as context.Inputs
|
||||
rootless: false,
|
||||
setHost: false,
|
||||
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
|
||||
githubToken: '',
|
||||
}
|
||||
],
|
||||
[
|
||||
1,
|
||||
new Map<string, string>([
|
||||
['version', 'v23.0.0-rc.4'],
|
||||
['version', 'v24.0.0-rc.4'],
|
||||
['channel', 'test'],
|
||||
['context', 'foo'],
|
||||
['daemon-config', `{"debug":true,"features":{"containerd-snapshotter":true}}`],
|
||||
['set-host', 'false'],
|
||||
['rootless', 'false'],
|
||||
]),
|
||||
{
|
||||
version: 'v23.0.0-rc.4',
|
||||
channel: 'test',
|
||||
source: {
|
||||
type: 'archive',
|
||||
version: 'v24.0.0-rc.4',
|
||||
channel: 'test'
|
||||
},
|
||||
context: 'foo',
|
||||
daemonConfig: `{"debug":true,"features":{"containerd-snapshotter":true}}`,
|
||||
} as context.Inputs
|
||||
rootless: false,
|
||||
setHost: false,
|
||||
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
|
||||
githubToken: '',
|
||||
}
|
||||
],
|
||||
[
|
||||
2,
|
||||
new Map<string, string>([]),
|
||||
new Map<string, string>([
|
||||
['set-host', 'true'],
|
||||
['rootless', 'false'],
|
||||
]),
|
||||
{
|
||||
version: 'latest',
|
||||
channel: '',
|
||||
source: {
|
||||
type: 'archive',
|
||||
version: 'latest',
|
||||
channel: 'stable',
|
||||
},
|
||||
context: '',
|
||||
daemonConfig: '',
|
||||
} as context.Inputs
|
||||
]
|
||||
])(
|
||||
'[%d] given %p as inputs, returns %p',
|
||||
rootless: false,
|
||||
setHost: true,
|
||||
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
|
||||
githubToken: '',
|
||||
}
|
||||
],
|
||||
[
|
||||
3,
|
||||
new Map<string, string>([
|
||||
['version', 'type=image,tag=master'],
|
||||
['context', 'foo'],
|
||||
['daemon-config', `{"debug":true,"features":{"containerd-snapshotter":true}}`],
|
||||
['set-host', 'false'],
|
||||
['rootless', 'false'],
|
||||
]),
|
||||
{
|
||||
source: {
|
||||
type: 'image',
|
||||
tag: 'master',
|
||||
},
|
||||
context: 'foo',
|
||||
daemonConfig: `{"debug":true,"features":{"containerd-snapshotter":true}}`,
|
||||
rootless: false,
|
||||
setHost: false,
|
||||
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
|
||||
githubToken: '',
|
||||
}
|
||||
],
|
||||
[
|
||||
4,
|
||||
new Map<string, string>([
|
||||
['version', 'type=image'],
|
||||
['set-host', 'false'],
|
||||
['rootless', 'false'],
|
||||
]),
|
||||
{
|
||||
source: {
|
||||
type: 'image',
|
||||
tag: 'latest',
|
||||
},
|
||||
context: '',
|
||||
daemonConfig: '',
|
||||
rootless: false,
|
||||
setHost: false,
|
||||
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
|
||||
githubToken: '',
|
||||
}
|
||||
],
|
||||
[
|
||||
5,
|
||||
new Map<string, string>([
|
||||
['version', 'type=archive'],
|
||||
['set-host', 'false'],
|
||||
['rootless', 'false'],
|
||||
]),
|
||||
{
|
||||
source: {
|
||||
type: 'archive',
|
||||
version: 'latest',
|
||||
channel: 'stable',
|
||||
},
|
||||
setHost: false,
|
||||
context: '',
|
||||
daemonConfig: '',
|
||||
rootless: false,
|
||||
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
|
||||
githubToken: '',
|
||||
}
|
||||
],
|
||||
[
|
||||
6,
|
||||
new Map<string, string>([
|
||||
['version', 'version=v27.2.0,channel=test'],
|
||||
['set-host', 'false'],
|
||||
['rootless', 'false'],
|
||||
]),
|
||||
{
|
||||
source: {
|
||||
type: 'archive',
|
||||
version: 'v27.2.0',
|
||||
channel: 'test',
|
||||
},
|
||||
setHost: false,
|
||||
context: '',
|
||||
daemonConfig: '',
|
||||
rootless: false,
|
||||
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
|
||||
githubToken: '',
|
||||
}
|
||||
],
|
||||
[
|
||||
7,
|
||||
new Map<string, string>([
|
||||
['version', 'type=image,tag=27.2.1'],
|
||||
['set-host', 'false'],
|
||||
['rootless', 'false'],
|
||||
]),
|
||||
{
|
||||
source: {
|
||||
type: 'image',
|
||||
tag: '27.2.1',
|
||||
},
|
||||
setHost: false,
|
||||
context: '',
|
||||
daemonConfig: '',
|
||||
rootless: false,
|
||||
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
|
||||
githubToken: '',
|
||||
}
|
||||
],
|
||||
[
|
||||
8,
|
||||
new Map<string, string>([
|
||||
['version', 'type=image,tag=27.2.1'],
|
||||
['set-host', 'false'],
|
||||
['rootless', 'true']
|
||||
]),
|
||||
{
|
||||
source: {
|
||||
type: 'image',
|
||||
tag: '27.2.1',
|
||||
},
|
||||
setHost: false,
|
||||
context: '',
|
||||
daemonConfig: '',
|
||||
rootless: true,
|
||||
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
|
||||
githubToken: '',
|
||||
}
|
||||
],
|
||||
[
|
||||
9,
|
||||
new Map<string, string>([
|
||||
['version', 'v24.0.8'],
|
||||
['tcp-port', '2378'],
|
||||
['set-host', 'false'],
|
||||
['rootless', 'false'],
|
||||
]),
|
||||
{
|
||||
source: {
|
||||
type: 'archive',
|
||||
version: 'v24.0.8',
|
||||
channel: 'stable'
|
||||
},
|
||||
context: '',
|
||||
daemonConfig: '',
|
||||
tcpPort: 2378,
|
||||
rootless: false,
|
||||
setHost: false,
|
||||
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
|
||||
githubToken: '',
|
||||
}
|
||||
],
|
||||
];
|
||||
test.each(cases)(
|
||||
'[%d] given %o as inputs, returns %o',
|
||||
async (num: number, inputs: Map<string, string>, expected: context.Inputs) => {
|
||||
inputs.forEach((value: string, name: string) => {
|
||||
setInput(name, value);
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
import fs from 'node:fs';
|
||||
import os from 'node:os';
|
||||
import path from 'node:path';
|
||||
|
||||
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'docker-setup-docker-action-'));
|
||||
|
||||
process.env = Object.assign({}, process.env, {
|
||||
TEMP: tmpDir,
|
||||
GITHUB_REPOSITORY: 'docker/setup-docker-action',
|
||||
RUNNER_TEMP: path.join(tmpDir, 'runner-temp'),
|
||||
RUNNER_TOOL_CACHE: path.join(tmpDir, 'runner-tool-cache')
|
||||
});
|
||||
+29
-5
@@ -1,14 +1,14 @@
|
||||
# https://help.github.com/en/articles/metadata-syntax-for-github-actions
|
||||
name: 'Docker Setup Docker'
|
||||
description: 'Set up Docker for use in GitHub Actions by downloading and installing a version of Docker CE'
|
||||
author: 'crazy-max'
|
||||
name: Docker Setup Docker
|
||||
description: Set up Docker for use in GitHub Actions by downloading and installing a version of Docker CE
|
||||
author: docker
|
||||
branding:
|
||||
icon: 'anchor'
|
||||
color: 'blue'
|
||||
|
||||
inputs:
|
||||
version:
|
||||
description: 'Docker CE version. (e.g, v23.0.1)'
|
||||
description: 'Docker CE version. (e.g, v24.0.9)'
|
||||
required: false
|
||||
default: 'latest'
|
||||
channel:
|
||||
@@ -17,11 +17,35 @@ inputs:
|
||||
daemon-config:
|
||||
description: 'Docker daemon JSON configuration'
|
||||
required: false
|
||||
tcp-port:
|
||||
description: 'TCP port to expose the Docker API locally'
|
||||
required: false
|
||||
context:
|
||||
description: 'Docker context name. (default setup-docker-action)'
|
||||
required: false
|
||||
set-host:
|
||||
description: 'Set DOCKER_HOST environment variable to docker socket path'
|
||||
default: 'false'
|
||||
required: false
|
||||
rootless:
|
||||
description: 'Enable Docker rootless mode'
|
||||
default: 'false'
|
||||
required: false
|
||||
runtime-basedir:
|
||||
description: 'Docker runtime base directory'
|
||||
required: false
|
||||
github-token:
|
||||
description: "GitHub Token used to get releases and download assets"
|
||||
default: ${{ github.token }}
|
||||
required: false
|
||||
|
||||
outputs:
|
||||
sock:
|
||||
description: "Docker socket path"
|
||||
tcp:
|
||||
description: "Docker TCP address if tcp-port is set"
|
||||
|
||||
runs:
|
||||
using: 'node16'
|
||||
using: 'node24'
|
||||
main: 'dist/index.js'
|
||||
post: 'dist/index.js'
|
||||
@@ -1,3 +1,12 @@
|
||||
comment: false
|
||||
|
||||
coverage:
|
||||
status:
|
||||
project: # settings affecting project coverage
|
||||
default:
|
||||
target: auto # auto % coverage target
|
||||
threshold: 5% # allow for 5% reduction of coverage without failing
|
||||
patch: off
|
||||
|
||||
github_checks:
|
||||
annotations: false
|
||||
+30
-10
@@ -1,13 +1,21 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
|
||||
ARG NODE_VERSION=16
|
||||
ARG NODE_VERSION=24
|
||||
|
||||
FROM node:${NODE_VERSION}-alpine AS base
|
||||
RUN apk add --no-cache cpio findutils git
|
||||
RUN apk add --no-cache cpio findutils git rsync
|
||||
WORKDIR /src
|
||||
RUN --mount=type=bind,target=.,rw \
|
||||
--mount=type=cache,target=/src/.yarn/cache <<EOT
|
||||
set -e
|
||||
corepack enable
|
||||
yarn --version
|
||||
yarn config set --home enableTelemetry 0
|
||||
EOT
|
||||
|
||||
FROM base AS deps
|
||||
RUN --mount=type=bind,target=.,rw \
|
||||
--mount=type=cache,target=/src/.yarn/cache \
|
||||
--mount=type=cache,target=/src/node_modules \
|
||||
yarn install && mkdir /vendor && cp yarn.lock /vendor
|
||||
|
||||
@@ -20,24 +28,34 @@ RUN --mount=type=bind,target=.,rw <<EOT
|
||||
git add -A
|
||||
cp -rf /vendor/* .
|
||||
if [ -n "$(git status --porcelain -- yarn.lock)" ]; then
|
||||
echo >&2 'ERROR: Vendor result differs. Please vendor your package with "docker buildx bake vendor-update"'
|
||||
echo >&2 'ERROR: Vendor result differs. Please vendor your package with "docker buildx bake vendor"'
|
||||
git status --porcelain -- yarn.lock
|
||||
exit 1
|
||||
fi
|
||||
EOT
|
||||
|
||||
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/
|
||||
RUN --mount=target=/context \
|
||||
--mount=type=cache,target=/src/.yarn/cache \
|
||||
--mount=type=cache,target=/src/node_modules <<EOT
|
||||
set -e
|
||||
rsync -a /context/. .
|
||||
rm -rf dist
|
||||
yarn run build
|
||||
mkdir /out
|
||||
cp -r dist /out
|
||||
EOT
|
||||
|
||||
FROM scratch AS build-update
|
||||
COPY --from=build /out /
|
||||
|
||||
FROM build AS build-validate
|
||||
RUN --mount=type=bind,target=.,rw <<EOT
|
||||
RUN --mount=target=/context \
|
||||
--mount=target=.,type=tmpfs <<EOT
|
||||
set -e
|
||||
rsync -a /context/. .
|
||||
git add -A
|
||||
rm -rf dist
|
||||
cp -rf /out/* .
|
||||
if [ -n "$(git status --porcelain -- dist)" ]; then
|
||||
echo >&2 'ERROR: Build result differs. Please build first with "docker buildx bake build"'
|
||||
@@ -48,22 +66,24 @@ EOT
|
||||
|
||||
FROM deps AS format
|
||||
RUN --mount=type=bind,target=.,rw \
|
||||
--mount=type=cache,target=/src/.yarn/cache \
|
||||
--mount=type=cache,target=/src/node_modules \
|
||||
yarn run format \
|
||||
&& mkdir /out && find . -name '*.ts' -not -path './node_modules/*' | cpio -pdm /out
|
||||
yarn run format && mkdir /out && find . -name '*.ts' -not -path './node_modules/*' -not -path './.yarn/*' | cpio -pdm /out
|
||||
|
||||
FROM scratch AS format-update
|
||||
COPY --from=format /out /
|
||||
|
||||
FROM deps AS lint
|
||||
RUN --mount=type=bind,target=.,rw \
|
||||
--mount=type=cache,target=/src/.yarn/cache \
|
||||
--mount=type=cache,target=/src/node_modules \
|
||||
yarn run lint
|
||||
|
||||
FROM deps AS test
|
||||
RUN --mount=type=bind,target=.,rw \
|
||||
--mount=type=cache,target=/src/.yarn/cache \
|
||||
--mount=type=cache,target=/src/node_modules \
|
||||
yarn run test --coverageDirectory=/tmp/coverage
|
||||
yarn run test --coverage --coverage.reportsDirectory=/tmp/coverage
|
||||
|
||||
FROM scratch AS test-coverage
|
||||
COPY --from=test /tmp/coverage /
|
||||
+9
-9
@@ -1,16 +1,16 @@
|
||||
require('./sourcemap-register.js');(()=>{var __webpack_modules__={7351:function(r,a,i){"use strict";var s=this&&this.__createBinding||(Object.create?function(r,a,i,s){if(s===undefined)s=i;Object.defineProperty(r,s,{enumerable:true,get:function(){return a[i]}})}:function(r,a,i,s){if(s===undefined)s=i;r[s]=a[i]});var p=this&&this.__setModuleDefault||(Object.create?function(r,a){Object.defineProperty(r,"default",{enumerable:true,value:a})}:function(r,a){r["default"]=a});var d=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var a={};if(r!=null)for(var i in r)if(i!=="default"&&Object.hasOwnProperty.call(r,i))s(a,r,i);p(a,r);return a};Object.defineProperty(a,"__esModule",{value:true});a.issue=a.issueCommand=void 0;const l=d(i(2037));const u=i(5278);function issueCommand(r,a,i){const s=new Command(r,a,i);process.stdout.write(s.toString()+l.EOL)}a.issueCommand=issueCommand;function issue(r,a=""){issueCommand(r,{},a)}a.issue=issue;const c="::";class Command{constructor(r,a,i){if(!r){r="missing.command"}this.command=r;this.properties=a;this.message=i}toString(){let r=c+this.command;if(this.properties&&Object.keys(this.properties).length>0){r+=" ";let a=true;for(const i in this.properties){if(this.properties.hasOwnProperty(i)){const s=this.properties[i];if(s){if(a){a=false}else{r+=","}r+=`${i}=${escapeProperty(s)}`}}}}r+=`${c}${escapeData(this.message)}`;return r}}function escapeData(r){return u.toCommandValue(r).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function escapeProperty(r){return u.toCommandValue(r).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}},2186:function(r,a,i){"use strict";var s=this&&this.__createBinding||(Object.create?function(r,a,i,s){if(s===undefined)s=i;Object.defineProperty(r,s,{enumerable:true,get:function(){return a[i]}})}:function(r,a,i,s){if(s===undefined)s=i;r[s]=a[i]});var p=this&&this.__setModuleDefault||(Object.create?function(r,a){Object.defineProperty(r,"default",{enumerable:true,value:a})}:function(r,a){r["default"]=a});var d=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var a={};if(r!=null)for(var i in r)if(i!=="default"&&Object.hasOwnProperty.call(r,i))s(a,r,i);p(a,r);return a};var l=this&&this.__awaiter||function(r,a,i,s){function adopt(r){return r instanceof i?r:new i((function(a){a(r)}))}return new(i||(i=Promise))((function(i,p){function fulfilled(r){try{step(s.next(r))}catch(r){p(r)}}function rejected(r){try{step(s["throw"](r))}catch(r){p(r)}}function step(r){r.done?i(r.value):adopt(r.value).then(fulfilled,rejected)}step((s=s.apply(r,a||[])).next())}))};Object.defineProperty(a,"__esModule",{value:true});a.getIDToken=a.getState=a.saveState=a.group=a.endGroup=a.startGroup=a.info=a.notice=a.warning=a.error=a.debug=a.isDebug=a.setFailed=a.setCommandEcho=a.setOutput=a.getBooleanInput=a.getMultilineInput=a.getInput=a.addPath=a.setSecret=a.exportVariable=a.ExitCode=void 0;const u=i(7351);const c=i(717);const m=i(5278);const h=d(i(2037));const v=d(i(1017));const g=i(8041);var _;(function(r){r[r["Success"]=0]="Success";r[r["Failure"]=1]="Failure"})(_=a.ExitCode||(a.ExitCode={}));function exportVariable(r,a){const i=m.toCommandValue(a);process.env[r]=i;const s=process.env["GITHUB_ENV"]||"";if(s){return c.issueFileCommand("ENV",c.prepareKeyValueMessage(r,a))}u.issueCommand("set-env",{name:r},i)}a.exportVariable=exportVariable;function setSecret(r){u.issueCommand("add-mask",{},r)}a.setSecret=setSecret;function addPath(r){const a=process.env["GITHUB_PATH"]||"";if(a){c.issueFileCommand("PATH",r)}else{u.issueCommand("add-path",{},r)}process.env["PATH"]=`${r}${v.delimiter}${process.env["PATH"]}`}a.addPath=addPath;function getInput(r,a){const i=process.env[`INPUT_${r.replace(/ /g,"_").toUpperCase()}`]||"";if(a&&a.required&&!i){throw new Error(`Input required and not supplied: ${r}`)}if(a&&a.trimWhitespace===false){return i}return i.trim()}a.getInput=getInput;function getMultilineInput(r,a){const i=getInput(r,a).split("\n").filter((r=>r!==""));if(a&&a.trimWhitespace===false){return i}return i.map((r=>r.trim()))}a.getMultilineInput=getMultilineInput;function getBooleanInput(r,a){const i=["true","True","TRUE"];const s=["false","False","FALSE"];const p=getInput(r,a);if(i.includes(p))return true;if(s.includes(p))return false;throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${r}\n`+`Support boolean input list: \`true | True | TRUE | false | False | FALSE\``)}a.getBooleanInput=getBooleanInput;function setOutput(r,a){const i=process.env["GITHUB_OUTPUT"]||"";if(i){return c.issueFileCommand("OUTPUT",c.prepareKeyValueMessage(r,a))}process.stdout.write(h.EOL);u.issueCommand("set-output",{name:r},m.toCommandValue(a))}a.setOutput=setOutput;function setCommandEcho(r){u.issue("echo",r?"on":"off")}a.setCommandEcho=setCommandEcho;function setFailed(r){process.exitCode=_.Failure;error(r)}a.setFailed=setFailed;function isDebug(){return process.env["RUNNER_DEBUG"]==="1"}a.isDeLine truncated
|
||||
/*!
|
||||
* is-plain-object <https://github.com/jonschlinkert/is-plain-object>
|
||||
*
|
||||
* Copyright (c) 2014-2017, Jon Schlinkert.
|
||||
* Released under the MIT License.
|
||||
*/function isObject(r){return Object.prototype.toString.call(r)==="[object Object]"}function isPlainObject(r){var a,i;if(isObject(r)===false)return false;a=r.constructor;if(a===undefined)return true;i=a.prototype;if(isObject(i)===false)return false;if(i.hasOwnProperty("isPrototypeOf")===false){return false}return true}a.isPlainObject=isPlainObject},1917:(r,a,i)=>{"use strict";var s=i(1161);var p=i(8866);function renamed(r,a){return function(){throw new Error("Function yaml."+r+" is removed in js-yaml 4. "+"Use yaml."+a+" instead, which is now safe by default.")}}r.exports.Type=i(6073);r.exports.Schema=i(1082);r.exports.FAILSAFE_SCHEMA=i(8562);r.exports.JSON_SCHEMA=i(1035);r.exports.CORE_SCHEMA=i(2011);r.exports.DEFAULT_SCHEMA=i(8759);r.exports.load=s.load;r.exports.loadAll=s.loadAll;r.exports.dump=p.dump;r.exports.YAMLException=i(8179);r.exports.types={binary:i(7900),float:i(2705),map:i(6150),null:i(721),pairs:i(6860),set:i(9548),timestamp:i(9212),bool:i(4993),int:i(1615),merge:i(6104),omap:i(9046),seq:i(7283),str:i(3619)};r.exports.safeLoad=renamed("safeLoad","load");r.exports.safeLoadAll=renamed("safeLoadAll","loadAll");r.exports.safeDump=renamed("safeDump","dump")},6829:r=>{"use strict";function isNothing(r){return typeof r==="undefined"||r===null}function isObject(r){return typeof r==="object"&&r!==null}function toArray(r){if(Array.isArray(r))return r;else if(isNothing(r))return[];return[r]}function extend(r,a){var i,s,p,d;if(a){d=Object.keys(a);for(i=0,s=d.length;i<s;i+=1){p=d[i];r[p]=a[p]}}return r}function repeat(r,a){var i="",s;for(s=0;s<a;s+=1){i+=r}return i}function isNegativeZero(r){return r===0&&Number.NEGATIVE_INFINITY===1/r}r.exports.isNothing=isNothing;r.exports.isObject=isObject;r.exports.toArray=toArray;r.exports.repeat=repeat;r.exports.isNegativeZero=isNegativeZero;r.exports.extend=extend},8866:(r,a,i)=>{"use strict";var s=i(6829);var p=i(8179);var d=i(8759);var l=Object.prototype.toString;var u=Object.prototype.hasOwnProperty;var c=65279;var m=9;var h=10;var v=13;var g=32;var _=33;var w=34;var y=35;var b=37;var E=38;var S=39;var T=42;var O=44;var k=45;var P=58;var A=61;var D=62;var C=63;var R=64;var N=91;var x=93;var I=96;var L=123;var G=124;var M=125;var j={};j[0]="\\0";j[7]="\\a";j[8]="\\b";j[9]="\\t";j[10]="\\n";j[11]="\\v";j[12]="\\f";j[13]="\\r";j[27]="\\e";j[34]='\\"';j[92]="\\\\";j[133]="\\N";j[160]="\\_";j[8232]="\\L";j[8233]="\\P";var F=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];var V=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function compileStyleMap(r,a){var i,s,p,d,l,c,m;if(a===null)return{};i={};s=Object.keys(a);for(p=0,d=s.length;p<d;p+=1){l=s[p];c=String(a[l]);if(l.slice(0,2)==="!!"){l="tag:yaml.org,2002:"+l.slice(2)}m=r.compiledTypeMap["fallback"][l];if(m&&u.call(m.styleAliases,c)){c=m.styleAliases[c]}i[l]=c}return i}function encodeHex(r){var a,i,d;a=r.toString(16).toUpperCase();if(r<=255){i="x";d=2}else if(r<=65535){i="u";d=4}else if(r<=4294967295){i="U";d=8}else{throw new p("code point within a string may not be greater than 0xFFFFFFFF")}return"\\"+i+s.repeat("0",d-a.length)+a}var U=1,B=2;function State(r){this.schema=r["schema"]||d;this.indent=Math.max(1,r["indent"]||2);this.noArrayIndent=r["noArrayIndent"]||false;this.skipInvalid=r["skipInvalid"]||false;this.flowLevel=s.isNothing(r["flowLevel"])?-1:r["flowLevel"];this.styleMap=compileStyleMap(this.schema,r["styles"]||null);this.sortKeys=r["sortKeys"]||false;this.lineWidth=r["lineWidth"]||80;this.noRefs=r["noRefs"]||false;this.noCompatMode=r["noCompatMode"]||false;this.condenseFlow=r["condenseFlow"]||false;this.quotingType=r["quotingType"]==='"'?B:U;this.forceQuotes=r["forceQuotes"]||false;this.replacer=typeof r["replacer"]==="function"?r["replacer"]:null;this.implicitTypes=this.schema.compiledImplicit;this.explicitTypes=this.schema.compiledExplicit;this.tag=null;this.result="";this.duplicates=[];this.usedDuplicates=null}function indentString(r,a){var i=s.repeat(" ",a),p=0,d=-1,l="",u,c=r.length;while(p<c){d=r.indexOf("\n",p);if(d===-1){u=r.slice(p);p=c}else{u=r.slice(p,d+1);p=d+1}if(u.length&&u!=="\n")l+=i;l+=u}return l}function generateNextLine(r,a){return"\n"+s.repeat(" ",r.indent*a)}function testImplicitResolving(r,a){var i,s,p;for(i=0,s=r.implicitTypes.length;i<s;i+=1){p=r.implicitTypes[i];if(p.resolve(a)){return true}}return false}function isWhitespace(r){return r===g||r===m}function isPrintable(r){return 32<=r&&r<=126||161<=r&&r<=55295&&r!==8232&&r!==8233||57344<=r&&r<=65533&&r!==c||65536<=r&&r<=1114111}function isNsCharOrWhitespace(r){return isPrintable(r)&&r!==c&&r!==v&&r!==h}function isPlainSafe(r,a,i){var s=isNsCharOrWhitespace(r);var p=s&&!isWhitespace(r);return(i?s:s&&r!==O&&r!==N&&r!==x&&r!==L&&r!==M)&&r!==y&&!(a===P&&!p)||isNsCharOrWhitespace(a)&&!isWhitespace(a)&&r===y||a===P&&p}function isPlainSafeFirst(r){return isPrintable(r)&&r!==c&&!isWhitespace(r)&&r!==k&&r!==C&&r!==P&&r!==O&&r!==N&&r!==x&&r!==L&&r!==M&&r!==y&&r!==E&&r!==T&&r!==_&&r!==G&&r!==A&&r!==D&&r!=Line truncated
|
||||
import './sourcemap-register.cjs';import{createRequire as e}from"module";var t={3311:function(e,t){var r=this&&this.__awaiter||function(e,t,r,n){function adopt(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,s){function fulfilled(e){try{step(n.next(e))}catch(e){s(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){s(e)}}function step(e){e.done?r(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:true});t.ClientStreamingCall=void 0;class ClientStreamingCall{constructor(e,t,r,n,s,o,i){this.method=e;this.requestHeaders=t;this.requests=r;this.headers=n;this.response=s;this.status=o;this.trailers=i}then(e,t){return this.promiseFinished().then((t=>e?Promise.resolve(e(t)):t),(e=>t?Promise.resolve(t(e)):Promise.reject(e)))}promiseFinished(){return r(this,void 0,void 0,(function*(){let[e,t,r,n]=yield Promise.all([this.headers,this.response,this.status,this.trailers]);return{method:this.method,requestHeaders:this.requestHeaders,headers:e,response:t,status:r,trailers:n}}))}}t.ClientStreamingCall=ClientStreamingCall},9499:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.Deferred=t.DeferredState=void 0;var r;(function(e){e[e["PENDING"]=0]="PENDING";e[e["REJECTED"]=1]="REJECTED";e[e["RESOLVED"]=2]="RESOLVED"})(r=t.DeferredState||(t.DeferredState={}));class Deferred{constructor(e=true){this._state=r.PENDING;this._promise=new Promise(((e,t)=>{this._resolve=e;this._reject=t}));if(e){this._promise.catch((e=>{}))}}get state(){return this._state}get promise(){return this._promise}resolve(e){if(this.state!==r.PENDING)throw new Error(`cannot resolve ${r[this.state].toLowerCase()}`);this._resolve(e);this._state=r.RESOLVED}reject(e){if(this.state!==r.PENDING)throw new Error(`cannot reject ${r[this.state].toLowerCase()}`);this._reject(e);this._state=r.REJECTED}resolvePending(e){if(this._state===r.PENDING)this.resolve(e)}rejectPending(e){if(this._state===r.PENDING)this.reject(e)}}t.Deferred=Deferred},800:function(e,t){var r=this&&this.__awaiter||function(e,t,r,n){function adopt(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,s){function fulfilled(e){try{step(n.next(e))}catch(e){s(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){s(e)}}function step(e){e.done?r(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:true});t.DuplexStreamingCall=void 0;class DuplexStreamingCall{constructor(e,t,r,n,s,o,i){this.method=e;this.requestHeaders=t;this.requests=r;this.headers=n;this.responses=s;this.status=o;this.trailers=i}then(e,t){return this.promiseFinished().then((t=>e?Promise.resolve(e(t)):t),(e=>t?Promise.resolve(t(e)):Promise.reject(e)))}promiseFinished(){return r(this,void 0,void 0,(function*(){let[e,t,r]=yield Promise.all([this.headers,this.status,this.trailers]);return{method:this.method,requestHeaders:this.requestHeaders,headers:e,status:t,trailers:r}}))}}t.DuplexStreamingCall=DuplexStreamingCall},6762:(e,t,r)=>{var n;n={value:true};var s=r(2554);Object.defineProperty(t,"C0",{enumerable:true,get:function(){return s.ServiceType}});var o=r(3402);n={enumerable:true,get:function(){return o.readMethodOptions}};n={enumerable:true,get:function(){return o.readMethodOption}};n={enumerable:true,get:function(){return o.readServiceOption}};var i=r(422);n={enumerable:true,get:function(){return i.RpcError}};var a=r(3474);n={enumerable:true,get:function(){return a.mergeRpcOptions}};var c=r(6407);n={enumerable:true,get:function(){return c.RpcOutputStreamController}};var l=r(5435);n={enumerable:true,get:function(){return l.TestTransport}};var u=r(9499);n={enumerable:true,get:function(){return u.Deferred}};n={enumerable:true,get:function(){return u.DeferredState}};var A=r(800);n={enumerable:true,get:function(){return A.DuplexStreamingCall}};var d=r(3311);n={enumerable:true,get:function(){return d.ClientStreamingCall}};var p=r(2715);n={enumerable:true,get:function(){return p.ServerStreamingCall}};var m=r(738);n={enumerable:true,get:function(){return m.UnaryCall}};var h=r(4359);n={enumerable:true,get:function(){return h.stackIntercept}};n={enumerable:true,get:function(){return h.stackDuplexStreamingInterceptors}};n={enumerable:true,get:function(){return h.stackClientStreamingInterceptors}};n={enumerable:true,get:function(){return h.stackServerStreamingInterceptors}};n={enumerable:true,get:function(){return h.stackUnaryInterceptors}};var g=r(4626);n={enumerable:true,get:function(){return g.ServerCallContextController}}},3402:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.readServiceOption=t.readMethodOption=t.readMethodOptions=t.normalizeMethodInfo=void 0;const n=r(8372);function normalizeMethodInfo(e,t){var r,s,o;let i=e;i.service=t;i.localName=(r=i.localName)!==null&&r!==void 0?r:n.lowerCamelCase(i.name);i.serverStreaming=!!i.serverStreaming;i.clientStreaming=!!i.cliLine truncated
|
||||
/*!
|
||||
* Tmp
|
||||
*
|
||||
* Copyright (c) 2011-2017 KARASZI Istvan <github@spam.raszi.hu>
|
||||
*
|
||||
* MIT Licensed
|
||||
*/
|
||||
const s=i(7147);const p=i(2037);const d=i(1017);const l=i(6113);const u={fs:s.constants,os:p.constants};const c=i(4959);const m="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",h=/XXXXXX/,v=3,g=(u.O_CREAT||u.fs.O_CREAT)|(u.O_EXCL||u.fs.O_EXCL)|(u.O_RDWR||u.fs.O_RDWR),_=p.platform()==="win32",w=u.EBADF||u.os.errno.EBADF,y=u.ENOENT||u.os.errno.ENOENT,b=448,E=384,S="exit",T=[],O=s.rmdirSync.bind(s),k=c.sync;let P=false;function tmpName(r,a){const i=_parseArguments(r,a),p=i[0],d=i[1];try{_assertAndSanitizeOptions(p)}catch(r){return d(r)}let l=p.tries;(function _getUniqueName(){try{const r=_generateTmpName(p);s.stat(r,(function(a){if(!a){if(l-- >0)return _getUniqueName();return d(new Error("Could not get a unique tmp filename, max tries reached "+r))}d(null,r)}))}catch(r){d(r)}})()}function tmpNameSync(r){const a=_parseArguments(r),i=a[0];_assertAndSanitizeOptions(i);let p=i.tries;do{const r=_generateTmpName(i);try{s.statSync(r)}catch(a){return r}}while(p-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function file(r,a){const i=_parseArguments(r,a),p=i[0],d=i[1];tmpName(p,(function _tmpNameCreated(r,a){if(r)return d(r);s.open(a,g,p.mode||E,(function _fileCreated(r,i){if(r)return d(r);if(p.discardDescriptor){return s.close(i,(function _discardCallback(r){return d(r,a,undefined,_prepareTmpFileRemoveCallback(a,-1,p,false))}))}else{const r=p.discardDescriptor||p.detachDescriptor;d(null,a,i,_prepareTmpFileRemoveCallback(a,r?-1:i,p,false))}}))}))}function fileSync(r){const a=_parseArguments(r),i=a[0];const p=i.discardDescriptor||i.detachDescriptor;const d=tmpNameSync(i);var l=s.openSync(d,g,i.mode||E);if(i.discardDescriptor){s.closeSync(l);l=undefined}return{name:d,fd:l,removeCallback:_prepareTmpFileRemoveCallback(d,p?-1:l,i,true)}}function dir(r,a){const i=_parseArguments(r,a),p=i[0],d=i[1];tmpName(p,(function _tmpNameCreated(r,a){if(r)return d(r);s.mkdir(a,p.mode||b,(function _dirCreated(r){if(r)return d(r);d(null,a,_prepareTmpDirRemoveCallback(a,p,false))}))}))}function dirSync(r){const a=_parseArguments(r),i=a[0];const p=tmpNameSync(i);s.mkdirSync(p,i.mode||b);return{name:p,removeCallback:_prepareTmpDirRemoveCallback(p,i,true)}}function _removeFileAsync(r,a){const _handler=function(r){if(r&&!_isENOENT(r)){return a(r)}a()};if(0<=r[0])s.close(r[0],(function(){s.unlink(r[1],_handler)}));else s.unlink(r[1],_handler)}function _removeFileSync(r){let a=null;try{if(0<=r[0])s.closeSync(r[0])}catch(r){if(!_isEBADF(r)&&!_isENOENT(r))throw r}finally{try{s.unlinkSync(r[1])}catch(r){if(!_isENOENT(r))a=r}}if(a!==null){throw a}}function _prepareTmpFileRemoveCallback(r,a,i,s){const p=_prepareRemoveCallback(_removeFileSync,[a,r],s);const d=_prepareRemoveCallback(_removeFileAsync,[a,r],s,p);if(!i.keep)T.unshift(p);return s?p:d}function _prepareTmpDirRemoveCallback(r,a,i){const p=a.unsafeCleanup?c:s.rmdir.bind(s);const d=a.unsafeCleanup?k:O;const l=_prepareRemoveCallback(d,r,i);const u=_prepareRemoveCallback(p,r,i,l);if(!a.keep)T.unshift(l);return i?l:u}function _prepareRemoveCallback(r,a,i,s){let p=false;return function _cleanupCallback(d){if(!p){const l=s||_cleanupCallback;const u=T.indexOf(l);if(u>=0)T.splice(u,1);p=true;if(i||r===O||r===k){return r(a)}else{return r(a,d||function(){})}}}}function _garbageCollector(){if(!P)return;while(T.length){try{T[0]()}catch(r){}}}function _randomChars(r){let a=[],i=null;try{i=l.randomBytes(r)}catch(a){i=l.pseudoRandomBytes(r)}for(var s=0;s<r;s++){a.push(m[i[s]%m.length])}return a.join("")}function _isBlank(r){return r===null||_isUndefined(r)||!r.trim()}function _isUndefined(r){return typeof r==="undefined"}function _parseArguments(r,a){if(typeof r==="function"){return[{},r]}if(_isUndefined(r)){return[{},a]}const i={};for(const a of Object.getOwnPropertyNames(r)){i[a]=r[a]}return[i,a]}function _generateTmpName(r){const a=r.tmpdir;if(!_isUndefined(r.name))return d.join(a,r.dir,r.name);if(!_isUndefined(r.template))return d.join(a,r.dir,r.template).replace(h,_randomChars(6));const i=[r.prefix?r.prefix:"tmp","-",process.pid,"-",_randomChars(12),r.postfix?"-"+r.postfix:""].join("");return d.join(a,r.dir,i)}function _assertAndSanitizeOptions(r){r.tmpdir=_getTmpDir(r);const a=r.tmpdir;if(!_isUndefined(r.name))_assertIsRelative(r.name,"name",a);if(!_isUndefined(r.dir))_assertIsRelative(r.dir,"dir",a);if(!_isUndefined(r.template)){_assertIsRelative(r.template,"template",a);if(!r.template.match(h))throw new Error(`Invalid template, found "${r.template}".`)}if(!_isUndefined(r.tries)&&isNaN(r.tries)||r.tries<0)throw new Error(`Invalid tries, found "${r.tries}".`);r.tries=_isUndefined(r.name)?r.tries||v:1;r.keep=!!r.keep;r.detachDescriptor=!!r.detachDescriptor;r.discardDescriptor=!!r.discardDescriptor;r.unsafeCleanup=!!r.unsafeCleanup;r.dir=_isUndefined(r.dir)?"":d.relative(a,_resolvePath(r.dir,a));r.template=_isUndefined(r.template)?undefined:d.relative(a,_resolvePath(r.template,a));r.template=_isBlank(r.template)?undefined:d.relative(r.dir,r.template);r.naLine truncated
|
||||
*/const s=r(9896);const o=r(857);const i=r(6928);const a=r(6982);const c={fs:s.constants,os:o.constants};const l="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",u=/XXXXXX/,A=3,d=(c.O_CREAT||c.fs.O_CREAT)|(c.O_EXCL||c.fs.O_EXCL)|(c.O_RDWR||c.fs.O_RDWR),p=o.platform()==="win32",m=c.EBADF||c.os.errno.EBADF,h=c.ENOENT||c.os.errno.ENOENT,g=448,f=384,E="exit",y=[],C=s.rmdirSync.bind(s);let I=false;function rimraf(e,t){return s.rm(e,{recursive:true},t)}function FN_RIMRAF_SYNC(e){return s.rmSync(e,{recursive:true})}function tmpName(e,t){const r=_parseArguments(e,t),n=r[0],o=r[1];_assertAndSanitizeOptions(n,(function(e,t){if(e)return o(e);let r=t.tries;(function _getUniqueName(){try{const e=_generateTmpName(t);s.stat(e,(function(t){if(!t){if(r-- >0)return _getUniqueName();return o(new Error("Could not get a unique tmp filename, max tries reached "+e))}o(null,e)}))}catch(e){o(e)}})()}))}function tmpNameSync(e){const t=_parseArguments(e),r=t[0];const n=_assertAndSanitizeOptionsSync(r);let o=n.tries;do{const e=_generateTmpName(n);try{s.statSync(e)}catch(t){return e}}while(o-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function file(e,t){const r=_parseArguments(e,t),n=r[0],o=r[1];tmpName(n,(function _tmpNameCreated(e,t){if(e)return o(e);s.open(t,d,n.mode||f,(function _fileCreated(e,r){if(e)return o(e);if(n.discardDescriptor){return s.close(r,(function _discardCallback(e){return o(e,t,undefined,_prepareTmpFileRemoveCallback(t,-1,n,false))}))}else{const e=n.discardDescriptor||n.detachDescriptor;o(null,t,r,_prepareTmpFileRemoveCallback(t,e?-1:r,n,false))}}))}))}function fileSync(e){const t=_parseArguments(e),r=t[0];const n=r.discardDescriptor||r.detachDescriptor;const o=tmpNameSync(r);let i=s.openSync(o,d,r.mode||f);if(r.discardDescriptor){s.closeSync(i);i=undefined}return{name:o,fd:i,removeCallback:_prepareTmpFileRemoveCallback(o,n?-1:i,r,true)}}function dir(e,t){const r=_parseArguments(e,t),n=r[0],o=r[1];tmpName(n,(function _tmpNameCreated(e,t){if(e)return o(e);s.mkdir(t,n.mode||g,(function _dirCreated(e){if(e)return o(e);o(null,t,_prepareTmpDirRemoveCallback(t,n,false))}))}))}function dirSync(e){const t=_parseArguments(e),r=t[0];const n=tmpNameSync(r);s.mkdirSync(n,r.mode||g);return{name:n,removeCallback:_prepareTmpDirRemoveCallback(n,r,true)}}function _removeFileAsync(e,t){const _handler=function(e){if(e&&!_isENOENT(e)){return t(e)}t()};if(0<=e[0])s.close(e[0],(function(){s.unlink(e[1],_handler)}));else s.unlink(e[1],_handler)}function _removeFileSync(e){let t=null;try{if(0<=e[0])s.closeSync(e[0])}catch(e){if(!_isEBADF(e)&&!_isENOENT(e))throw e}finally{try{s.unlinkSync(e[1])}catch(e){if(!_isENOENT(e))t=e}}if(t!==null){throw t}}function _prepareTmpFileRemoveCallback(e,t,r,n){const s=_prepareRemoveCallback(_removeFileSync,[t,e],n);const o=_prepareRemoveCallback(_removeFileAsync,[t,e],n,s);if(!r.keep)y.unshift(s);return n?s:o}function _prepareTmpDirRemoveCallback(e,t,r){const n=t.unsafeCleanup?rimraf:s.rmdir.bind(s);const o=t.unsafeCleanup?FN_RIMRAF_SYNC:C;const i=_prepareRemoveCallback(o,e,r);const a=_prepareRemoveCallback(n,e,r,i);if(!t.keep)y.unshift(i);return r?i:a}function _prepareRemoveCallback(e,t,r,n){let s=false;return function _cleanupCallback(o){if(!s){const i=n||_cleanupCallback;const a=y.indexOf(i);if(a>=0)y.splice(a,1);s=true;if(r||e===C||e===FN_RIMRAF_SYNC){return e(t)}else{return e(t,o||function(){})}}}}function _garbageCollector(){if(!I)return;while(y.length){try{y[0]()}catch(e){}}}function _randomChars(e){let t=[],r=null;try{r=a.randomBytes(e)}catch(t){r=a.pseudoRandomBytes(e)}for(let n=0;n<e;n++){t.push(l[r[n]%l.length])}return t.join("")}function _isUndefined(e){return typeof e==="undefined"}function _parseArguments(e,t){if(typeof e==="function"){return[{},e]}if(_isUndefined(e)){return[{},t]}const r={};for(const t of Object.getOwnPropertyNames(e)){r[t]=e[t]}return[r,t]}function _resolvePath(e,t,r){const n=i.isAbsolute(e)?e:i.join(t,e);s.stat(n,(function(e){if(e){s.realpath(i.dirname(n),(function(e,t){if(e)return r(e);r(null,i.join(t,i.basename(n)))}))}else{s.realpath(n,r)}}))}function _resolvePathSync(e,t){const r=i.isAbsolute(e)?e:i.join(t,e);try{s.statSync(r);return s.realpathSync(r)}catch(e){const t=s.realpathSync(i.dirname(r));return i.join(t,i.basename(r))}}function _generateTmpName(e){const t=e.tmpdir;if(!_isUndefined(e.name)){return i.join(t,e.dir,e.name)}if(!_isUndefined(e.template)){return i.join(t,e.dir,e.template).replace(u,_randomChars(6))}const r=[e.prefix?e.prefix:"tmp","-",process.pid,"-",_randomChars(12),e.postfix?"-"+e.postfix:""].join("");return i.join(t,e.dir,r)}function _assertOptionsBase(e){if(!_isUndefined(e.name)){const t=e.name;if(i.isAbsolute(t))throw new Error(`name option must not contain an absolute path, found "${t}".`);const r=i.basename(t);if(r===".."||r==="."||r!==t)throw new Error(`name option must not contain a path, found "${t}".`)}if(!_isUndefined(e.template)&&!e.template.match(u)){throw new Error(`Invalid templatLine truncated
|
||||
/*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */;const escape=e=>e.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22");const normalizeLinefeeds=e=>e.replace(/\r?\n|\r/g,"\r\n");const n=[];const s=new Uint8Array([13,10]);u=0;let o=false;for(const[t,i]of e){if(typeof i==="string"){const e=b.encode(r+`; name="${escape(normalizeLinefeeds(t))}"`+`\r\n\r\n${normalizeLinefeeds(i)}\r\n`);n.push(e);u+=e.byteLength}else{const e=b.encode(`${r}; name="${escape(normalizeLinefeeds(t))}"`+(i.name?`; filename="${escape(i.name)}"`:"")+"\r\n"+`Content-Type: ${i.type||"application/octet-stream"}\r\n\r\n`);n.push(e,i,s);if(typeof i.size==="number"){u+=e.byteLength+i.size+s.byteLength}else{o=true}}}const i=b.encode(`--${t}--\r\n`);n.push(i);u+=i.byteLength;if(o){u=null}l=e;c=async function*(){for(const e of n){if(e.stream){yield*e.stream()}else{yield e}}};A=`multipart/form-data; boundary=${t}`}else if(o(e)){l=e;u=e.size;if(e.type){A=e.type}}else if(typeof e[Symbol.asyncIterator]==="function"){if(t){throw new TypeError("keepalive")}if(n.isDisturbed(e)||e.locked){throw new TypeError("Response body object should not be disturbed or locked")}r=e instanceof ReadableStream?e:s(e)}if(typeof l==="string"||n.isBuffer(l)){u=Buffer.byteLength(l)}if(c!=null){let t;r=new ReadableStream({async start(){t=c(e)[Symbol.asyncIterator]()},async pull(e){const{value:n,done:s}=await t.next();if(s){queueMicrotask((()=>{e.close();e.byobRequest?.respond(0)}))}else{if(!f(r)){const t=new Uint8Array(n);if(t.byteLength){e.enqueue(t)}}}return e.desiredSize>0},async cancel(e){await t.return()},type:"bytes"})}const d={stream:r,source:l,length:u};return[d,A]}function safelyExtractBody(e,t=false){if(e instanceof ReadableStream){g(!n.isDisturbed(e),"The body has already been consumed.");g(!e.locked,"The stream is locked.")}return extractBody(e,t)}function cloneBody(e,t){const[r,n]=t.stream.tee();t.stream=r;return{stream:n,length:t.length,source:t.source}}function throwIfAborted(e){if(e.aborted){throw new DOMException("The operation was aborted.","AbortError")}}function bodyMixinMethods(e){const t={blob(){return consumeBody(this,(e=>{let t=bodyMimeType(this);if(t===null){t=""}else if(t){t=C(t)}return new h([e],{type:t})}),e)},arrayBuffer(){return consumeBody(this,(e=>new Uint8Array(e).buffer),e)},text(){return consumeBody(this,A,e)},json(){return consumeBody(this,parseJSONFromBytes,e)},formData(){return consumeBody(this,(e=>{const t=bodyMimeType(this);if(t!==null){switch(t.essence){case"multipart/form-data":{const r=I(e,t);if(r==="failure"){throw new TypeError("Failed to parse body as FormData.")}const n=new d;n[p]=r;return n}case"application/x-www-form-urlencoded":{const t=new URLSearchParams(e.toString());const r=new d;for(const[e,n]of t){r.append(e,n)}return r}}}throw new TypeError('Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".')}),e)},bytes(){return consumeBody(this,(e=>new Uint8Array(e)),e)}};return t}function mixinBody(e){Object.assign(e.prototype,bodyMixinMethods(e))}async function consumeBody(e,t,r){m.brandCheck(e,r);if(bodyUnusable(e)){throw new TypeError("Body is unusable: Body has already been read")}throwIfAborted(e[p]);const n=c();const errorSteps=e=>n.reject(e);const successSteps=e=>{try{n.resolve(t(e))}catch(e){errorSteps(e)}};if(e[p].body==null){successSteps(Buffer.allocUnsafe(0));return n.promise}await l(e[p].body,successSteps,errorSteps);return n.promise}function bodyUnusable(e){const t=e[p].body;return t!=null&&(t.stream.locked||n.isDisturbed(t.stream))}function parseJSONFromBytes(e){return JSON.parse(A(e))}function bodyMimeType(e){const t=e[p].headersList;const r=u(t);if(r==="failure"){return null}return r}e.exports={extractBody:extractBody,safelyExtractBody:safelyExtractBody,cloneBody:cloneBody,mixinBody:mixinBody,streamRegistry:S,hasFinalizationRegistry:w,bodyUnusable:bodyUnusable}},4495:e=>{const t=["GET","HEAD","POST"];const r=new Set(t);const n=[101,204,205,304];const s=[301,302,303,307,308];const o=new Set(s);const i=["1","7","9","11","13","15","17","19","20","21","22","23","25","37","42","43","53","69","77","79","87","95","101","102","103","104","109","110","111","113","115","117","119","123","135","137","139","143","161","179","389","427","465","512","513","514","515","526","530","531","532","540","548","554","556","563","587","601","636","989","990","993","995","1719","1720","1723","2049","3659","4045","4190","5060","5061","6000","6566","6665","6666","6667","6668","6669","6679","6697","10080"];const a=new Set(i);const c=["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"];const l=new Set(c);const u=["follow","manual","error"];const A=["GET","HEAD","OPTIONS","TRACE"];const d=new Set(A);const p=["navigate","same-origin","no-cors","cors"];const m=["omit","same-origin","include"];const h=["default","no-store","reload","no-cache","force-cLine truncated
|
||||
/*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> */a[i-4]=r[0];a[i-3]=r[1];a[i-2]=r[2];a[i-1]=r[3];a[1]=o;if(o===126){a.writeUInt16BE(s,2)}else if(o===127){a[2]=a[3]=0;a.writeUIntBE(s,4,6)}a[1]|=128;for(let e=0;e<s;++e){a[i+e]=t[e]^r[e&3]}return a}}e.exports={WebsocketFrameSend:WebsocketFrameSend}},9469:(e,t,r)=>{const{createInflateRaw:n,Z_DEFAULT_WINDOWBITS:s}=r(8522);const{isValidClientWindowBits:o}=r(8625);const i=Buffer.from([0,0,255,255]);const a=Symbol("kBuffer");const c=Symbol("kLength");class PerMessageDeflate{#j;#p={};constructor(e){this.#p.serverNoContextTakeover=e.has("server_no_context_takeover");this.#p.serverMaxWindowBits=e.get("server_max_window_bits")}decompress(e,t,r){if(!this.#j){let e=s;if(this.#p.serverMaxWindowBits){if(!o(this.#p.serverMaxWindowBits)){r(new Error("Invalid server_max_window_bits"));return}e=Number.parseInt(this.#p.serverMaxWindowBits)}this.#j=n({windowBits:e});this.#j[a]=[];this.#j[c]=0;this.#j.on("data",(e=>{this.#j[a].push(e);this.#j[c]+=e.length}));this.#j.on("error",(e=>{this.#j=null;r(e)}))}this.#j.write(e);if(t){this.#j.write(i)}this.#j.flush((()=>{const e=Buffer.concat(this.#j[a],this.#j[c]);this.#j[a].length=0;this.#j[c]=0;r(null,e)}))}}e.exports={PerMessageDeflate:PerMessageDeflate}},1652:(e,t,r)=>{const{Writable:n}=r(7075);const s=r(4589);const{parserStates:o,opcodes:i,states:a,emptyBuffer:c,sentCloseFrameState:l}=r(736);const{kReadyState:u,kSentClose:A,kResponse:d,kReceivedClose:p}=r(1216);const{channels:m}=r(2414);const{isValidStatusCode:h,isValidOpcode:g,failWebsocketConnection:f,websocketMessageReceived:E,utf8Decode:y,isControlFrame:C,isTextBinaryFrame:I,isContinuationFrame:B}=r(8625);const{WebsocketFrameSend:b}=r(3264);const{closeWebSocketConnection:w}=r(6897);const{PerMessageDeflate:S}=r(9469);class ByteParser extends n{#K=[];#X=0;#Z=false;#C=o.INFO;#ee={};#te=[];#re;constructor(e,t){super();this.ws=e;this.#re=t==null?new Map:t;if(this.#re.has("permessage-deflate")){this.#re.set("permessage-deflate",new S(t))}}_write(e,t,r){this.#K.push(e);this.#X+=e.length;this.#Z=true;this.run(r)}run(e){while(this.#Z){if(this.#C===o.INFO){if(this.#X<2){return e()}const t=this.consume(2);const r=(t[0]&128)!==0;const n=t[0]&15;const s=(t[1]&128)===128;const a=!r&&n!==i.CONTINUATION;const c=t[1]&127;const l=t[0]&64;const u=t[0]&32;const A=t[0]&16;if(!g(n)){f(this.ws,"Invalid opcode received");return e()}if(s){f(this.ws,"Frame cannot be masked");return e()}if(l!==0&&!this.#re.has("permessage-deflate")){f(this.ws,"Expected RSV1 to be clear.");return}if(u!==0||A!==0){f(this.ws,"RSV1, RSV2, RSV3 must be clear");return}if(a&&!I(n)){f(this.ws,"Invalid frame type was fragmented.");return}if(I(n)&&this.#te.length>0){f(this.ws,"Expected continuation frame");return}if(this.#ee.fragmented&&a){f(this.ws,"Fragmented frame exceeded 125 bytes.");return}if((c>125||a)&&C(n)){f(this.ws,"Control frame either too large or fragmented");return}if(B(n)&&this.#te.length===0&&!this.#ee.compressed){f(this.ws,"Unexpected continuation frame");return}if(c<=125){this.#ee.payloadLength=c;this.#C=o.READ_DATA}else if(c===126){this.#C=o.PAYLOADLENGTH_16}else if(c===127){this.#C=o.PAYLOADLENGTH_64}if(I(n)){this.#ee.binaryType=n;this.#ee.compressed=l!==0}this.#ee.opcode=n;this.#ee.masked=s;this.#ee.fin=r;this.#ee.fragmented=a}else if(this.#C===o.PAYLOADLENGTH_16){if(this.#X<2){return e()}const t=this.consume(2);this.#ee.payloadLength=t.readUInt16BE(0);this.#C=o.READ_DATA}else if(this.#C===o.PAYLOADLENGTH_64){if(this.#X<8){return e()}const t=this.consume(8);const r=t.readUInt32BE(0);if(r>2**31-1){f(this.ws,"Received payload length > 2^31 bytes.");return}const n=t.readUInt32BE(4);this.#ee.payloadLength=(r<<8)+n;this.#C=o.READ_DATA}else if(this.#C===o.READ_DATA){if(this.#X<this.#ee.payloadLength){return e()}const t=this.consume(this.#ee.payloadLength);if(C(this.#ee.opcode)){this.#Z=this.parseControlFrame(t);this.#C=o.INFO}else{if(!this.#ee.compressed){this.#te.push(t);if(!this.#ee.fragmented&&this.#ee.fin){const e=Buffer.concat(this.#te);E(this.ws,this.#ee.binaryType,e);this.#te.length=0}this.#C=o.INFO}else{this.#re.get("permessage-deflate").decompress(t,this.#ee.fin,((t,r)=>{if(t){w(this.ws,1007,t.message,t.message.length);return}this.#te.push(r);if(!this.#ee.fin){this.#C=o.INFO;this.#Z=true;this.run(e);return}E(this.ws,this.#ee.binaryType,Buffer.concat(this.#te));this.#Z=true;this.#C=o.INFO;this.#te.length=0;this.run(e)}));this.#Z=false;break}}}}}consume(e){if(e>this.#X){throw new Error("Called consume() before buffers satiated.")}else if(e===0){return c}if(this.#K[0].length===e){this.#X-=this.#K[0].length;return this.#K.shift()}const t=Buffer.allocUnsafe(e);let r=0;while(r!==e){const n=this.#K[0];const{length:s}=n;if(s+r===e){t.set(this.#K.shift(),r);break}else if(s+r>e){t.set(n.subarray(0,e-r),r);this.#K[0]=n.subarray(e-r);break}else{t.set(this.#K.shift(),r);r+=n.length}}this.#X-=e;return t}parseCloseBody(e){s(e.length!==1);let t;if(e.length>=2){t=e.readUInt16BE(0)}if(t!==undefined&&!h(t)){retuLine truncated
|
||||
/* v8 ignore else -- @preserve -- Bug with vitest coverage where it sees an else branch that doesn't exist */if("response"in r){this.response=r.response}const n=Object.assign({},r.request);if(r.request.headers.authorization){n.headers=Object.assign({},r.request.headers,{authorization:r.request.headers.authorization.replace(/(?<! ) .*$/," [REDACTED]")})}n.url=n.url.replace(/\bclient_secret=\w+/g,"client_secret=[REDACTED]").replace(/\baccess_token=\w+/g,"access_token=[REDACTED]");this.request=n}}var Xp="10.0.8";var Zp={headers:{"user-agent":`octokit-request.js/${Xp} ${getUserAgent()}`}};function dist_bundle_isPlainObject(e){if(typeof e!=="object"||e===null)return false;if(Object.prototype.toString.call(e)!=="[object Object]")return false;const t=Object.getPrototypeOf(e);if(t===null)return true;const r=Object.prototype.hasOwnProperty.call(t,"constructor")&&t.constructor;return typeof r==="function"&&r instanceof r&&Function.prototype.call(r)===Function.prototype.call(e)}var noop=()=>"";async function fetchWrapper(e){const t=e.request?.fetch||globalThis.fetch;if(!t){throw new Error("fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing")}const r=e.request?.log||console;const n=e.request?.parseSuccessResponseBody!==false;const s=dist_bundle_isPlainObject(e.body)||Array.isArray(e.body)?JSONStringify(e.body):e.body;const o=Object.fromEntries(Object.entries(e.headers).map((([e,t])=>[e,String(t)])));let i;try{i=await t(e.url,{method:e.method,body:s,redirect:e.request?.redirect,headers:o,signal:e.request?.signal,...e.body&&{duplex:"half"}})}catch(t){let r="Unknown Error";if(t instanceof Error){if(t.name==="AbortError"){t.status=500;throw t}r=t.message;if(t.name==="TypeError"&&"cause"in t){if(t.cause instanceof Error){r=t.cause.message}else if(typeof t.cause==="string"){r=t.cause}}}const n=new RequestError(r,500,{request:e});n.cause=t;throw n}const a=i.status;const c=i.url;const l={};for(const[e,t]of i.headers){l[e]=t}const u={url:c,status:a,headers:l,data:""};if("deprecation"in l){const t=l.link&&l.link.match(/<([^<>]+)>; rel="deprecation"/);const n=t&&t.pop();r.warn(`[@octokit/request] "${e.method} ${e.url}" is deprecated. It is scheduled to be removed on ${l.sunset}${n?`. See ${n}`:""}`)}if(a===204||a===205){return u}if(e.method==="HEAD"){if(a<400){return u}throw new RequestError(i.statusText,a,{response:u,request:e})}if(a===304){u.data=await getResponseData(i);throw new RequestError("Not modified",a,{response:u,request:e})}if(a>=400){u.data=await getResponseData(i);throw new RequestError(toErrorMessage(u.data),a,{response:u,request:e})}u.data=n?await getResponseData(i):i.body;return u}async function getResponseData(e){const t=e.headers.get("content-type");if(!t){return e.text().catch(noop)}const r=(0,Yp.xL)(t);if(isJSONResponse(r)){let t="";try{t=await e.text();return JSONParse(t)}catch(e){return t}}else if(r.type.startsWith("text/")||r.parameters.charset?.toLowerCase()==="utf-8"){return e.text().catch(noop)}else{return e.arrayBuffer().catch((
|
||||
/* v8 ignore next -- @preserve */
|
||||
()=>new ArrayBuffer(0)))}}function isJSONResponse(e){return e.type==="application/json"||e.type==="application/scim+json"}function toErrorMessage(e){if(typeof e==="string"){return e}if(e instanceof ArrayBuffer){return"Unknown error"}if("message"in e){const t="documentation_url"in e?` - ${e.documentation_url}`:"";return Array.isArray(e.errors)?`${e.message}: ${e.errors.map((e=>JSON.stringify(e))).join(", ")}${t}`:`${e.message}${t}`}return`Unknown error: ${JSON.stringify(e)}`}function dist_bundle_withDefaults(e,t){const r=e.defaults(t);const newApi=function(e,t){const n=r.merge(e,t);if(!n.request||!n.request.hook){return fetchWrapper(r.parse(n))}const request2=(e,t)=>fetchWrapper(r.parse(r.merge(e,t)));Object.assign(request2,{endpoint:r,defaults:dist_bundle_withDefaults.bind(null,r)});return n.request.hook(request2,n)};return Object.assign(newApi,{endpoint:r,defaults:dist_bundle_withDefaults.bind(null,r)})}var em=dist_bundle_withDefaults(Jp,Zp);
|
||||
/* v8 ignore next -- @preserve */
|
||||
/* v8 ignore else -- @preserve */var tm="0.0.0-development";function _buildMessageForResponseErrors(e){return`Request failed due to following response errors:\n`+e.errors.map((e=>` - ${e.message}`)).join("\n")}var rm=class extends Error{constructor(e,t,r){super(_buildMessageForResponseErrors(r));this.request=e;this.headers=t;this.response=r;this.errors=r.errors;this.data=r.data;if(Error.captureStackTrace){Error.captureStackTrace(this,this.constructor)}}name="GraphqlResponseError";errors;data};var nm=["method","baseUrl","url","headers","request","query","mediaType","operationName"];var sm=["query","method","url"];var om=/\/api\/v3\/?$/;function graphql(e,t,r){if(r){if(typeof t==="string"&&"query"in r){return Promise.reject(new Error(`[@octokit/graphql] "query" cannot be used as variable name`))}for(const e in r){if(!sm.includes(e))continue;return Promise.reject(new Error(`[@octokit/graphql] "${e}" cannot be used as variable name`))}}const n=typeof t==="string"?Object.assign({query:t},r):t;const s=Object.keys(n).reduce(((e,t)=>{if(nm.includes(t)){e[t]=n[t];return e}if(!e.variables){e.variables={}}e.variables[t]=n[t];return e}),{});const o=n.baseUrl||e.endpoint.DEFAULTS.baseUrl;if(om.test(o)){s.url=o.replace(om,"/api/graphql")}return e(s).then((e=>{if(e.data.errors){const t={};for(const r of Object.keys(e.headers)){t[r]=e.headers[r]}throw new rm(s,t,e.data)}return e.data.data}))}function graphql_dist_bundle_withDefaults(e,t){const r=e.defaults(t);const newApi=(e,t)=>graphql(r,e,t);return Object.assign(newApi,{defaults:graphql_dist_bundle_withDefaults.bind(null,r),endpoint:r.endpoint})}var im=graphql_dist_bundle_withDefaults(em,{headers:{"user-agent":`octokit-graphql.js/${tm} ${getUserAgent()}`},method:"POST",url:"/graphql"});function withCustomRequest(e){return graphql_dist_bundle_withDefaults(e,{method:"POST",url:"/graphql"})}var am="(?:[a-zA-Z0-9_-]+)";var cm="\\.";var lm=new RegExp(`^${am}${cm}${am}${cm}${am}$`);var um=lm.test.bind(lm);async function auth(e){const t=um(e);const r=e.startsWith("v1.")||e.startsWith("ghs_");const n=e.startsWith("ghu_");const s=t?"app":r?"installation":n?"user-to-server":"oauth";return{type:"token",token:e,tokenType:s}}function withAuthorizationPrefix(e){if(e.split(/\./).length===3){return`bearer ${e}`}return`token ${e}`}async function hook(e,t,r,n){const s=t.endpoint.merge(r,n);s.headers.authorization=withAuthorizationPrefix(e);return t(s)}var Am=function createTokenAuth2(e){if(!e){throw new Error("[@octokit/auth-token] No token passed to createTokenAuth")}if(typeof e!=="string"){throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string")}e=e.replace(/^(token|bearer) +/i,"");return Object.assign(auth.bind(null,e),{hook:hook.bind(null,e)})};const dm="7.0.6";const dist_src_noop=()=>{};const hm=console.warn.bind(console);const gm=console.error.bind(console);function createLogger(e={}){if(typeof e.debug!=="function"){e.debug=dist_src_noop}if(typeof e.info!=="function"){e.info=dist_src_noop}if(typeof e.warn!=="function"){e.warn=hm}if(typeof e.error!=="function"){e.error=gm}return e}const fm=`octokit-core.js/${dm} ${getUserAgent()}`;class Octokit{static VERSION=dm;static defaults(e){const t=class extends(this){constructor(...t){const r=t[0]||{};if(typeof e==="function"){super(e(r));return}super(Object.assign({},e,r,r.userAgent&&e.userAgent?{userAgent:`${r.userAgent} ${e.userAgent}`}:null))}};return t}static plugins=[];static plugin(...e){const t=this.plugins;const r=class extends(this){static plugins=t.concat(e.filter((e=>!t.includes(e))))};return r}constructor(e={}){const t=new Gp.Collection;const r={baseUrl:em.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},e.request,{hook:t.bind(null,"request")}),mediaType:{previews:[],format:""}};r.headers["user-agent"]=e.userAgent?`${e.userAgent} ${fm}`:fm;if(e.baseUrl){r.baseUrl=e.baseUrl}if(e.previews){r.mediaType.previews=e.previews}if(e.timeZone){r.headers["time-zone"]=e.timeZone}this.request=em.defaults(r);this.graphql=withCustomRequest(this.request).defaults(r);this.log=createLogger(e.log);this.hook=t;if(!e.authStrategy){if(!e.auth){this.auth=async()=>({type:"unauthenticated"})}else{const r=Am(e.auth);t.wrap("request",r.hook);this.auth=r}}else{const{authStrategy:r,...n}=e;const s=r(Object.assign({request:this.request,log:this.log,octokit:this,octokitOptions:n},e.auth));t.wrap("request",s.hook);this.auth=s}const n=this.constructor;for(let t=0;t<n.plugins.length;++t){Object.assign(this,n.plugins[t](this,e))}}request;graphql;log;hook;auth}const Em="17.0.0";const ym={actions:{addCustomLabelsToSelfHostedRunnerForOrg:["POST /orgs/{org}/actions/runners/{runner_id}/labels"],addCustomLabelsToSelfHostedRunnerForRepo:["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],addRepoAccessToSelfHostedRunnerGroupInOrg:["PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}"],addSelectedRepoToOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repositoLine truncated
|
||||
//# sourceMappingURL=index.js.map
|
||||
+1
-1
@@ -1 +1 @@
|
||||
{"version":3,"sources":["../webpack:/docker-setup-docker/node_modules/@actions/core/lib/command.js","../webpack:/docker-setup-docker/node_modules/@actions/core/lib/core.js","../webpack:/docker-setup-docker/node_modules/@actions/core/lib/file-command.js","../webpack:/docker-setup-docker/node_modules/@actions/core/lib/oidc-utils.js","../webpack:/docker-setup-docker/node_modules/@actions/core/lib/path-utils.js","../webpack:/docker-setup-docker/node_modules/@actions/core/lib/summary.js","../webpack:/docker-setup-docker/node_modules/@actions/core/lib/utils.js","../webpack:/docker-setup-docker/node_modules/@actions/core/node_modules/uuid/dist/index.js","../webpack:/docker-setup-docker/node_modules/@actions/core/node_modules/uuid/dist/md5.js","../webpack:/docker-setup-docker/node_modules/@actions/core/node_modules/uuid/dist/nil.js","../webpack:/docker-setup-docker/node_modules/@actions/core/node_modules/uuid/dist/parse.js","../webpack:/docker-setup-docker/node_modules/@actions/core/node_modules/uuid/dist/regex.js","../webpack:/docker-setup-docker/node_modules/@actions/core/node_modules/uuid/dist/rng.js","../webpack:/docker-setup-docker/node_modules/@actions/core/node_modules/uuid/dist/sha1.js","../webpack:/docker-setup-docker/node_modules/@actions/core/node_modules/uuid/dist/stringify.js","../webpack:/docker-setup-docker/node_modules/@actions/core/node_modules/uuid/dist/v1.js","../webpack:/docker-setup-docker/node_modules/@actions/core/node_modules/uuid/dist/v3.js","../webpack:/docker-setup-docker/node_modules/@actions/core/node_modules/uuid/dist/v35.js","../webpack:/docker-setup-docker/node_modules/@actions/core/node_modules/uuid/dist/v4.js","../webpack:/docker-setup-docker/node_modules/@actions/core/node_modules/uuid/dist/v5.js","../webpack:/docker-setup-docker/node_modules/@actions/core/node_modules/uuid/dist/validate.js","../webpack:/docker-setup-docker/node_modules/@actions/core/node_modules/uuid/dist/version.js","../webpack:/docker-setup-docker/node_modules/@actions/exec/lib/exec.js","../webpack:/docker-setup-docker/node_modules/@actions/exec/lib/toolrunner.js","../webpack:/docker-setup-docker/node_modules/@actions/github/lib/context.js","../webpack:/docker-setup-docker/node_modules/@actions/github/lib/github.js","../webpack:/docker-setup-docker/node_modules/@actions/github/lib/internal/utils.js","../webpack:/docker-setup-docker/node_modules/@actions/github/lib/utils.js","../webpack:/docker-setup-docker/node_modules/@actions/github/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js","../webpack:/docker-setup-docker/node_modules/@actions/http-client/lib/auth.js","../webpack:/docker-setup-docker/node_modules/@actions/http-client/lib/index.js","../webpack:/docker-setup-docker/node_modules/@actions/http-client/lib/proxy.js","../webpack:/docker-setup-docker/node_modules/@actions/io/lib/io-util.js","../webpack:/docker-setup-docker/node_modules/@actions/io/lib/io.js","../webpack:/docker-setup-docker/node_modules/@actions/tool-cache/lib/manifest.js","../webpack:/docker-setup-docker/node_modules/@actions/tool-cache/lib/retry-helper.js","../webpack:/docker-setup-docker/node_modules/@actions/tool-cache/lib/tool-cache.js","../webpack:/docker-setup-docker/node_modules/@actions/tool-cache/node_modules/semver/semver.js","../webpack:/docker-setup-docker/node_modules/@actions/tool-cache/node_modules/uuid/lib/bytesToUuid.js","../webpack:/docker-setup-docker/node_modules/@actions/tool-cache/node_modules/uuid/lib/rng.js","../webpack:/docker-setup-docker/node_modules/@actions/tool-cache/node_modules/uuid/v4.js","../webpack:/docker-setup-docker/node_modules/@docker/actions-toolkit/lib/context.js","../webpack:/docker-setup-docker/node_modules/@docker/actions-toolkit/lib/docker/assets.js","../webpack:/docker-setup-docker/node_modules/@docker/actions-toolkit/lib/docker/docker.js","../webpack:/docker-setup-docker/node_modules/@docker/actions-toolkit/lib/docker/install.js","../webpack:/docker-setup-docker/node_modules/@docker/actions-toolkit/lib/exec.js","../webpack:/docker-setup-docker/node_modules/@docker/actions-toolkit/lib/github.js","../webpack:/docker-setup-docker/node_modules/@docker/actions-toolkit/lib/index.js","../webpack:/docker-setup-docker/node_modules/@docker/actions-toolkit/lib/util.js","../webpack:/docker-setup-docker/node_modules/@octokit/auth-token/dist-node/index.js","../webpack:/docker-setup-docker/node_modules/@octokit/core/dist-node/index.js","../webpack:/docker-setup-docker/node_modules/@octokit/endpoint/dist-node/index.js","../webpack:/docker-setup-docker/node_modules/@octokit/graphql/dist-node/index.js","../webpack:/docker-setup-docker/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js","../webpack:/docker-setup-docker/node_modules/@octokit/request-error/dist-node/index.js","../webpack:/docker-setup-docker/node_modules/@octokit/request/dist-node/index.js","../webpack:/docker-setup-docker/node_modules/async-retry/lib/index.js","../webpack:/docker-setup-docker/node_modules/balancedLine truncated
|
||||
{"version":3,"file":"index.js","names":["__awaiter","this","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","Object","defineProperty","exports","ClientStreamingCall","constructor","method","requestHeaders","request","headers","response","status","trailers","requests","onfulfilled","onrejected","promiseFinished","reason","all","Deferred","DeferredState","preventUnhandledRejectionWarning","_state","PENDING","_promise","_resolve","_reject","catch","_","state","promise","Error","toLowerCase","RESOLVED","REJECTED","resolvePending","val","rejectPending","DuplexStreamingCall","responses","__webpack_unused_export__","service_type_1","__webpack_require__","enumerable","get","ServiceType","reflection_info_1","readMethodOptions","readMethodOption","readServiceOption","rpc_error_1","RpcError","rpc_options_1","mergeRpcOptions","rpc_output_stream_1","RpcOutputStreamController","test_transport_1","TestTransport","deferred_1","duplex_streaming_call_1","client_streaming_call_1","server_streaming_call_1","ServerStreamingCall","unary_call_1","UnaryCall","rpc_interceptor_1","stackIntercept","stackDuplexStreamingInterceptors","stackClientStreamingInterceptors","stackServerStreamingInterceptors","stackUnaryInterceptors","server_call_context_1","ServerCallContextController","normalizeMethodInfo","runtime_1","service","_a","_b","_c","m","localName","lowerCamelCase","name","serverStreaming","clientStreaming","options","idempotency","undefined","methodName","extensionName","extensionType","methods","find","i","fromJson","optionVal","message","code","meta","super","setPrototypeOf","prototype","toString","l","push","serviceName","entries","length","k","v","join","kind","transport","input","_d","tail","mtd","inp","opt","unary","curr","interceptors","filter","interceptUnary","reverse","interceptServerStreaming","interceptClientStreaming","duplex","interceptDuplex","assertNever","defaults","o","copy","key","keys","jsonOptions","mergeJsonOptions","binaryOptions","mergeBinaryOptions","concat","a","into","c","Date","getTime","Array","isArray","_lis","nxt","msg","err","cmp","_closed","_itState","q","onNext","callback","addLis","onMessage","onError","onComplete","list","indexOf","splice","clearLis","values","closed","notifyNext","error","complete","assert","notifyMessage","notifyError","notifyComplete","pushIt","forEach","Symbol","asyncIterator","p","first","shift","deadline","sendResponseHeadersFn","defaultStatus","detail","_cancelled","_listeners","_sendRH","notifyCancelled","sendResponseHeaders","data","cancelled","onCancel","typeName","map","suppressUncaughtRejections","headerDelay","responseDelay","betweenResponseDelay","afterResponseDelay","sentMessages","lastInput","TestInputStream","sent","single","sendComplete","completed","promiseHeaders","defaultHeaders","promiseSingleResponse","r","O","create","is","streamResponses","stream","abort","messages","delay","promiseStatus","promiseTrailers","defaultTrailers","maybeSuppressUncaught","mergeOptions","headersPromise","responsePromise","statusPromise","trailersPromise","outputStream","responseStreamClosedPromise","responseHeader","responseTrailer","ms","aborted","id","setTimeout","addEventListener","ev","clearTimeout","_completed","_sent","send","inputMessage","delayMs","inputComplete","assertFloat32","assertUInt32","assertInt32","condition","FLOAT32_MAX","FLOAT32_MIN","UINT32_MAX","INT32_MAX","INT32_MIN","arg","Number","isInteger","isFinite","base64encode","base64decode","encTable","split","decTable","charCodeAt","base64Str","es","bytes","Uint8Array","bytePos","groupPos","b","subarray","base64","WireType","UnknownFieldHandler","symbol","for","onRead","fieldNo","wireType","container","no","onWrite","writer","tag","raw","uf","last","slice","assign","BinaryReader","binaryReadOptions","binary_format_contract_1","pb_long_1","goog_varint_1","defaultsRead","readUnknownField","readerFactory","buf","textDecoder","varint64","varint64read","uint32","varint32read","len","pos","view","DataView","buffer","byteOffset","byteLength","TextDecoder","fatal","ignoreBOM","skip","start","Varint","Bit64","Bit32","LengthDelimited","StartGroup","t","EndGroup","assertBounds","RangeError","int32","sint32","zze","int64","PbLong","uint64","PbULong","sint64","lo","hi","s","bool","fixed32","getUint32","sfixed32","getInt32","fixed64","sfixed64","float","getFloat32","double","getFloat64","string","decode","BinaryWriter","binaryWriteOptions","assert_1","defaultsWrite","writeUnknownFields","writerFactory","textEncoder","stack","TextEncoder","chunks","finish","offset","set","fork","chunk","prev","pop","type","varint32write","encode","setFloat32","setFloat64","setUint32","setInt32","long","from","varint64write","sign","listEnumNumbers","listEnumNames","listEnumValues","isEnumObject","hasOwnProperty","num","parseInt","isNaN","nam","enumObject","number","index","arr","int64toString","int64fromString","lowBits","highBits","mLine truncated
|
||||
+917
-265
File diff suppressed because it is too large.
Load diff
+3
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"type": "module"
|
||||
}
|
||||
+1
@@ -0,0 +1 @@
|
||||
(()=>{var e={296:e=>{var r=Object.prototype.toString;var n=typeof Buffer!=="undefined"&&typeof Buffer.alloc==="function"&&typeof Buffer.allocUnsafe==="function"&&typeof Buffer.from==="function";function isArrayBuffer(e){return r.call(e).slice(8,-1)==="ArrayBuffer"}function fromArrayBuffer(e,r,t){r>>>=0;var o=e.byteLength-r;if(o<0){throw new RangeError("'offset' is out of bounds")}if(t===undefined){t=o}else{t>>>=0;if(t>o){throw new RangeError("'length' is out of bounds")}}return n?Buffer.from(e.slice(r,r+t)):new Buffer(new Uint8Array(e.slice(r,r+t)))}function fromString(e,r){if(typeof r!=="string"||r===""){r="utf8"}if(!Buffer.isEncoding(r)){throw new TypeError('"encoding" must be a valid string encoding')}return n?Buffer.from(e,r):new Buffer(e,r)}function bufferFrom(e,r,t){if(typeof e==="number"){throw new TypeError('"value" argument must not be a number')}if(isArrayBuffer(e)){return fromArrayBuffer(e,r,t)}if(typeof e==="string"){return fromString(e,r)}return n?Buffer.from(e):new Buffer(e)}e.exports=bufferFrom},599:(e,r,n)=>{e=n.nmd(e);var t=n(927).SourceMapConsumer;var o=n(928);var i;try{i=n(896);if(!i.existsSync||!i.readFileSync){i=null}}catch(e){}var a=n(296);function dynamicRequire(e,r){return e.require(r)}var u=false;var s=false;var l=false;var c="auto";var p={};var f={};var g=/^data:application\/json[^,]+base64,/;var d=[];var h=[];function isInBrowser(){if(c==="browser")return true;if(c==="node")return false;return typeof window!=="undefined"&&typeof XMLHttpRequest==="function"&&!(window.require&&window.module&&window.process&&window.process.type==="renderer")}function hasGlobalProcessEventEmitter(){return typeof process==="object"&&process!==null&&typeof process.on==="function"}function globalProcessVersion(){if(typeof process==="object"&&process!==null){return process.version}else{return""}}function globalProcessStderr(){if(typeof process==="object"&&process!==null){return process.stderr}}function globalProcessExit(e){if(typeof process==="object"&&process!==null&&typeof process.exit==="function"){return process.exit(e)}}function handlerExec(e){return function(r){for(var n=0;n<e.length;n++){var t=e[n](r);if(t){return t}}return null}}var m=handlerExec(d);d.push((function(e){e=e.trim();if(/^file:/.test(e)){e=e.replace(/file:\/\/\/(\w:)?/,(function(e,r){return r?"":"/"}))}if(e in p){return p[e]}var r="";try{if(!i){var n=new XMLHttpRequest;n.open("GET",e,false);n.send(null);if(n.readyState===4&&n.status===200){r=n.responseText}}else if(i.existsSync(e)){r=i.readFileSync(e,"utf8")}}catch(e){}return p[e]=r}));function supportRelativeURL(e,r){if(!e)return r;var n=o.dirname(e);var t=/^\w+:\/\/[^\/]*/.exec(n);var i=t?t[0]:"";var a=n.slice(i.length);if(i&&/^\/\w\:/.test(a)){i+="/";return i+o.resolve(n.slice(i.length),r).replace(/\\/g,"/")}return i+o.resolve(n.slice(i.length),r)}function retrieveSourceMapURL(e){var r;if(isInBrowser()){try{var n=new XMLHttpRequest;n.open("GET",e,false);n.send(null);r=n.readyState===4?n.responseText:null;var t=n.getResponseHeader("SourceMap")||n.getResponseHeader("X-SourceMap");if(t){return t}}catch(e){}}r=m(e);var o=/(?:\/\/[@#][\s]*sourceMappingURL=([^\s'"]+)[\s]*$)|(?:\/\*[@#][\s]*sourceMappingURL=([^\s*'"]+)[\s]*(?:\*\/)[\s]*$)/gm;var i,a;while(a=o.exec(r))i=a;if(!i)return null;return i[1]}var v=handlerExec(h);h.push((function(e){var r=retrieveSourceMapURL(e);if(!r)return null;var n;if(g.test(r)){var t=r.slice(r.indexOf(",")+1);n=a(t,"base64").toString();r=e}else{r=supportRelativeURL(e,r);n=m(r)}if(!n){return null}return{url:r,map:n}}));function mapSourcePosition(e){var r=f[e.source];if(!r){var n=v(e.source);if(n){r=f[e.source]={url:n.url,map:new t(n.map)};if(r.map.sourcesContent){r.map.sources.forEach((function(e,n){var t=r.map.sourcesContent[n];if(t){var o=supportRelativeURL(r.url,e);p[o]=t}}))}}else{r=f[e.source]={url:null,map:null}}}if(r&&r.map&&typeof r.map.originalPositionFor==="function"){var o=r.map.originalPositionFor(e);if(o.source!==null){o.source=supportRelativeURL(r.url,o.source);return o}}return e}function mapEvalOrigin(e){var r=/^eval at ([^(]+) \((.+):(\d+):(\d+)\)$/.exec(e);if(r){var n=mapSourcePosition({source:r[2],line:+r[3],column:r[4]-1});return"eval at "+r[1]+" ("+n.source+":"+n.line+":"+(n.column+1)+")"}r=/^eval at ([^(]+) \((.+)\)$/.exec(e);if(r){return"eval at "+r[1]+" ("+mapEvalOrigin(r[2])+")"}return e}function CallSiteToString(){var e;var r="";if(this.isNative()){r="native"}else{e=this.getScriptNameOrSourceURL();if(!e&&this.isEval()){r=this.getEvalOrigin();r+=", "}if(e){r+=e}else{r+="<anonymous>"}var n=this.getLineNumber();if(n!=null){r+=":"+n;var t=this.getColumnNumber();if(t){r+=":"+t}}}var o="";var i=this.getFunctionName();var a=true;var u=this.isConstructor();var s=!(this.isToplevel()||u);if(s){var l=this.getTypeName();if(l==="[object Object]"){l="null"}var c=this.getMethodName();if(i){if(l&&i.indexOf(l)!=0){o+=l+"."}o+=i;if(c&&i.indexOf("."+c)!=i.length-c.length-1){o+=" [as "+c+"]"}}else{o+=l+"."+(c||"<anonymous>")}}else if(u){o+="new "+(i||"<aLine truncated
|
||||
-1
@@ -1 +0,0 @@
|
||||
(()=>{var e={650:e=>{var r=Object.prototype.toString;var n=typeof Buffer.alloc==="function"&&typeof Buffer.allocUnsafe==="function"&&typeof Buffer.from==="function";function isArrayBuffer(e){return r.call(e).slice(8,-1)==="ArrayBuffer"}function fromArrayBuffer(e,r,t){r>>>=0;var o=e.byteLength-r;if(o<0){throw new RangeError("'offset' is out of bounds")}if(t===undefined){t=o}else{t>>>=0;if(t>o){throw new RangeError("'length' is out of bounds")}}return n?Buffer.from(e.slice(r,r+t)):new Buffer(new Uint8Array(e.slice(r,r+t)))}function fromString(e,r){if(typeof r!=="string"||r===""){r="utf8"}if(!Buffer.isEncoding(r)){throw new TypeError('"encoding" must be a valid string encoding')}return n?Buffer.from(e,r):new Buffer(e,r)}function bufferFrom(e,r,t){if(typeof e==="number"){throw new TypeError('"value" argument must not be a number')}if(isArrayBuffer(e)){return fromArrayBuffer(e,r,t)}if(typeof e==="string"){return fromString(e,r)}return n?Buffer.from(e):new Buffer(e)}e.exports=bufferFrom},284:(e,r,n)=>{e=n.nmd(e);var t=n(596).SourceMapConsumer;var o=n(17);var i;try{i=n(147);if(!i.existsSync||!i.readFileSync){i=null}}catch(e){}var a=n(650);function dynamicRequire(e,r){return e.require(r)}var u=false;var s=false;var l=false;var c="auto";var p={};var f={};var g=/^data:application\/json[^,]+base64,/;var h=[];var d=[];function isInBrowser(){if(c==="browser")return true;if(c==="node")return false;return typeof window!=="undefined"&&typeof XMLHttpRequest==="function"&&!(window.require&&window.module&&window.process&&window.process.type==="renderer")}function hasGlobalProcessEventEmitter(){return typeof process==="object"&&process!==null&&typeof process.on==="function"}function globalProcessVersion(){if(typeof process==="object"&&process!==null){return process.version}else{return""}}function globalProcessStderr(){if(typeof process==="object"&&process!==null){return process.stderr}}function globalProcessExit(e){if(typeof process==="object"&&process!==null&&typeof process.exit==="function"){return process.exit(e)}}function handlerExec(e){return function(r){for(var n=0;n<e.length;n++){var t=e[n](r);if(t){return t}}return null}}var m=handlerExec(h);h.push((function(e){e=e.trim();if(/^file:/.test(e)){e=e.replace(/file:\/\/\/(\w:)?/,(function(e,r){return r?"":"/"}))}if(e in p){return p[e]}var r="";try{if(!i){var n=new XMLHttpRequest;n.open("GET",e,false);n.send(null);if(n.readyState===4&&n.status===200){r=n.responseText}}else if(i.existsSync(e)){r=i.readFileSync(e,"utf8")}}catch(e){}return p[e]=r}));function supportRelativeURL(e,r){if(!e)return r;var n=o.dirname(e);var t=/^\w+:\/\/[^\/]*/.exec(n);var i=t?t[0]:"";var a=n.slice(i.length);if(i&&/^\/\w\:/.test(a)){i+="/";return i+o.resolve(n.slice(i.length),r).replace(/\\/g,"/")}return i+o.resolve(n.slice(i.length),r)}function retrieveSourceMapURL(e){var r;if(isInBrowser()){try{var n=new XMLHttpRequest;n.open("GET",e,false);n.send(null);r=n.readyState===4?n.responseText:null;var t=n.getResponseHeader("SourceMap")||n.getResponseHeader("X-SourceMap");if(t){return t}}catch(e){}}r=m(e);var o=/(?:\/\/[@#][\s]*sourceMappingURL=([^\s'"]+)[\s]*$)|(?:\/\*[@#][\s]*sourceMappingURL=([^\s*'"]+)[\s]*(?:\*\/)[\s]*$)/gm;var i,a;while(a=o.exec(r))i=a;if(!i)return null;return i[1]}var v=handlerExec(d);d.push((function(e){var r=retrieveSourceMapURL(e);if(!r)return null;var n;if(g.test(r)){var t=r.slice(r.indexOf(",")+1);n=a(t,"base64").toString();r=e}else{r=supportRelativeURL(e,r);n=m(r)}if(!n){return null}return{url:r,map:n}}));function mapSourcePosition(e){var r=f[e.source];if(!r){var n=v(e.source);if(n){r=f[e.source]={url:n.url,map:new t(n.map)};if(r.map.sourcesContent){r.map.sources.forEach((function(e,n){var t=r.map.sourcesContent[n];if(t){var o=supportRelativeURL(r.url,e);p[o]=t}}))}}else{r=f[e.source]={url:null,map:null}}}if(r&&r.map&&typeof r.map.originalPositionFor==="function"){var o=r.map.originalPositionFor(e);if(o.source!==null){o.source=supportRelativeURL(r.url,o.source);return o}}return e}function mapEvalOrigin(e){var r=/^eval at ([^(]+) \((.+):(\d+):(\d+)\)$/.exec(e);if(r){var n=mapSourcePosition({source:r[2],line:+r[3],column:r[4]-1});return"eval at "+r[1]+" ("+n.source+":"+n.line+":"+(n.column+1)+")"}r=/^eval at ([^(]+) \((.+)\)$/.exec(e);if(r){return"eval at "+r[1]+" ("+mapEvalOrigin(r[2])+")"}return e}function CallSiteToString(){var e;var r="";if(this.isNative()){r="native"}else{e=this.getScriptNameOrSourceURL();if(!e&&this.isEval()){r=this.getEvalOrigin();r+=", "}if(e){r+=e}else{r+="<anonymous>"}var n=this.getLineNumber();if(n!=null){r+=":"+n;var t=this.getColumnNumber();if(t){r+=":"+t}}}var o="";var i=this.getFunctionName();var a=true;var u=this.isConstructor();var s=!(this.isToplevel()||u);if(s){var l=this.getTypeName();if(l==="[object Object]"){l="null"}var c=this.getMethodName();if(i){if(l&&i.indexOf(l)!=0){o+=l+"."}o+=i;if(c&&i.indexOf("."+c)!=i.length-c.length-1){o+=" [as "+c+"]"}}else{o+=l+"."+(c||"<anonymous>")}}else if(u){o+="new "+(i||"<anonymous>")}else if(i){o+=i}elLine truncated
|
||||
@@ -1,3 +1,9 @@
|
||||
target "_common" {
|
||||
args = {
|
||||
BUILDKIT_CONTEXT_KEEP_GIT_DIR = 1
|
||||
}
|
||||
}
|
||||
|
||||
group "default" {
|
||||
targets = ["build"]
|
||||
}
|
||||
@@ -11,42 +17,49 @@ group "validate" {
|
||||
}
|
||||
|
||||
target "build" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "build-update"
|
||||
output = ["."]
|
||||
}
|
||||
|
||||
target "build-validate" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "build-validate"
|
||||
output = ["type=cacheonly"]
|
||||
}
|
||||
|
||||
target "format" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "format-update"
|
||||
output = ["."]
|
||||
}
|
||||
|
||||
target "lint" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "lint"
|
||||
output = ["type=cacheonly"]
|
||||
}
|
||||
|
||||
target "vendor-update" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "vendor-update"
|
||||
output = ["."]
|
||||
}
|
||||
|
||||
target "vendor-validate" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "vendor-validate"
|
||||
output = ["type=cacheonly"]
|
||||
}
|
||||
|
||||
target "test" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "test-coverage"
|
||||
output = ["./coverage"]
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
import {defineConfig} from 'eslint/config';
|
||||
import js from '@eslint/js';
|
||||
import tseslint from '@typescript-eslint/eslint-plugin';
|
||||
import vitest from '@vitest/eslint-plugin';
|
||||
import globals from 'globals';
|
||||
import eslintConfigPrettier from 'eslint-config-prettier/flat';
|
||||
import eslintPluginPrettier from 'eslint-plugin-prettier';
|
||||
|
||||
export default defineConfig([
|
||||
{
|
||||
ignores: ['.yarn/**/*', 'coverage/**/*', 'dist/**/*']
|
||||
},
|
||||
js.configs.recommended,
|
||||
...tseslint.configs['flat/recommended'],
|
||||
eslintConfigPrettier,
|
||||
{
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.node
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
files: ['__tests__/**'],
|
||||
...vitest.configs.recommended,
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.node,
|
||||
...vitest.environments.env.globals
|
||||
}
|
||||
},
|
||||
rules: {
|
||||
...vitest.configs.recommended.rules,
|
||||
'vitest/no-conditional-expect': 'error',
|
||||
'vitest/no-disabled-tests': 0
|
||||
}
|
||||
},
|
||||
{
|
||||
plugins: {
|
||||
prettier: eslintPluginPrettier
|
||||
},
|
||||
rules: {
|
||||
'prettier/prettier': 'error',
|
||||
'@typescript-eslint/no-require-imports': [
|
||||
'error',
|
||||
{
|
||||
allowAsImport: true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]);
|
||||
@@ -1,29 +0,0 @@
|
||||
import fs from 'fs';
|
||||
import os from 'os';
|
||||
import path from 'path';
|
||||
|
||||
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'docker-setup-docker-action-'));
|
||||
|
||||
process.env = Object.assign({}, process.env, {
|
||||
TEMP: tmpDir,
|
||||
GITHUB_REPOSITORY: 'docker/setup-docker-action',
|
||||
RUNNER_TEMP: path.join(tmpDir, 'runner-temp'),
|
||||
RUNNER_TOOL_CACHE: path.join(tmpDir, 'runner-tool-cache')
|
||||
}) as {
|
||||
[key: string]: string;
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
clearMocks: true,
|
||||
moduleFileExtensions: ['js', 'ts'],
|
||||
testMatch: ['**/*.test.ts'],
|
||||
transform: {
|
||||
'^.+\\.ts$': 'ts-jest'
|
||||
},
|
||||
moduleNameMapper: {
|
||||
'^csv-parse/sync': '<rootDir>/node_modules/csv-parse/dist/cjs/sync.cjs'
|
||||
},
|
||||
collectCoverageFrom: ['src/**/{!(main.ts),}.ts'],
|
||||
coveragePathIgnorePatterns: ['lib/', 'node_modules/', '__mocks__/', '__tests__/'],
|
||||
verbose: true
|
||||
};
|
||||
+24
-22
@@ -1,43 +1,45 @@
|
||||
{
|
||||
"name": "docker-setup-docker",
|
||||
"description": "Set up Docker for use in GitHub Actions by downloading and installing a version of Docker CE",
|
||||
"main": "lib/main.js",
|
||||
"type": "module",
|
||||
"main": "src/main.ts",
|
||||
"scripts": {
|
||||
"build": "ncc build src/main.ts --source-map --minify --license licenses.txt",
|
||||
"lint": "eslint src/**/*.ts __tests__/**/*.ts",
|
||||
"format": "eslint --fix src/**/*.ts __tests__/**/*.ts",
|
||||
"test": "jest --coverage",
|
||||
"lint": "eslint --max-warnings=0 .",
|
||||
"format": "eslint --fix .",
|
||||
"test": "vitest run",
|
||||
"all": "yarn run build && yarn run format && yarn test"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/crazy-max/ghaction-setup-docker.git"
|
||||
"url": "git+https://github.com/docker/setup-docker-action.git"
|
||||
},
|
||||
"keywords": [
|
||||
"actions",
|
||||
"docker",
|
||||
"engine"
|
||||
],
|
||||
"author": "CrazyMax",
|
||||
"author": "Docker Inc.",
|
||||
"license": "Apache-2.0",
|
||||
"packageManager": "yarn@4.9.2",
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.10.0",
|
||||
"@docker/actions-toolkit": "^0.12.0-rc.1",
|
||||
"uuid": "^9.0.0"
|
||||
"@actions/core": "^3.0.0",
|
||||
"@docker/actions-toolkit": "^0.77.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^16.11.26",
|
||||
"@typescript-eslint/eslint-plugin": "^5.14.0",
|
||||
"@typescript-eslint/parser": "^5.14.0",
|
||||
"@vercel/ncc": "^0.33.3",
|
||||
"eslint": "^8.11.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-plugin-jest": "^26.1.1",
|
||||
"eslint-plugin-prettier": "^4.0.0",
|
||||
"jest": "^27.2.5",
|
||||
"prettier": "^2.3.1",
|
||||
"ts-jest": "^27.1.2",
|
||||
"ts-node": "^10.7.0",
|
||||
"typescript": "^4.4.4"
|
||||
"@eslint/js": "^9.39.3",
|
||||
"@types/node": "^24.11.0",
|
||||
"@typescript-eslint/eslint-plugin": "^8.56.1",
|
||||
"@typescript-eslint/parser": "^8.56.1",
|
||||
"@vercel/ncc": "^0.38.4",
|
||||
"@vitest/coverage-v8": "^4.0.18",
|
||||
"@vitest/eslint-plugin": "^1.6.9",
|
||||
"eslint": "^9.39.3",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-prettier": "^5.5.5",
|
||||
"globals": "^17.3.0",
|
||||
"prettier": "^3.8.1",
|
||||
"typescript": "^5.9.3",
|
||||
"vitest": "^4.0.18"
|
||||
}
|
||||
}
|
||||
+96
-5
@@ -1,17 +1,108 @@
|
||||
import os from 'os';
|
||||
import path from 'path';
|
||||
import * as core from '@actions/core';
|
||||
import {parse} from 'csv-parse/sync';
|
||||
|
||||
import {InstallSource} from '@docker/actions-toolkit/lib/docker/install.js';
|
||||
import {Util} from '@docker/actions-toolkit/lib/util.js';
|
||||
|
||||
export interface Inputs {
|
||||
version: string;
|
||||
channel: string;
|
||||
source: InstallSource;
|
||||
daemonConfig?: string;
|
||||
tcpPort?: number;
|
||||
context: string;
|
||||
setHost: boolean;
|
||||
rootless: boolean;
|
||||
runtimeBasedir: string;
|
||||
githubToken: string;
|
||||
}
|
||||
|
||||
export function getInputs(): Inputs {
|
||||
const rawVersion = core.getInput('version') || 'latest';
|
||||
const source = parseSource(rawVersion);
|
||||
const channel = core.getInput('channel');
|
||||
if (channel && source.type === 'archive') {
|
||||
source.channel = channel;
|
||||
}
|
||||
|
||||
return {
|
||||
version: core.getInput('version') || 'latest',
|
||||
channel: core.getInput('channel'),
|
||||
source: source,
|
||||
daemonConfig: core.getInput('daemon-config'),
|
||||
context: core.getInput('context')
|
||||
tcpPort: Util.getInputNumber('tcp-port'),
|
||||
context: core.getInput('context'),
|
||||
setHost: core.getBooleanInput('set-host'),
|
||||
rootless: core.getBooleanInput('rootless'),
|
||||
runtimeBasedir: core.getInput('runtime-basedir') || path.join(os.homedir(), `setup-docker-action`),
|
||||
githubToken: core.getInput('github-token')
|
||||
};
|
||||
}
|
||||
|
||||
function parseSource(input: string): InstallSource {
|
||||
let [type, version, channel, tag] = ['archive', 'latest', 'stable', 'latest'];
|
||||
|
||||
const fields = parse(input, {
|
||||
relaxColumnCount: true,
|
||||
skipEmptyLines: true
|
||||
})[0];
|
||||
for (const field of fields) {
|
||||
const parts = field
|
||||
.toString()
|
||||
.split(/(?<=^[^=]+?)=/)
|
||||
.map(item => item.trim());
|
||||
|
||||
switch (parts[0]) {
|
||||
case 'type':
|
||||
type = parts[1];
|
||||
break;
|
||||
case 'version':
|
||||
version = parts[1];
|
||||
break;
|
||||
case 'channel':
|
||||
channel = parts[1];
|
||||
break;
|
||||
case 'tag':
|
||||
tag = parts[1];
|
||||
break;
|
||||
default:
|
||||
if (fields.length === 1) {
|
||||
version = parts[0];
|
||||
break;
|
||||
}
|
||||
throw new Error(`Invalid field: ${parts[0]}`);
|
||||
}
|
||||
}
|
||||
|
||||
if (!type) {
|
||||
throw new Error(`Invalid type: ${type}`);
|
||||
}
|
||||
if (!channel) {
|
||||
throw new Error(`Invalid channel: ${channel}`);
|
||||
}
|
||||
if (!version) {
|
||||
throw new Error(`Invalid version: ${version}`);
|
||||
}
|
||||
if (!tag) {
|
||||
throw new Error(`Invalid tag: ${tag}`);
|
||||
}
|
||||
|
||||
let src: InstallSource;
|
||||
switch (type) {
|
||||
case 'archive':
|
||||
src = {
|
||||
type: 'archive',
|
||||
version: version,
|
||||
channel: channel
|
||||
};
|
||||
break;
|
||||
case 'image':
|
||||
src = {
|
||||
type: 'image',
|
||||
tag: tag
|
||||
};
|
||||
break;
|
||||
default:
|
||||
throw new Error(`Invalid version: ${input}`);
|
||||
}
|
||||
|
||||
return src;
|
||||
}
|
||||
+63
-12
@@ -1,40 +1,91 @@
|
||||
import os from 'os';
|
||||
import * as crypto from 'crypto';
|
||||
import path from 'path';
|
||||
import * as uuid from 'uuid';
|
||||
import * as core from '@actions/core';
|
||||
import * as actionsToolkit from '@docker/actions-toolkit';
|
||||
import {Install} from '@docker/actions-toolkit/lib/docker/install';
|
||||
import {Docker} from '@docker/actions-toolkit/lib/docker/docker';
|
||||
import {Install} from '@docker/actions-toolkit/lib/docker/install.js';
|
||||
import {Docker} from '@docker/actions-toolkit/lib/docker/docker.js';
|
||||
import {Install as RegclientInstall} from '@docker/actions-toolkit/lib/regclient/install.js';
|
||||
import {Install as UndockInstall} from '@docker/actions-toolkit/lib/undock/install.js';
|
||||
|
||||
import * as context from './context';
|
||||
import * as stateHelper from './state-helper';
|
||||
import * as context from './context.js';
|
||||
import * as stateHelper from './state-helper.js';
|
||||
|
||||
const regctlDefaultVersion = 'v0.8.3';
|
||||
const undockDefaultVersion = 'v0.10.0';
|
||||
|
||||
actionsToolkit.run(
|
||||
// main
|
||||
async () => {
|
||||
const input: context.Inputs = context.getInputs();
|
||||
const runDir = path.join(os.homedir(), `setup-docker-action-${uuid.v4()}`);
|
||||
const runDir = path.join(input.runtimeBasedir, `run-${crypto.randomUUID().slice(0, 8)}`);
|
||||
|
||||
if (input.context == 'default') {
|
||||
throw new Error(`'default' context cannot be used.`);
|
||||
}
|
||||
|
||||
if (input.source.type === 'image') {
|
||||
await core.group(`Download and install regctl`, async () => {
|
||||
const regclientInstall = new RegclientInstall({githubToken: input.githubToken});
|
||||
const regclientBinPath = await regclientInstall.download(
|
||||
process.env.REGCTL_VERSION && process.env.REGCTL_VERSION.trim()
|
||||
? process.env.REGCTL_VERSION
|
||||
: regctlDefaultVersion,
|
||||
true
|
||||
);
|
||||
await regclientInstall.install(regclientBinPath);
|
||||
});
|
||||
await core.group(`Download and install undock`, async () => {
|
||||
const undockInstall = new UndockInstall({githubToken: input.githubToken});
|
||||
const undockBinPath = await undockInstall.download(
|
||||
process.env.UNDOCK_VERSION && process.env.UNDOCK_VERSION.trim()
|
||||
? process.env.UNDOCK_VERSION
|
||||
: undockDefaultVersion,
|
||||
true
|
||||
);
|
||||
await undockInstall.install(undockBinPath);
|
||||
});
|
||||
}
|
||||
|
||||
let tcpPort: number | undefined;
|
||||
let tcpAddress: string | undefined;
|
||||
if (input.tcpPort) {
|
||||
tcpPort = input.tcpPort;
|
||||
tcpAddress = `tcp://127.0.0.1:${tcpPort}`;
|
||||
}
|
||||
|
||||
const install = new Install({
|
||||
runDir: runDir,
|
||||
version: input.version,
|
||||
channel: input.channel || 'stable',
|
||||
source: input.source,
|
||||
rootless: input.rootless,
|
||||
contextName: input.context || 'setup-docker-action',
|
||||
daemonConfig: input.daemonConfig
|
||||
daemonConfig: input.daemonConfig,
|
||||
localTCPPort: tcpPort,
|
||||
githubToken: input.githubToken
|
||||
});
|
||||
let toolDir;
|
||||
if (!(await Docker.isAvailable()) || input.version) {
|
||||
if (!(await Docker.isAvailable()) || input.source) {
|
||||
await core.group(`Download docker`, async () => {
|
||||
toolDir = await install.download();
|
||||
});
|
||||
}
|
||||
if (toolDir) {
|
||||
stateHelper.setRunDir(runDir);
|
||||
await install.install();
|
||||
const sockPath = await install.install();
|
||||
await core.group(`Setting outputs`, async () => {
|
||||
core.info(`sock=${sockPath}`);
|
||||
core.setOutput('sock', sockPath);
|
||||
if (tcpAddress) {
|
||||
core.info(`tcp=${tcpAddress}`);
|
||||
core.setOutput('tcp', tcpAddress);
|
||||
}
|
||||
});
|
||||
|
||||
if (input.setHost) {
|
||||
await core.group(`Setting Docker host`, async () => {
|
||||
core.exportVariable('DOCKER_HOST', sockPath);
|
||||
core.info(`DOCKER_HOST=${sockPath}`);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
await core.group(`Docker info`, async () => {
|
||||
|
||||
+4
-8
@@ -1,9 +1,8 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "nodenext",
|
||||
"moduleResolution": "nodenext",
|
||||
"esModuleInterop": true,
|
||||
"target": "es6",
|
||||
"module": "commonjs",
|
||||
"strict": true,
|
||||
"newLine": "lf",
|
||||
"outDir": "./lib",
|
||||
"rootDir": "./src",
|
||||
@@ -12,10 +11,7 @@
|
||||
"resolveJsonModule": true,
|
||||
"useUnknownInCatchVariables": false,
|
||||
},
|
||||
"exclude": [
|
||||
"./__tests__/**/*",
|
||||
"./lib/**/*",
|
||||
"node_modules",
|
||||
"jest.config.ts"
|
||||
"include": [
|
||||
"src/**/*.ts"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
import {defineConfig} from 'vitest/config';
|
||||
|
||||
export default defineConfig({
|
||||
test: {
|
||||
clearMocks: true,
|
||||
environment: 'node',
|
||||
setupFiles: ['./__tests__/setup.unit.ts'],
|
||||
include: ['**/*.test.ts'],
|
||||
coverage: {
|
||||
provider: 'v8',
|
||||
reporter: ['clover'],
|
||||
include: ['src/**/*.ts'],
|
||||
exclude: ['src/**/main.ts']
|
||||
}
|
||||
}
|
||||
});
|
||||
Reference in new issue
Block a user