create-upm-branch-action
create-upm-branch-action copied to clipboard
A Github Actions to create release branches for Unity Package Manager
create-upm-branch-action
This is a Github Action to create release branches for Unity Package Manager.
How to Use
First, prepare a main branch structure as shown below. I recommend this structure because it also makes it easy to create a Unity package.
<Repository>
├── README.md
├── Assets
│ └── [YourPluginName]
│ ├── package.json
│ ├── Runtime
│ │ ├── [YourPluginName].asmdef
│ │ └── ...
│ └── Samples
│ ├── Sample 1
│ ├── Sample 2
│ ├── Sample 3
│ └── ...
├── ...
Then, create the following GitHub Actions.
name: Update-UPM-Branch
on:
push:
tags:
- v*
jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Tag name
id: tag
run: echo ::set-output name=name::${GITHUB_REF#refs/tags/v}
- name: Create UPM Branches
uses: hecomi/create-upm-branch-action@main
with:
git-tag: ${{ steps.tag.outputs.name }}
pkg-root-dir-path: Assets/[YourPluginName]
This Action requires Write permissions to add branches to your repository. Please configure the settings as per the instructions on the following page:
When a tag like v1.0.0 is pushed to the GitHub repository, it will automatically create a branch named upm with the following structure. The version number in the package.json is also updated automatically.
<Repository>
├── README.md
├── package.json
├── Runtime
│ ├── [YourPluginName].asmdef
│ └── ...
├─ Samples~
│ ├── Sample 1
│ ├── Sample 2
│ ├── Sample 3
│ └── ...
├── ...
Users can then use your plugin in Unity with a URL like:
https://github.com/[YourGitHubID]/[YourPluginName].git#upm
Demo
This is used in the following project.
- https://github.com/hecomi/uOSC
Parameters
- git-tag
- Give this as in the sample above.
- main-branch
- Specify the main of your main branch. The default is
main.
- Specify the main of your main branch. The default is
- upm-branch
- The UPM branch name. The default is
upm.
- The UPM branch name. The default is
- pkg-root-dir-path
- The root path for packaging. Most likely it will be
AssetsorAssets/[YourPluginName].
- The root path for packaging. Most likely it will be
- samples-dir
- The name of the directory containing the samples. The default is
Samples.
- The name of the directory containing the samples. The default is
- root-files
- Give a space-separated list of files, such as README.md, that are located in the root directory and to be included in the package. The default is
README.md LICENSE.md CHANGELOG.md.
- Give a space-separated list of files, such as README.md, that are located in the root directory and to be included in the package. The default is
Publishing to npm
To publish your plugin to npm, you aditionally need to:
- Create an npm account.
- Generate an Access Token for each repository. This token will be used as a secret named
NPM_TOKEN.
- Refer to Publishing Node.js packages on GitHub for more details.
- Add the following lines to your GitHub Actions:
name: Update-UPM-Branch
...
jobs:
update:
...
steps:
...
- name: Tag name
...
- name: Create UPM Branches
...
- name: Setup node
uses: actions/setup-node@v2
with:
registry-url: 'https://registry.npmjs.org'
- name: NPM publish
run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}