name: Texture Pack Packaging and Release on: push: branches: - main - master jobs: package-and-release: runs-on: ubuntu-latest timeout-minutes: 10 concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true steps: - name: Checkout code uses: actions/checkout@v3 with: fetch-depth: 0 - name: Set up ZIP tool run: sudo apt-get install zip -y - name: Calculate version number id: version run: | # Read current version from versions.txt or initialize if [ -f versions.txt ]; then CURRENT_VERSION=$(tail -1 versions.txt | awk '{print $NF}') else CURRENT_VERSION="1.0.0" echo "Initial version: $CURRENT_VERSION" > versions.txt fi # Split version into components MAJOR=$(echo $CURRENT_VERSION | cut -d. -f1) MINOR=$(echo $CURRENT_VERSION | cut -d. -f2) PATCH=$(echo $CURRENT_VERSION | cut -d. -f3) # Increment version according to rules if [ $PATCH -lt 9 ]; then NEW_PATCH=$((PATCH + 1)) NEW_VERSION="$MAJOR.$MINOR.$NEW_PATCH" else NEW_MINOR=$((MINOR + 1)) NEW_VERSION="$MAJOR.$NEW_MINOR.0" fi echo "VERSION=$NEW_VERSION" >> $GITHUB_ENV echo "New version: $NEW_VERSION" >> versions.txt echo "New version calculated: $NEW_VERSION" - name: Update pack.mcmeta run: | sudo apt-get update && sudo apt-get install -y jq jq --arg version "v${{ env.VERSION }}" '.pack.description = [{"text": "MineDivinity Pack ", "bold": true, "color": "#FF5555"}, {"text": $version, "bold": true, "color": "#FFAA00"}]' pack/pack.mcmeta > pack/pack.mcmeta.tmp && mv pack/pack.mcmeta.tmp pack/pack.mcmeta echo "pack.mcmeta updated with version v${{ env.VERSION }}" - name: Package texture pack run: | # Create ZIP with pack directory contents at root level cd pack && zip -r ../MineDivinity-Pack.zip * cd .. # Generate SHA1 checksum sha1sum MineDivinity-Pack.zip > MineDivinity-Pack.sha1.txt echo "ZIP file created: MineDivinity-Pack.zip" echo "SHA1 checksum generated" - name: Configure Git run: | git config --global user.name "Gitea Actions" git config --global user.email "actions@gitea" git remote set-url origin https://x:${{ secrets.TOKEN }}@git.devbeni.lol/MineDivinity/pack.git - name: Commit updates run: | git add versions.txt pack/pack.mcmeta MineDivinity-Pack.zip MineDivinity-Pack.sha1.txt git commit -m "Update to version ${{ env.VERSION }} [skip ci]" git pull origin main --rebase git push origin main - name: Delete existing release run: | RELEASE_ID=$(curl -s -H "Authorization: token ${{ secrets.TOKEN }}" "https://git.devbeni.lol/api/v1/repos/MineDivinity/pack/releases/tags/latest" | jq .id) if [ "$RELEASE_ID" != "null" ] && [ ! -z "$RELEASE_ID" ]; then echo "Deleting release with ID $RELEASE_ID" curl -s -X DELETE -H "Authorization: token ${{ secrets.TOKEN }}" "https://git.devbeni.lol/api/v1/repos/MineDivinity/pack/releases/$RELEASE_ID" else echo "No existing 'latest' release found." fi - name: Update latest tag run: | git tag -d latest || true git push --delete origin latest || true git tag -a latest -m "Release v${{ env.VERSION }}" git push origin latest - name: Create Release id: create-release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.TOKEN }} with: tag_name: latest release_name: MineDivinity Pack (Latest) v${{ env.VERSION }} body: | Minecraft Texture Pack Release Version: ${{ env.VERSION }} draft: false prerelease: false - name: Upload Artifacts run: | echo "Uploading texture pack..." curl -sSL \ -X POST \ -H "Authorization: token ${{ secrets.TOKEN }}" \ -H "Content-Type: application/zip" \ --data-binary @MineDivinity-Pack.zip \ "${{ steps.create-release.outputs.upload_url }}?name=MineDivinity-Pack.zip" echo "Uploading SHA1 checksum..." curl -sSL \ -X POST \ -H "Authorization: token ${{ secrets.TOKEN }}" \ -H "Content-Type: text/plain" \ --data-binary @MineDivinity-Pack.sha1.txt \ "${{ steps.create-release.outputs.upload_url }}?name=MineDivinity-Pack.sha1.txt" echo "Artifacts uploaded successfully"