https://github.com/fedox-die-ente/resource-pack-deployment
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.
https://github.com/fedox-die-ente/resource-pack-deployment
minecraft minecraft-resourcepack minecraft-texture-pack resource-pack
Last synced: 10 months ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/fedox-die-ente/resource-pack-deployment
- Owner: Fedox-die-Ente
- Created: 2025-08-06T04:48:08.000Z (10 months ago)
- Default Branch: master
- Last Pushed: 2025-08-06T04:58:54.000Z (10 months ago)
- Last Synced: 2025-08-06T06:30:11.617Z (10 months ago)
- Topics: minecraft, minecraft-resourcepack, minecraft-texture-pack, resource-pack
- Homepage:
- Size: 4.88 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Minecraft Resource Pack Deployment
This repository is used to manage and automatically deploy Minecraft resource packs for development (dev) and production (prod) environments.
## Project structure
The resource packages are organized in the following structure:
```
resource-pack/
├── .github/
│ └── workflows/
│ └── zip-and-upload.yml # This GitHub Actions workflow
├── assets/ # Design-related assets (e.g., icons, logos) (not zipped)
│ └── design-stuff/
├── minecraft/
│ ├── dev/ # Development resource pack
│ │ ├── assets/
│ │ └── pack.mcmeta
│ └── prod/ # Production resource pack
│ ├── assets/
│ └── pack.mcmeta
├── sha1_hashes.json # JSON file containing the SHA1 hashes of the resource packs
└── README.md
```
## Deployment workflow
The `zip-and-upload.yml` GitHub Actions workflow automates the process of zipping and uploading resource packages to a server via SFTP.
**Functionality:**
1. **Checkout:** The repository is checked out.
2. **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.
3. **Hash comparison:** The currently calculated hashes are compared with the last known hashes stored in the `sha1_hashes.json` file.
4. **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.
* The ZIP files are created so that their contents (e.g., `pack.mcmeta`, `assets/`) are located directly in the root directory of the ZIP.
* The `dev` ZIP is uploaded to the `dev/` folder on the server, and the `prod` ZIP is uploaded to the `prod/` folder.
5. **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.
## Setup Instructions
To use the automated ZIP creation and upload of Minecraft resource packs via GitHub Actions, follow these steps:
### 1. Configure Repository Secrets
To enable SFTP upload to your Server, add the following secrets in your GitHub repository under **Settings > Secrets and variables > Actions**:
| Secret Name | Description |
|------------------|-----------------------------------------------------------|
| `SFTP_HOST` | Hostname or IP address of your Server |
| `SFTP_USER` | Username for SFTP access |
| `SFTP_PASSWORD` | Password for the SFTP user |
| `SFTP_PORT` | SFTP port (default is usually 22) |
| `SFTP_PATH` | Destination path on the Server (e.g., `/path/to/uploads`) |
> **Note:** Make sure the user has write permissions to the target directory on your SFTP server.
### 2. Review and Customize the Workflow
- The workflow file is located at `.github/workflows/zip-and-upload.yml`.
- It runs on pushes to the `master` branch.
- When changes in the `minecraft/dev` or `minecraft/prod` directories are detected, it zips the respective folder and uploads it via SFTP.
- SHA1 hashes of the last successful uploads are stored in `sha1_hashes.json` to avoid redundant uploads.
### 3. Push Changes and Test
- When you push changes to the resource packs, the workflow will run automatically.
- You can check the progress and logs in the GitHub Actions tab of your repository
## Current pack hashes
The 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.