generated from vrchat-community/template-package
-
Notifications
You must be signed in to change notification settings - Fork 24
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 11de242
Showing
4 changed files
with
268 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
name: Build Repo Listing | ||
|
||
env: | ||
CurrentPackageName: com.vrchat.demo-template | ||
listPublishDirectory: Website | ||
pathToCi: ci | ||
|
||
on: | ||
workflow_dispatch: | ||
workflow_run: | ||
workflows: [Build Release] | ||
types: | ||
- completed | ||
release: | ||
types: [published, created, edited, unpublished, deleted, released] | ||
|
||
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages | ||
permissions: | ||
contents: read | ||
pages: write | ||
id-token: write | ||
|
||
# Allow one concurrent deployment | ||
concurrency: | ||
group: "pages" | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
|
||
build-listing: | ||
name: build-listing | ||
environment: | ||
name: github-pages | ||
url: ${{ steps.deployment.outputs.page_url }} | ||
runs-on: ubuntu-latest | ||
steps: | ||
|
||
- uses: actions/checkout@v3 # check out this repo | ||
- uses: actions/checkout@v3 # check out automation repo | ||
with: | ||
repository: vrchat-community/package-list-action | ||
path: ${{env.pathToCi}} | ||
clean: false # otherwise the local repo will no longer be checked out | ||
|
||
- name: Restore Cache | ||
uses: actions/cache@v3 | ||
with: | ||
path: | | ||
${{env.pathToCi}}/.nuke/temp | ||
~/.nuget/packages | ||
key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj') }} | ||
|
||
- name: Build Package Version Listing | ||
run: ${{env.pathToCi}}/build.cmd BuildRepoListing --root ${{env.pathToCi}} --list-publish-directory $GITHUB_WORKSPACE/${{env.listPublishDirectory}} --current-package-name ${{env.CurrentPackageName}} | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Setup Pages | ||
uses: actions/configure-pages@v3 | ||
|
||
- name: Upload artifact | ||
uses: actions/upload-pages-artifact@v1 | ||
with: | ||
path: ${{env.listPublishDirectory}} | ||
|
||
- name: Deploy to GitHub Pages | ||
id: deployment | ||
uses: actions/deploy-pages@v2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
name: Build Release | ||
|
||
on: | ||
workflow_dispatch: | ||
push: | ||
branches: main | ||
paths: Packages/com.vrchat.demo-template/** | ||
|
||
env: | ||
packageName: "com.vrchat.demo-template" | ||
|
||
permissions: | ||
contents: write | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
steps: | ||
|
||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
|
||
- name: get version | ||
id: version | ||
uses: notiz-dev/github-action-json-property@7c8cf5cc36eb85d8d287a8086a39dac59628eb31 | ||
with: | ||
path: "Packages/${{env.packageName}}/package.json" | ||
prop_path: "version" | ||
|
||
- name: Set Environment Variables | ||
run: | | ||
echo "zipFile=${{ env.packageName }}-${{ steps.version.outputs.prop }}".zip >> $GITHUB_ENV | ||
echo "unityPackage=${{ env.packageName }}-${{ steps.version.outputs.prop }}.unitypackage" >> $GITHUB_ENV | ||
- name: Create Zip | ||
uses: thedoctor0/zip-release@09336613be18a8208dfa66bd57efafd9e2685657 | ||
with: | ||
type: "zip" | ||
directory: "Packages/${{env.packageName}}/" | ||
filename: "../../${{env.zipFile}}" # make the zip file two directories up, since we start two directories in above | ||
|
||
- run: find "Packages/${{env.packageName}}/" -name \*.meta >> metaList | ||
|
||
- name: Create UnityPackage | ||
uses: pCYSl5EDgo/create-unitypackage@cfcd3cf0391a5ef1306342794866a9897c32af0b | ||
with: | ||
package-path: ${{ env.unityPackage }} | ||
include-files: metaList | ||
|
||
|
||
- name: Make Release | ||
uses: softprops/action-gh-release@1e07f4398721186383de40550babbdf2b84acfc5 | ||
with: | ||
tag_name: ${{ steps.version.outputs.prop }} | ||
files: | | ||
${{ env.zipFile }} | ||
${{ env.unityPackage }} | ||
Packages/${{ env.packageName }}/package.json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
# This .gitignore file should be placed at the root of your Unity project directory | ||
# | ||
# Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore | ||
# | ||
/[Ll]ibrary/ | ||
/[Tt]emp/ | ||
/[Oo]bj/ | ||
/[Bb]uild/ | ||
/[Bb]uilds/ | ||
/[Ll]ogs/ | ||
/[Mm]emoryCaptures/ | ||
|
||
# Asset meta data should only be ignored when the corresponding asset is also ignored | ||
!/[Aa]ssets/**/*.meta | ||
|
||
# Uncomment this line if you wish to ignore the asset store tools plugin | ||
# /[Aa]ssets/AssetStoreTools* | ||
|
||
# Autogenerated Jetbrains Rider plugin | ||
[Aa]ssets/Plugins/Editor/JetBrains* | ||
|
||
# Visual Studio cache directory | ||
.vs/ | ||
|
||
# Gradle cache directory | ||
.gradle/ | ||
|
||
# Autogenerated VS/MD/Consulo solution and project files | ||
ExportedObj/ | ||
.consulo/ | ||
*.csproj | ||
*.unityproj | ||
*.sln | ||
*.suo | ||
*.tmp | ||
*.user | ||
*.userprefs | ||
*.pidb | ||
*.booproj | ||
*.svd | ||
*.pdb | ||
*.mdb | ||
*.opendb | ||
*.VC.db | ||
|
||
# Unity3D generated meta files | ||
*.pidb.meta | ||
*.pdb.meta | ||
*.mdb.meta | ||
|
||
# Unity3D generated file on crash reports | ||
sysinfo.txt | ||
|
||
# Builds | ||
*.apk | ||
*.unitypackage | ||
|
||
# Crashlytics generated file | ||
crashlytics-build.properties | ||
|
||
.idea/.idea.vpm-package-maker/.idea | ||
Assets/PackageMakerWindowData.asset* | ||
.idea | ||
.vscode |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
# VPM Package Template | ||
|
||
Starter for making Packages, including automation for building and publishing them. | ||
|
||
Once you're all set up, you'll be able to push changes to this repository and have .zip and .unitypackage versions automatically generated, and a listing made which works in the VPM for delivering updates for this package. If you want to make a listing with a variety of packages, check out our [template-package-listing](https://github.com/vrchat-community/template-package-listing) repo. | ||
|
||
## ▶ Getting Started | ||
|
||
* Press [![Use This Template](https://user-images.githubusercontent.com/737888/185467681-e5fdb099-d99f-454b-8d9e-0760e5a6e588.png)](https://github.com/vrchat-community/template-package/generate) | ||
to start a new GitHub project based on this template. | ||
* Choose a fitting repository name and description. | ||
* Set the visibility to 'Public'. You can also choose 'Private' and change it later. | ||
* You don't need to select 'Include all branches.' | ||
* Clone this repository locally using Git. | ||
* If you're unfamiliar with Git and GitHub, [visit GitHub's documentation](https://docs.github.com/en/get-started/quickstart/git-and-github-learning-resources) to learn more. | ||
* Add the folder to Unity Hub and open it as a Unity Project. | ||
* After opening the project, wait while the VPM resolver is downloaded and added to your project. | ||
* This gives you access to the VPM Package Maker and Package Resolver tools. | ||
|
||
## 🚇 Migrating Assets Package | ||
Full details at [Converting Assets to a VPM Package](https://vcc.docs.vrchat.com/guides/convert-unitypackage) | ||
|
||
## Working on Your Package | ||
|
||
* Delete the "Packages/com.vrchat.demo-template" directory or reuse it for your own package. | ||
* If you reuse the package, don't forget to rename it! | ||
* Update the `.gitignore` file in the "Packages" directory to include your package. | ||
* For example, change `!com.vrchat.demo-template` to `!com.username.package-name`. | ||
* `.gitignore` files normally *exclude* the contents of your "Packages" directory. This `.gitignore` in this template show how to *include* the demo package. You can easily change this out for your own package name. | ||
* Open the Unity project and work on your package's files in your favorite code editor. | ||
* When you're ready, commit and push your changes. | ||
* Once you've set up the automation as described below, you can easily publish new versions. | ||
|
||
## Setting up the Automation | ||
|
||
You'll need to make a few changes in [release.yml](.github/workflows/release.yml): | ||
* Change the `paths` property on line 7 to point to the directory where your package's source files are. Leave the `/**` at the end so GitHub knows to run this action whenever any file in that directory is changed. | ||
* In the template, this property is `paths: Packages/com.vrchat.demo-template/**` | ||
* Change the `packageName` property on line 10 to include the name of your package, like `packageName: "com.vrchat.demo-template"` | ||
|
||
You'll also need to make a change to [build-listing.yml](.github/workflows/build-listing.yml): | ||
* Change `CurrentPackageName` in line 4 from `com.vrchat.demo-template` to your own package name. | ||
|
||
Finally, go to the "Settings" page for your repo, then choose "Pages", and look for the heading "Build and deployment". Change the "Source" dropdown from "Deploy from a branch" to "GitHub Actions". | ||
|
||
That's it! | ||
Some other notes: | ||
* We highly recommend you keep the existing folder structure of this template. | ||
* The root of the project should be a Unity project. | ||
* Your packages should be in the "Packages" directory. | ||
* If you deviate from this folder structure, you'll need to update the paths that assume your package is in the "Packages" directory on lines 24, 38, 41 and 57. | ||
* If you want to store and generate your web files in a folder other than "Website" in the root, you can change the `listPublicDirectory` item [here in build-listing.yml](.github/workflows/build-listing.yml#L17). | ||
|
||
## 🎉 Publishing a Release | ||
|
||
A release will be automatically built whenever you push changes to your main branch which update files in the package folder you specified in `release.yml`. The version specified in your `package.json` file will be used to define the version of the release. | ||
|
||
## 📃 Rebuilding the Listing | ||
|
||
Whenever you make a change to a release - automatically publishing it, or manually creating, editing or deleting one, the [Build Repo Listing](.github/workflows/build-listing.yml) action will make a new index of all the releases available, and publish them as a website hosted fore free on [GitHub Pages](https://pages.github.com/). This listing can be used by the VPM to keep your package up to date, and the generated index page can serve as a simple landing page with info for your package. The URL for your package will be in the format `https://username.github.io/repo-name`. | ||
|
||
## 🏠 Customizing the Landing Page | ||
|
||
The action which rebuilds the listing also publishes a landing page. The source for this page is in `Website/index.html`. The automation system uses [Scriban](https://github.com/scriban/scriban) to fill in the objects like `{{ this }}` with information from the latest release's manifest, so it will stay up-to-date with the name, id and description that you provide there. You are welcome to modify this page however you want - just use the existing `{{ template.objects }}` to fill in that info wherever you like. The entire contents of your "Website" folder are published to your GitHub Page each time. | ||
|
||
## Technical Stuff | ||
|
||
You are welcome to make your own changes to the automation process to make it fit your needs, and you can create Pull Requests if you have some changes you think we should adopt. Here's some more info on the included automation: | ||
|
||
### Build Release Action | ||
[release.yml](/.github/workflows/release.yml) | ||
|
||
This is a composite action combining a variety of existing GitHub Actions and some shell commands to create both a .zip of your Package and a .unitypackage. It creates a release which is named for the `version` in the `package.json` file found in your target Package, and publishes the zip, the unitypackage and the package.json file to this release. | ||
|
||
### Build Repo Listing | ||
[build-listing.yml](.github/workflows/build-listing.yml) | ||
|
||
This is a composite action which builds a vpm-compatible [Repo Listing](https://vcc.docs.vrchat.com/vpm/repos) based on the releases you've created. In order to find all your releases and combine them into a listing, it checks out [another repository](https://github.com/vrchat-community/package-list-action) which has a [Nuke](https://nuke.build/) project which includes the VPM core lib to have access to its types and methods. This project will be expanded to include more functionality in the future - for now, the action just calls its `BuildRepoListing` target. |