初始化测试
This commit is contained in:
commit
a8a5ca2e75
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@ -0,0 +1 @@
|
||||
* text=auto eol=lf
|
||||
27
.gitignore
vendored
Normal file
27
.gitignore
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
|
||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# dotenv environment variables file
|
||||
.env
|
||||
.env.test
|
||||
|
||||
# OS metadata
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# IDE files
|
||||
.idea
|
||||
.vscode
|
||||
*.code-workspace
|
||||
|
||||
node_modules
|
||||
16
.prettierrc.json
Normal file
16
.prettierrc.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"printWidth": 80,
|
||||
"tabWidth": 2,
|
||||
"useTabs": false,
|
||||
"semi": false,
|
||||
"singleQuote": true,
|
||||
"quoteProps": "as-needed",
|
||||
"jsxSingleQuote": false,
|
||||
"trailingComma": "none",
|
||||
"bracketSpacing": true,
|
||||
"bracketSameLine": true,
|
||||
"arrowParens": "avoid",
|
||||
"proseWrap": "always",
|
||||
"htmlWhitespaceSensitivity": "css",
|
||||
"endOfLine": "lf"
|
||||
}
|
||||
3
CODEOWNERS
Normal file
3
CODEOWNERS
Normal file
@ -0,0 +1,3 @@
|
||||
# Repository CODEOWNERS
|
||||
|
||||
* @actions/actions-oss-maintainers
|
||||
7
Dockerfile
Normal file
7
Dockerfile
Normal file
@ -0,0 +1,7 @@
|
||||
FROM node:24-alpine
|
||||
|
||||
RUN mkdir /app
|
||||
WORKDIR /app
|
||||
COPY . /app
|
||||
RUN npm install
|
||||
ENTRYPOINT ["node /app/script/index.js"]
|
||||
21
LICENSE
Normal file
21
LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright GitHub
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
111
README.md
Normal file
111
README.md
Normal file
@ -0,0 +1,111 @@
|
||||
# Hello, World! Docker Action
|
||||
|
||||
[](https://github.com/super-linter/super-linter)
|
||||

|
||||
|
||||
This action prints `Hello, World!` or `Hello, <who-to-greet>!` to the log. To
|
||||
learn how this action was built, see
|
||||
[Creating a Docker container action](https://docs.github.com/en/actions/creating-actions/creating-a-docker-container-action).
|
||||
|
||||
## Create Your Own Action
|
||||
|
||||
To create your own action, you can use this repository as a template! Just
|
||||
follow the below instructions:
|
||||
|
||||
1. Click the **Use this template** button at the top of the repository
|
||||
1. Select **Create a new repository**
|
||||
1. Select an owner and name for your new repository
|
||||
1. Click **Create repository**
|
||||
1. Clone your new repository
|
||||
|
||||
> [!CAUTION]
|
||||
>
|
||||
> Make sure to remove or update the [`CODEOWNERS`](./CODEOWNERS) file! For
|
||||
> details on how to use this file, see
|
||||
> [About code owners](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners).
|
||||
|
||||
## Usage
|
||||
|
||||
Here's an example of how to use this action in a workflow file:
|
||||
|
||||
```yaml
|
||||
name: Example Workflow
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
who-to-greet:
|
||||
description: Who to greet in the log
|
||||
required: true
|
||||
default: 'World'
|
||||
type: string
|
||||
|
||||
jobs:
|
||||
say-hello:
|
||||
name: Say Hello
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
# Change @main to a specific commit SHA or version tag, e.g.:
|
||||
# actions/hello-world-docker-action@e76147da8e5c81eaf017dede5645551d4b94427b
|
||||
# actions/hello-world-docker-action@v1.2.3
|
||||
- name: Print to Log
|
||||
id: print-to-log
|
||||
uses: actions/hello-world-docker-action@main
|
||||
with:
|
||||
who-to-greet: ${{ inputs.who-to-greet }}
|
||||
```
|
||||
|
||||
For example workflow runs, check out the
|
||||
[Actions tab](https://github.com/actions/hello-world-docker-action/actions)!
|
||||
:rocket:
|
||||
|
||||
## Inputs
|
||||
|
||||
| Input | Default | Description |
|
||||
| -------------- | ------- | ------------------------------- |
|
||||
| `who-to-greet` | `World` | The name of the person to greet |
|
||||
|
||||
## Outputs
|
||||
|
||||
| Output | Description |
|
||||
| ------ | ----------------------- |
|
||||
| `time` | The time we greeted you |
|
||||
|
||||
## Test Locally
|
||||
|
||||
After you've cloned the repository to your local machine or codespace, you'll
|
||||
need to perform some initial setup steps before you can test your action.
|
||||
|
||||
> [!NOTE]
|
||||
>
|
||||
> You'll need to have a reasonably modern version of
|
||||
> [Docker](https://www.docker.com/get-started/) handy (e.g. docker engine
|
||||
> version 20 or later).
|
||||
|
||||
1. :hammer_and_wrench: Build the container
|
||||
|
||||
Make sure to replace `actions/hello-world-docker-action` with an appropriate
|
||||
label for your container.
|
||||
|
||||
```bash
|
||||
docker build -t actions/hello-world-docker-action .
|
||||
```
|
||||
|
||||
1. :white_check_mark: Test the container
|
||||
|
||||
You can pass individual environment variables using the `--env` or `-e` flag.
|
||||
|
||||
```bash
|
||||
$ docker run --env INPUT_WHO_TO_GREET="Mona Lisa Octocat" actions/hello-world-docker-action
|
||||
::notice file=entrypoint.sh,line=7::Hello, Mona Lisa Octocat!
|
||||
```
|
||||
|
||||
Or you can pass a file with environment variables using `--env-file`.
|
||||
|
||||
```bash
|
||||
$ echo "INPUT_WHO_TO_GREET=\"Mona Lisa Octocat\"" > ./.env.test
|
||||
|
||||
$ docker run --env-file ./.env.test actions/hello-world-docker-action
|
||||
::notice file=entrypoint.sh,line=7::Hello, Mona Lisa Octocat!
|
||||
```
|
||||
36
action.yml
Normal file
36
action.yml
Normal file
@ -0,0 +1,36 @@
|
||||
name: Hello, World!
|
||||
description: Greet someone and record the time
|
||||
author: GitHub Actions
|
||||
|
||||
# Define your inputs here.
|
||||
inputs:
|
||||
project-config-path:
|
||||
description: Project Config Path
|
||||
required: false
|
||||
default: 'deploy/we-chat/project.config.json'
|
||||
upload-setting-path:
|
||||
description: Upload Setting Path
|
||||
required: false
|
||||
default: 'deploy/we-chat/upload.setting.json'
|
||||
upload-version:
|
||||
description: Upload Version
|
||||
required: false
|
||||
default: '1.0.0'
|
||||
upload-description:
|
||||
description: Upload Description
|
||||
required: false
|
||||
default: ''
|
||||
upload-robot:
|
||||
description: Upload Robot
|
||||
required: false
|
||||
default: '1'
|
||||
|
||||
runs:
|
||||
using: docker
|
||||
image: Dockerfile
|
||||
env:
|
||||
INPUT_PROJECT_CONFIG_PATH: ${{ inputs.project-config-path }}
|
||||
INPUT_UPLOAD_SETTING_PATH: ${{ inputs.upload-setting-path }}
|
||||
INPUT_UPLOAD_VERSION: ${{ inputs.upload-version }}
|
||||
INPUT_UPLOAD_DESCRIPTION: ${{ inputs.upload-description }}
|
||||
INPUT_UPLOAD_ROBOT: ${{ inputs.upload-robot }}
|
||||
12
entrypoint.sh
Executable file
12
entrypoint.sh
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/sh -l
|
||||
|
||||
# Use INPUT_<INPUT_NAME> to get the value of an input
|
||||
GREETING="Hello, $INPUT_WHO_TO_GREET!"
|
||||
|
||||
# Use workflow commands to do things like set debug messages
|
||||
echo "::notice file=entrypoint.sh,line=7::$GREETING"
|
||||
|
||||
# Write outputs to the $GITHUB_OUTPUT file
|
||||
echo "time=$(date)" >>"$GITHUB_OUTPUT"
|
||||
|
||||
exit 0
|
||||
13321
package-lock.json
generated
Normal file
13321
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
12
package.json
Normal file
12
package.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "we-chat-ci",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"license": "MIT",
|
||||
"author": "ilovintit",
|
||||
"type": "commonjs",
|
||||
"main": "script/index.js",
|
||||
"dependencies": {
|
||||
"miniprogram-ci": "^2.1.26"
|
||||
}
|
||||
}
|
||||
69
script/index.js
Normal file
69
script/index.js
Normal file
@ -0,0 +1,69 @@
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const ci = require('miniprogram-ci')
|
||||
|
||||
//
|
||||
const projectConfigPath = process.env.INPUT_PROJECT_CONFIG_PATH
|
||||
console.log('projectConfigPath:', projectConfigPath)
|
||||
//
|
||||
const uploadSettingPath = process.env.INPUT_UPLOAD_SETTING_PATH
|
||||
console.log('uploadSettingPath:', uploadSettingPath)
|
||||
//
|
||||
const uploadVersion = process.env.INPUT_UPLOAD_VERSION
|
||||
console.log('uploadVersion:', uploadVersion)
|
||||
//
|
||||
const uploadDescription = process.env.INPUT_UPLOAD_DESCRIPTION
|
||||
console.log('uploadDescription:', uploadDescription)
|
||||
//
|
||||
const uploadRobot = Number(process.env.INPUT_UPLOAD_ROBOT)
|
||||
console.log('uploadRobot:', uploadRobot)
|
||||
//
|
||||
const workspace = String(process.env.GITHUB_WORKSPACE)
|
||||
console.log('workspace:', workspace)
|
||||
//
|
||||
const projectConfigJson = fs.readFileSync(
|
||||
path.join(workspace, projectConfigPath),
|
||||
'utf8'
|
||||
)
|
||||
console.log('projectConfigJson:', projectConfigJson)
|
||||
const projectConfig = JSON.parse(projectConfigJson)
|
||||
console.log('deployConfig:', projectConfig)
|
||||
//
|
||||
const uploadSettingJson = fs.readFileSync(
|
||||
path.join(workspace, uploadSettingPath),
|
||||
'utf8'
|
||||
)
|
||||
console.log('uploadSettingJson:', uploadSettingJson)
|
||||
const uploadSetting = JSON.parse(uploadSettingJson)
|
||||
console.log('uploadSetting:', uploadSetting)
|
||||
//
|
||||
if (!projectConfig.projectPath) {
|
||||
console.log('projectPath is required')
|
||||
return
|
||||
}
|
||||
projectConfig.projectPath = path.join(workspace, projectConfig.projectPath)
|
||||
console.log('projectConfig.projectPath:', projectConfig.projectPath)
|
||||
//
|
||||
if (!projectConfig.privateKeyPath) {
|
||||
console.log('privateKeyPath is required')
|
||||
return
|
||||
}
|
||||
projectConfig.privateKeyPath = path.join(
|
||||
workspace,
|
||||
projectConfig.privateKeyPath
|
||||
)
|
||||
const project = new ci.Project(projectConfig)
|
||||
ci.upload({
|
||||
project,
|
||||
version: uploadVersion,
|
||||
desc: uploadDescription,
|
||||
setting: uploadSetting,
|
||||
robot: uploadRobot,
|
||||
onProgressUpdate: console.log
|
||||
})
|
||||
.then((res) => {
|
||||
console.log('upload res:', res)
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log('upload err:', err)
|
||||
})
|
||||
Loading…
x
Reference in New Issue
Block a user