{"id":30117419,"url":"https://github.com/fedox-die-ente/resource-pack-deployment","last_synced_at":"2025-08-10T10:43:41.490Z","repository":{"id":308476336,"uuid":"1032950902","full_name":"Fedox-die-Ente/resource-pack-deployment","owner":"Fedox-die-Ente","description":"A GitHub Actions workflow to automatically zip and upload Minecraft resource packs to a NAS via SFTP, triggered on changes. Supports separate dev and prod packs with change detection via SHA1 hashes.","archived":false,"fork":false,"pushed_at":"2025-08-06T04:58:54.000Z","size":5,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-06T06:30:11.617Z","etag":null,"topics":["minecraft","minecraft-resourcepack","minecraft-texture-pack","resource-pack"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Fedox-die-Ente.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-06T04:48:08.000Z","updated_at":"2025-08-06T04:58:58.000Z","dependencies_parsed_at":"2025-08-06T06:30:13.179Z","dependency_job_id":"33c186c5-68a7-4b3d-8a51-2df203e88caa","html_url":"https://github.com/Fedox-die-Ente/resource-pack-deployment","commit_stats":null,"previous_names":["fedox-die-ente/resource-pack-deployment"],"tags_count":null,"template":true,"template_full_name":null,"purl":"pkg:github/Fedox-die-Ente/resource-pack-deployment","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fedox-die-Ente%2Fresource-pack-deployment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fedox-die-Ente%2Fresource-pack-deployment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fedox-die-Ente%2Fresource-pack-deployment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fedox-die-Ente%2Fresource-pack-deployment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Fedox-die-Ente","download_url":"https://codeload.github.com/Fedox-die-Ente/resource-pack-deployment/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fedox-die-Ente%2Fresource-pack-deployment/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269712986,"owners_count":24463216,"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","status":"online","status_checked_at":"2025-08-10T02:00:08.965Z","response_time":71,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["minecraft","minecraft-resourcepack","minecraft-texture-pack","resource-pack"],"created_at":"2025-08-10T10:43:41.007Z","updated_at":"2025-08-10T10:43:41.446Z","avatar_url":"https://github.com/Fedox-die-Ente.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Minecraft Resource Pack Deployment\n\nThis repository is used to manage and automatically deploy Minecraft resource packs for development (dev) and production (prod) environments.\n## Project structure\n\nThe resource packages are organized in the following structure:\n```\nresource-pack/\n├── .github/\n│   └── workflows/\n│       └── zip-and-upload.yml               # This GitHub Actions workflow\n├── assets/                                  # Design-related assets (e.g., icons, logos) (not zipped)\n│   └── design-stuff/                        \n├── minecraft/\n│   ├── dev/                                 # Development resource pack\n│   │   ├── assets/\n│   │   └── pack.mcmeta\n│   └── prod/                                # Production resource pack\n│       ├── assets/\n│       └── pack.mcmeta\n├── sha1_hashes.json                         # JSON file containing the SHA1 hashes of the resource packs\n└── README.md\n```\n\n## Deployment workflow\n\nThe `zip-and-upload.yml` GitHub Actions workflow automates the process of zipping and uploading resource packages to a server via SFTP.\n\n**Functionality:**\n\n1.  **Checkout:** The repository is checked out.\n2.  **SHA1 hash calculation:** The current SHA1 hashes are calculated for the directories `minecraft/dev` and `minecraft/prod`. These hashes represent the contents of the respective packages.\n3.  **Hash comparison:** The currently calculated hashes are compared with the last known hashes stored in the `sha1_hashes.json` file.\n4.  **Conditional upload:** A package is **only zipped and uploaded** if its current SHA1 hash differs from the stored hash. This ensures that only changed packages are transferred.\n     * The ZIP files are created so that their contents (e.g., `pack.mcmeta`, `assets/`) are located directly in the root directory of the ZIP.\n     * The `dev` ZIP is uploaded to the `dev/` folder on the server, and the `prod` ZIP is uploaded to the `prod/` folder.\n5. **Hash update:** After a successful upload, the new SHA1 hash of the package is updated in the `sha1_hashes.json` file and this change is pushed back to the repository. This serves as a persistent “key” for the state of the packages.\n\n## Setup Instructions\n\nTo use the automated ZIP creation and upload of Minecraft resource packs via GitHub Actions, follow these steps:\n\n### 1. Configure Repository Secrets\n\nTo enable SFTP upload to your Server, add the following secrets in your GitHub repository under **Settings \u003e Secrets and variables \u003e Actions**:\n\n| Secret Name      | Description                                               |\n|------------------|-----------------------------------------------------------|\n| `SFTP_HOST`      | Hostname or IP address of your Server                     |\n| `SFTP_USER`      | Username for SFTP access                                  |\n| `SFTP_PASSWORD`  | Password for the SFTP user                                |\n| `SFTP_PORT`      | SFTP port (default is usually 22)                         |\n| `SFTP_PATH`          | Destination path on the Server (e.g., `/path/to/uploads`) |\n\n\u003e **Note:** Make sure the user has write permissions to the target directory on your SFTP server.\n\n### 2. Review and Customize the Workflow\n\n- The workflow file is located at `.github/workflows/zip-and-upload.yml`.\n- It runs on pushes to the `master` branch.\n- When changes in the `minecraft/dev` or `minecraft/prod` directories are detected, it zips the respective folder and uploads it via SFTP.\n- SHA1 hashes of the last successful uploads are stored in `sha1_hashes.json` to avoid redundant uploads.\n\n### 3. Push Changes and Test\n\n- When you push changes to the resource packs, the workflow will run automatically.\n- You can check the progress and logs in the GitHub Actions tab of your repository\n\n## Current pack hashes\n\nThe current SHA1 hashes of the `dev` and `prod` packages that were last successfully uploaded can be found in the file [`sha1_hashes.json`](./sha1_hashes.json) in the root directory of this repository.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffedox-die-ente%2Fresource-pack-deployment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffedox-die-ente%2Fresource-pack-deployment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffedox-die-ente%2Fresource-pack-deployment/lists"}