From c1375db99102ef9112c762f6622061fdacf403b3 Mon Sep 17 00:00:00 2001 From: webmaster94 <85364225+webmaster94@users.noreply.github.com> Date: Sun, 6 Oct 2024 11:26:15 -0500 Subject: [PATCH] Update main.yml --- .github/workflows/main.yml | 170 +++++++++++++++++++++++++++++-------- 1 file changed, 133 insertions(+), 37 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2627cf4..36792dd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,45 +1,141 @@ -name: Release Creation +# GitHub Actions workflow for creating a new FoundryVTT module release. +# +# Useful References: +# - https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions +# - https://docs.github.com/en/actions/learn-github-actions/contexts +# - https://docs.github.com/en/actions/learn-github-actions/environment-variables +# +# Troubleshooting Checklist: +# - Is the module's manifest file valid JSON? +# You can test your manifest file using https://jsonlint.com/. +# +# - Does the module's manifest have all the required keys? +# See https://foundryvtt.com/article/module-development/#manifest for more +# information. +# +# - Are all the proper files and directories being included in the release's +# module archive ("module.zip")? +# Check that the correct files are being passed to the `zip` command run +# in the "Create Module Archive" step below. +# +# - Is the release tag the proper format? +# See the comments for the "Extract Version From Tag" step below. +# +# - Is a GitHub release being published? +# This workflow will only run when a release is published, not when a +# release is updated. Furthermore, note that while a GitHub release will +# (by default) create a repository tag, a repository tag will not create +# or publish a GitHub release. +# +# - Has the module's entry on FoundryVTT's module administration site +# (https://foundryvtt.com/admin) been updated? +# +name: Create Module Files For GitHub Release -on: + +env: + # The URL used for the module's "Project URL" link on FoundryVTT's website. + project_url: "https://github.com/${{github.repository}}" + + # A URL that will always point to the latest manifest. + # FoundryVTT uses this URL to check whether the current module version that + # is installed is the latest version. This URL should NOT change, + # otherwise FoundryVTT won't be able to perform this check. + latest_manifest_url: "https://github.com/${{github.repository}}/releases/latest/download/module.json" + + # The URL to the module archive associated with the module release being + # processed by this workflow. + release_module_url: "https://github.com/${{github.repository}}/releases/download/${{github.event.release.tag_name}}/module.zip" + + +on: + # Only run this workflow when a release is published. + # To modify this workflow when other events occur, see: + # - https://docs.github.com/en/actions/using-workflows/triggering-a-workflow + # - https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows + # - https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on + # + # Note that some steps may depend on context variables that are only + # available for release events, so if you add other events, you may need to + # alter other parts of this workflow. release: types: [published] + jobs: build: runs-on: ubuntu-latest + permissions: + contents: write + steps: - - uses: actions/checkout@v2 - - # get part of the tag after the `v` - - name: Extract tag version number - id: get_version - uses: battila7/get-version-action@v2 - - # Substitute the Manifest and Download URLs in the module.json - - name: Substitute Manifest and Download Links For Versioned Ones - id: sub_manifest_link_version - uses: microsoft/variable-substitution@v1 - with: - files: 'module.json' - env: - version: ${{steps.get_version.outputs.version-without-v}} - url: https://github.com/${{github.repository}} - manifest: https://github.com/${{github.repository}}/releases/latest/download/module.json - download: https://github.com/${{github.repository}}/releases/download/${{github.event.release.tag_name}}/Waterdeep-City-of-Splendors.zip - - # Create a zip file with all files required by the module to add to the release - - run: zip -r ./Waterdeep-City-of-Splendors.zip module.json LICENSE packs/ images/ scripts/ - - # Create a release for this specific version - - name: Update Release with Files - id: create_version_release - uses: ncipollo/release-action@v1 - with: - allowUpdates: true # Set this to false if you want to prevent updating existing releases - name: ${{ github.event.release.name }} - draft: ${{ github.event.release.unpublished }} - prerelease: ${{ github.event.release.prerelease }} - token: ${{ secrets.GITHUB_TOKEN }} - artifacts: './module.json, ./Waterdeep-City-of-Splendors.zip' - tag: ${{ github.event.release.tag_name }} - body: ${{ github.event.release.body }} \ No newline at end of file + - name: Checkout Repository + uses: actions/checkout@v3 + + + # Extract version embedded in the tag. + # This step expects the tag to be one of the following formats: + # - "v.." (e.g., "v1.2.3") + # - ".." (e.g., "1.2.3") + # + # The version will be used by later steps to fill in the value for the + # "version" key required for a valid module manifest. + - name: Extract Version From Tag + id: get_version + uses: battila7/get-version-action@v2 + + + # Modify "module.json" with values specific to the release. + # Since the values for the "version" and "url" keys aren't known ahead of + # time, the manifest file in the repository is updated with these values. + # + # While this does modify the manifest file in-place, the changes are not + # commited to the repository, and only exist in the action's filesystem. + - name: Modify Module Manifest With Release-Specific Values + id: sub_manifest_link_version + uses: cschleiden/replace-tokens@v1 + with: + files: 'module.json' + env: + VERSION: ${{steps.get_version.outputs.version-without-v}} + URL: ${{ env.project_url }} + MANIFEST: ${{ env.latest_manifest_url }} + DOWNLOAD: ${{ env.release_module_url }} + + + # Create a "module.zip" archive containing all the module's required files. + # If you have other directories or files that will need to be added to + # your packaged module, add them here. + + # Note that `zip` will only emit warnings when a file or directory + # doesn't exist, it will not fail. + - name: Create Module Archive + run: | + zip \ + --recurse-paths \ + `waterdeep-city-of-splendors.zip` \ + ./module.zip \ + `# The files that will be included.` \ + module.json \ + README.md \ + LICENSE \ + images/ + scripts/ \ + packs/ \ + + # Don't forget to add a backslash at the end of the line for any + # additional files or directories! + + # Update the GitHub release with the manifest and module archive files. + - name: Update Release With Files + id: create_version_release + uses: ncipollo/release-action@v1 + with: + allowUpdates: true + name: ${{ github.event.release.name }} + draft: ${{ github.event.release.unpublished }} + prerelease: ${{ github.event.release.prerelease }} + token: ${{ secrets.GITHUB_TOKEN }} + artifacts: './module.json, ./module.zip' + tag: ${{ github.event.release.tag_name }} + body: ${{ github.event.release.body }} \ No newline at end of file