aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/build-listing.yml78
-rw-r--r--.github/workflows/release.yml87
2 files changed, 165 insertions, 0 deletions
diff --git a/.github/workflows/build-listing.yml b/.github/workflows/build-listing.yml
new file mode 100644
index 0000000..bb96d50
--- /dev/null
+++ b/.github/workflows/build-listing.yml
@@ -0,0 +1,78 @@
+name: Build Repo Listing
+
+env:
+ 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 the VPM Listing Website and deploy to GitHub Pages
+ build-listing:
+ name: build-listing
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ runs-on: ubuntu-latest
+ steps:
+
+ # Checkout Local Repository
+ - name: Checkout Local Repository
+ uses: actions/checkout@v4
+
+ # Checkout Automation Repository without removing prior checkouts
+ - name: Checkout Automation Repository
+ uses: actions/checkout@v4
+ with:
+ repository: vrchat-community/package-list-action
+ path: ${{ env.pathToCi }}
+ clean: false
+
+ # Load cached data from previous runs
+ - name: Restore Cache
+ uses: actions/cache@v4
+ with:
+ path: |
+ ${{ env.pathToCi }}/.nuke/temp
+ ~/.nuget/packages
+ key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj') }}
+
+ # Build Package Version Listing with Nuke
+ - name: Build Package Version Listing
+ run: ${{ env.pathToCi }}/build.cmd BuildRepoListing --root ${{ env.pathToCi }} --list-publish-directory $GITHUB_WORKSPACE/${{ env.listPublishDirectory }} --current-package-name ${{ vars.PACKAGE_NAME }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ # Prepare for GitHub Pages deployment
+ - name: Setup Pages
+ uses: actions/configure-pages@v5
+
+ # Upload the VPM Listing Website to GitHub Pages artifacts
+ - name: Upload Pages Artifact
+ uses: actions/upload-pages-artifact@v3
+ with:
+ path: ${{ env.listPublishDirectory }}
+
+ # Deploy the uploaded VPM Listing Website to GitHub Pages
+ - name: Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v4 \ No newline at end of file
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..8037eae
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,87 @@
+name: Build Release
+
+on:
+ workflow_dispatch:
+
+jobs:
+
+ # Validate Repository Configuration
+ config:
+ runs-on: ubuntu-latest
+ outputs:
+ config_package: ${{ steps.config_package.outputs.configPackage }}
+ steps:
+
+ # Ensure that required repository variable has been created for the Package
+ - name: Validate Package Config
+ id: config_package
+ run: |
+ if [ "${{ vars.PACKAGE_NAME }}" != "" ]; then
+ echo "configPackage=true" >> $GITHUB_OUTPUT;
+ else
+ echo "configPackage=false" >> $GITHUB_OUTPUT;
+ fi
+
+ # Build and release the Package
+ # If the repository is not configured properly, this job will be skipped
+ build:
+ needs: config
+ runs-on: ubuntu-latest
+ permissions:
+ contents: write
+ env:
+ packagePath: Packages/${{ vars.PACKAGE_NAME }}
+ if: needs.config.outputs.config_package == 'true'
+ steps:
+
+ # Checkout Local Repository
+ - name: Checkout
+ uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac
+
+ # Get the Package version based on the package.json file
+ - name: Get Version
+ id: version
+ uses: zoexx/github-action-json-file-properties@b9f36ce6ee6fe2680cd3c32b2c62e22eade7e590
+ with:
+ file_path: "${{ env.packagePath }}/package.json"
+ prop_path: "version"
+
+ # Configure the Environment Variables needed for releasing the Package
+ - name: Set Environment Variables
+ run: |
+ echo "zipFile=${{ vars.PACKAGE_NAME }}-${{ steps.version.outputs.value }}".zip >> $GITHUB_ENV
+ echo "unityPackage=${{ vars.PACKAGE_NAME }}-${{ steps.version.outputs.value }}.unitypackage" >> $GITHUB_ENV
+ echo "version=${{ steps.version.outputs.value }}" >> $GITHUB_ENV
+
+ # Zip the Package for release
+ - name: Create Package Zip
+ working-directory: "${{ env.packagePath }}"
+ run: zip -r "${{ github.workspace }}/${{ env.zipFile }}" .
+
+ # Build a list of .meta files for future use
+ - name: Track Package Meta Files
+ run: find "${{ env.packagePath }}/" -name \*.meta >> metaList
+
+ # Make a UnityPackage version of the Package for release
+ - name: Create UnityPackage
+ uses: pCYSl5EDgo/create-unitypackage@v1.2.3
+ with:
+ package-path: ${{ env.unityPackage }}
+ include-files: metaList
+
+ # Make a release tag of the version from the package.json file
+ - name: Create Tag
+ id: tag_version
+ uses: rickstaa/action-create-tag@88dbf7ff6fe2405f8e8f6c6fdfd78829bc631f83
+ with:
+ tag: "${{ env.version }}"
+
+ # Publish the Release to GitHub
+ - name: Make Release
+ uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844
+ with:
+ files: |
+ ${{ env.zipFile }}
+ ${{ env.unityPackage }}
+ ${{ env.packagePath }}/package.json
+ tag_name: ${{ env.version }}