diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..73fcf9d --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,63 @@ +name: Release Creation + +on: + release: + types: [published] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout code + 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}}/module.zip + + # Create a zip file with all files required by the module to add to the release + - name: Create zip file + run: zip -r ./module.zip module.json lang/ scripts/ handlebars/ + + # 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: false + prerelease: false + token: ${{ secrets.GH_TOKEN }} + artifacts: './module.json, ./module.zip' + tag: ${{ github.event.release.tag_name }} + body: ${{ github.event.release.body }} + + # Install Node + - name: Install node + uses: actions/setup-node@v3.5.1 + with: + node-version: 16 + + # Publish to FoundryVTT + - name: Publish to Foundry VTT Repo + id: publish_foundry_repo + run: npx @ghost-fvtt/foundry-publish + env: + FVTT_MANIFEST_PATH: 'module.json' + FVTT_PACKAGE_ID: ${{ secrets.PACKAGE_ID }} + FVTT_USERNAME: ${{ secrets.FOUNDRY_ADMIN_USER }} + FVTT_PASSWORD: ${{ secrets.FOUNDRY_ADMIN_PW }}