{"id":22953056,"url":"https://github.com/devorbitus/renconstruct-build-action","last_synced_at":"2025-07-06T21:39:14.624Z","repository":{"id":65159525,"uuid":"373326966","full_name":"devorbitus/renconstruct-build-action","owner":"devorbitus","description":"Github Action to utilize Renconstruct to build PC/Mac/Linux and Android","archived":false,"fork":false,"pushed_at":"2021-08-08T14:18:53.000Z","size":88,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-06-03T15:59:47.300Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devorbitus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-06-02T23:20:36.000Z","updated_at":"2024-01-03T08:24:53.000Z","dependencies_parsed_at":"2023-01-04T12:36:55.400Z","dependency_job_id":null,"html_url":"https://github.com/devorbitus/renconstruct-build-action","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/devorbitus/renconstruct-build-action","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devorbitus%2Frenconstruct-build-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devorbitus%2Frenconstruct-build-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devorbitus%2Frenconstruct-build-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devorbitus%2Frenconstruct-build-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devorbitus","download_url":"https://codeload.github.com/devorbitus/renconstruct-build-action/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devorbitus%2Frenconstruct-build-action/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263939931,"owners_count":23532989,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-14T15:52:12.269Z","updated_at":"2025-07-06T21:39:14.603Z","avatar_url":"https://github.com/devorbitus.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# renconstruct-build-action\nGithub Action to utilize renConstruct to build Mac/PC/Linux and Android distributions of a VN project\n\n## Table of Contents\n\u003c!-- TOC --\u003e\n- [Table of Contents](#table-of-contents)\n- [Usage](#usage)\n- [Inputs](#inputs)\n  - [Required Input](#required-input)\n    - [Config file](#config-file)\n  - [Optional Inputs](#optional-inputs)\n    - [Android Config file](#android-config-file)\n    - [Shared Mount Path](#shared-mount-path)\n    - [Action Shared Mount Path](#action-shared-mount-path)\n    - [Android Auto Upgrade Version](#android-auto-upgrade-version)\n- [Output](#output)\n  - [Local Dir](#local-dir)\n  - [Action Dir](#action-dir)\n  - [Version](#version)\n  - [Android Numeric Game Version](#android-numeric-game-version)\n  - [SDK Version](#sdk-version)\n  - [Android Package](#android-package)\n  - [Build Name](#build-name)\n- [Advanced Usage](#advanced-usage)\n  - [Caching SDK download](#caching-sdk-download)\n  - [Caching SDK AND Upload distributions to Mega AND Itch.io](#caching-sdk-and-upload-distributions-to-mega-and-itchio)\n\u003c!-- /TOC --\u003e\n\n## Usage\nBuild for mac and/or pc/linux only and NOT android\n```yml\n  - name: Build VN Project New\n    uses: devorbitus/renconstruct-build-action@v1.0.3\n    id: buildStep\n    with:\n        config-file: 'config.yml'\n```\nBuild for mac and/or pc/linux only AND android\n```yml\n  - name: Build VN Project New\n    uses: devorbitus/renconstruct-build-action@v1.0.3\n    id: buildStep\n    with:\n        config-file: 'config.yml'\n        android-config-file: '.android.json'\n    env:\n        RC_KEYSTORE: ${{ secrets.BASE64_ANDROID_KEYSTORE }}\n```\nLooking up your existing keystore file and getting the base64 encoded string representation of that file stored as a GitHub secret can be done using a site [like this](https://base64.guru/converter/encode/file) and instructions for creating a Github secret can be [found here](https://docs.github.com/en/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository).\n\nThe keystore file can be found within the Ren'Py SDK `rapt` directory in a file called `android.keystore`, you can use that file to get the base64 string representation.\n\n## Inputs\n\n### Required Input\n\n#### Config file\n\n```yml\n    id: buildStep\n    with:\n        config-file: 'config.yml'\n```\n\nThe path to the renConstruct config file relative to the root of the project\n\n### Optional Inputs\n\n#### Android Config file\n\n```yml\n    id: buildStep\n    with:\n        config-file: 'config.yml'\n        android-config-file: '.android.json'\n```\n\nThe path to the android config JSON file relative to the root of the project\n\n#### Shared Mount Path\n\n```yml\n    id: buildStep\n    with:\n        config-file: 'config.yml'\n        android-config-file: '.android.json'\n        shared-mount-path: '/home/runner/work/_temp/_github_workflow'\n```\n\nThis path is undocumented, so placing it here in case it needs to be changed in the future without a code change to the action\n\n#### Action Shared Mount Path\n\n```yml\n    id: buildStep\n    with:\n        config-file: 'config.yml'\n        android-config-file: '.android.json'\n        shared-mount-path: '/home/runner/work/_temp/_github_workflow'\n        action-shared-mount-path: '/github/workflow'\n```\n\nThis path is undocumented, so placing it here in case it needs to be changed in the future without a code change to the action that container-based actions will have access to as actions mounts the host directory into the container.\n\n#### Android Auto Upgrade Version\n\n```yml\n    id: buildStep\n    with:\n        config-file: 'config.yml'\n        android-config-file: '.android.json'\n        shared-mount-path: '/home/runner/work/_temp/_github_workflow'\n        action-shared-mount-path: '/github/workflow'\n        android-auto-upgrade-version: 'true'\n```\n\nChange this default to anything other than `true`, and it won't auto-increment the version within the android config JSON file\n\n## Output\n\n### Local Dir\n\n```yml\n      - name: Build VN Project New\n        uses: devorbitus/renconstruct-build-action@v1.0.3\n        id: buildStep\n        with:\n          config-file: 'config.yml'\n          android-config-file: '.android.json'\n        env:\n          RC_KEYSTORE: ${{ secrets.BASE64_ANDROID_KEYSTORE }}\n      # ... maybe other steps\n      - name: List Built Distributions\n        run: ls -al ${{ steps.buildStep.outputs.local-dir }}\n```\n\nThe directory where the distributed files exist\n\n### Action Dir\n\n```yml\n      - name: Build VN Project New\n        uses: devorbitus/renconstruct-build-action@v1.0.3\n        id: buildStep\n        with:\n          config-file: 'config.yml'\n          android-config-file: '.android.json'\n        env:\n          RC_KEYSTORE: ${{ secrets.BASE64_ANDROID_KEYSTORE }}\n      # ... maybe other steps\n      - name: Upload to Mega\n        id: uploadMega\n        uses: Difegue/action-megacmd@1.1.0\n        with:\n          args: put ${{ format('{0}/{1}-{2}-mac.zip', steps.buildStep.outputs.action-dir, steps.buildStep.outputs.build-name, steps.buildStep.outputs.version) }} /path/to/my-mega-dist-folder/\n```\n\nThe directory where the distributed files exist that another container-based GitHub action can access\n\n### Version\n\n```yml\n      - name: Build VN Project New\n        uses: devorbitus/renconstruct-build-action@v1.0.3\n        id: buildStep\n        with:\n          config-file: 'config.yml'\n          android-config-file: '.android.json'\n        env:\n          RC_KEYSTORE: ${{ secrets.BASE64_ANDROID_KEYSTORE }}\n      # ... maybe other steps\n      - name: Upload to Mega\n        id: uploadMega\n        uses: Difegue/action-megacmd@1.1.0\n        with:\n          args: put ${{ format('{0}/{1}-{2}-mac.zip', steps.buildStep.outputs.action-dir, steps.buildStep.outputs.build-name, steps.buildStep.outputs.version) }} /path/to/my-mega-dist-folder/\n```\n\nThe built version of the desktop project (config.version)\n\n### Android Numeric Game Version\n\n```yml\n      - name: Build VN Project New\n        uses: devorbitus/renconstruct-build-action@v1.0.3\n        id: buildStep\n        with:\n          config-file: 'config.yml'\n          android-config-file: '.android.json'\n        env:\n          RC_KEYSTORE: ${{ secrets.BASE64_ANDROID_KEYSTORE }}\n      # ... maybe other steps\n      - name: Upload to Mega\n        id: uploadMega\n        uses: Difegue/action-megacmd@1.1.0\n        with:\n          args: put ${{ format('{0}/{1}-{2}-universal-release.apk', steps.buildStep.outputs.action-dir, steps.buildStep.outputs.android-package, steps.buildStep.outputs.android-numeric-game-version) }} /path/to/my-mega-dist-folder/\n```\n\nThe numeric android version of the built version\n\n### SDK Version\n\n```yml\n      - name: Build VN Project New\n        uses: devorbitus/renconstruct-build-action@v1.0.3\n        id: buildStep\n        with:\n          config-file: 'config.yml'\n          android-config-file: '.android.json'\n        env:\n          RC_KEYSTORE: ${{ secrets.BASE64_ANDROID_KEYSTORE }}\n      # ... maybe other steps\n      - name: Upload to Mega\n        id: uploadMega\n        uses: Difegue/action-megacmd@1.1.0\n        with:\n          # adding the -c makes mega create the folder for the version if it doesn't exist\n          args: put -c ${{ format('{0}/{1}-{2}-mac.zip', steps.buildStep.outputs.action-dir, steps.buildStep.outputs.build-name, steps.buildStep.outputs.version) }} /path/to/my-mega-dist-folder/sdk/${{ steps.buildStep.outputs.sdk-version }}/gameVersion/${{ steps.buildStep.outputs.version }}/\n```\n\nThe SDK version used (pulled from the config.yml of renConstruct)\n\n### Android Package\n\n```yml\n      - name: Build VN Project New\n        uses: devorbitus/renconstruct-build-action@v1.0.3\n        id: buildStep\n        with:\n          config-file: 'config.yml'\n          android-config-file: '.android.json'\n        env:\n          RC_KEYSTORE: ${{ secrets.BASE64_ANDROID_KEYSTORE }}\n      # ... maybe other steps\n      - name: Upload to Mega\n        id: uploadMega\n        uses: Difegue/action-megacmd@1.1.0\n        with:\n          args: put ${{ format('{0}/{1}-{2}-universal-release.apk', steps.buildStep.outputs.action-dir, steps.buildStep.outputs.android-package, steps.buildStep.outputs.android-numeric-game-version) }} /path/to/my-mega-dist-folder/\n```\n\nThe package name inside the configured .android.json file\n\n### Build Name\n\n```yml\n      - name: Build VN Project New\n        uses: devorbitus/renconstruct-build-action@v1.0.3\n        id: buildStep\n        with:\n          config-file: 'config.yml'\n          android-config-file: '.android.json'\n        env:\n          RC_KEYSTORE: ${{ secrets.BASE64_ANDROID_KEYSTORE }}\n      # ... maybe other steps\n      - name: Upload to Mega\n        id: uploadMega\n        uses: Difegue/action-megacmd@1.1.0\n        with:\n          args: put ${{ format('{0}/{1}-{2}-mac.zip', steps.buildStep.outputs.action-dir, steps.buildStep.outputs.build-name, steps.buildStep.outputs.version) }} /path/to/my-mega-dist-folder/\n```\n\nThe official build name from the desktop project (build.name)\n\n## Advanced Usage\n\nBe sure to set the required secrets within GitHub before triggering any releases\n\n### Caching SDK download\n\nWe are utilizing the [GitHub Cache Action](https://github.com/actions/cache) to cache the SDK download. We want the required renConstruct configuration to be the only place we store the SDK version to build, so we are using the [yq action output](https://github.com/devorbitus/yq-action-output) to pull the config file location inside the workflow file (itself). We then go lookup the SDK version from the renConstruct config file and expose it to downstream steps.\n\nContents of an example release workflow found at `.github/workflows/release-action.yml` :\n```yml\nname: Release Workflow\n\non:\n  release:\n    types: [created]\n\njobs:\n  build:\n    name: Build Automation\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v2\n      - name: Get SDK Version from config\n        id: lookupSdkVersion\n        uses: devorbitus/yq-action-output@v1.0\n        with:\n          cmd: yq eval '.renutil.version' $(yq eval '.jobs.build.steps[] | select(.id == \"buildStep\") | .with.config-file' .github/workflows/release-action.yml)\n      - name: show yq result\n        run: echo Result is ${{ steps.lookupSdkVersion.outputs.result }}\n      - name: Restore Cache\n        id: restore-cache\n        uses: actions/cache@v2\n        with:\n          path: ../build\n          key:  ${{ runner.os }}-sdk-${{ steps.lookupSdkVersion.outputs.result }}\n      - name: Build VN Project New\n        uses: devorbitus/renconstruct-build-action@v1.0.3\n        id: buildStep\n        with:\n          config-file: 'config.yml'\n          android-config-file: '.android.json'\n        env:\n          RC_KEYSTORE: ${{ secrets.BASE64_ANDROID_KEYSTORE }}\n      - name: Cache SDK\n        id: save-cache\n        if: steps.restore-cache.outputs.cache-hit != 'true'\n        uses: actions/cache@v2\n        with:\n          path: ../build\n          key:  ${{ runner.os }}-sdk-${{ steps.lookupSdkVersion.outputs.result }}\n```\n\n### Caching SDK AND Upload distributions to Mega AND Itch.io\n\nActions used:\n- [GitHub Cache Action](https://github.com/actions/cache)\n- [yq action output](https://github.com/devorbitus/yq-action-output)\n- [GitHub Action for MEGA](https://github.com/Difegue/action-megacmd)\n- [Butler Push (itch.io upload)](https://github.com/josephbmanley/butler-publish-itchio-action)\n\nContents of an example release workflow found at `.github/workflows/release-action.yml` :\n```yml\nname: Release Workflow\n\non:\n  release:\n    types: [created]\n\njobs:\n  build:\n    name: Build Automation\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v2\n      - name: Get SDK Version from config\n        id: lookupSdkVersion\n        uses: devorbitus/yq-action-output@v1.0\n        with:\n          cmd: yq eval '.renutil.version' $(yq eval '.jobs.build.steps[] | select(.id == \"buildStep\") | .with.config-file' .github/workflows/release-action.yml)\n      - name: show yq result\n        run: echo Result is ${{ steps.lookupSdkVersion.outputs.result }}\n      - name: Restore Cache\n        id: restore-cache\n        uses: actions/cache@v2\n        with:\n          path: ../build\n          key:  ${{ runner.os }}-sdk-${{ steps.lookupSdkVersion.outputs.result }}\n      - name: Build VN Project New\n        uses: devorbitus/renconstruct-build-action@v1.0.3\n        id: buildStep\n        with:\n          config-file: 'config.yml'\n          android-config-file: '.android.json'\n        env:\n          RC_KEYSTORE: ${{ secrets.BASE64_ANDROID_KEYSTORE }}\n      - name: Cache SDK\n        id: save-cache\n        if: steps.restore-cache.outputs.cache-hit != 'true'\n        uses: actions/cache@v2\n        with:\n          path: ../build\n          key:  ${{ runner.os }}-sdk-${{ steps.lookupSdkVersion.outputs.result }}\n      - name: List Built Distributions\n        run: ls -al ${{ steps.buildStep.outputs.local-dir }}\n      - name: Upload to Mega\n        id: uploadMega\n        uses: Difegue/action-megacmd@1.1.0\n        with:\n          args: put ${{ format('{0}/{1}-{2}-mac.zip', steps.buildStep.outputs.action-dir, steps.buildStep.outputs.build-name, steps.buildStep.outputs.version) }} ${{ format('{0}/{1}-{2}-pc.zip', steps.buildStep.outputs.action-dir, steps.buildStep.outputs.build-name, steps.buildStep.outputs.version) }} ${{ format('{0}/{1}-{2}-universal-release.apk', steps.buildStep.outputs.action-dir, steps.buildStep.outputs.android-package, steps.buildStep.outputs.android-numeric-game-version) }} /path/to/my-mega-dist-folder/\n        env:\n          USERNAME: ${{ secrets.MEGA_USERNAME }}\n          PASSWORD: ${{ secrets.MEGA_PASSWORD }}\n      - name: Upload to itch.io for PC\n        id: uploadItchPC\n        uses: josephbmanley/butler-publish-itchio-action@v1.0.2\n        env:\n          BUTLER_CREDENTIALS: ${{ secrets.BUTLER_CREDENTIALS }}\n          CHANNEL: windows\n          ITCH_GAME: my-itch-game # change me\n          ITCH_USER: my-itch-user-account # change me\n          PACKAGE: ${{ format('{0}/{1}-{2}-pc.zip', steps.buildStep.outputs.action-dir, steps.buildStep.outputs.build-name, steps.buildStep.outputs.version) }}\n          VERSION: ${{ steps.buildStep.outputs.version }}\n      - name: Upload to itch.io for Mac\n        id: uploadItchMac\n        uses: josephbmanley/butler-publish-itchio-action@v1.0.2\n        env:\n          BUTLER_CREDENTIALS: ${{ secrets.BUTLER_CREDENTIALS }}\n          CHANNEL: mac\n          ITCH_GAME: my-itch-game # change me\n          ITCH_USER: my-itch-user-account # change me\n          PACKAGE: ${{ format('{0}/{1}-{2}-mac.zip', steps.buildStep.outputs.action-dir, steps.buildStep.outputs.build-name, steps.buildStep.outputs.version) }}\n          VERSION: ${{ steps.buildStep.outputs.version }}\n      - name: Upload to itch.io for Linux\n        id: uploadItchLinux\n        uses: josephbmanley/butler-publish-itchio-action@v1.0.2\n        env:\n          BUTLER_CREDENTIALS: ${{ secrets.BUTLER_CREDENTIALS }}\n          CHANNEL: linux\n          ITCH_GAME: my-itch-game # change me\n          ITCH_USER: my-itch-user-account # change me\n          PACKAGE: ${{ format('{0}/{1}-{2}-pc.zip', steps.buildStep.outputs.action-dir, steps.buildStep.outputs.build-name, steps.buildStep.outputs.version) }}\n          VERSION: ${{ steps.buildStep.outputs.version }}\n      - name: Upload to itch.io for Android\n        id: uploadItchAndroid\n        uses: josephbmanley/butler-publish-itchio-action@v1.0.2\n        env:\n          BUTLER_CREDENTIALS: ${{ secrets.BUTLER_CREDENTIALS }}\n          CHANNEL: android\n          ITCH_GAME: my-itch-game # change me\n          ITCH_USER: my-itch-user-account # change me\n          PACKAGE: ${{ format('{0}/{1}-{2}-universal-release.apk', steps.buildStep.outputs.action-dir, steps.buildStep.outputs.android-package, steps.buildStep.outputs.android-numeric-game-version) }}\n          VERSION: ${{ steps.buildStep.outputs.version }}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevorbitus%2Frenconstruct-build-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevorbitus%2Frenconstruct-build-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevorbitus%2Frenconstruct-build-action/lists"}