This improves the Build CI/CD System and the Release Commit Workflows. The CD system now builds and zips the pack in parallel, increasing the speed twofold. The CI system now does not produce double zips, but remains the same speed, thanks to parallel processing. The CI system now also changes server.properties and random patches config files for the build, and the buildscript has been edited for that. Since the CI system replaces the nightly task, the nightly workflow has been deleted. The makeArtifactNames task is now used, and has been changed to remove usage of deprecated features. The release commit workflows now supports updating files without version input, and the version is grabbed from versions.txt.' The code for the release commit workflows has also been greatly cleaned up. The changes made to the random patches template files have also been updated. The changes made incorrectly to the issue templates in #487 have also been fixed. The README badges have also been changed. The issue badge has been replaced by a nightly builds badge. Finally, this changes the forge download process to try again if the response is null, resulting in a decrease, to almost none, test build pack and build pack failures. [INTERNAL] [IGNORE] checks = { compareNot = "1.7-alpha-1" } [IGNORE]
470 lines
15 KiB
YAML
470 lines
15 KiB
YAML
name: Build Pack
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
tag:
|
|
description: Tag to Checkout and Release.
|
|
required: false
|
|
type: string
|
|
release_type:
|
|
description: The Release Type.
|
|
required: true
|
|
type: choice
|
|
default: 'Release'
|
|
options:
|
|
- 'Release'
|
|
- 'Beta Release'
|
|
- 'Alpha Release'
|
|
- 'Cutting Edge Build'
|
|
changelog_url:
|
|
description: Where to download the Changelog File from. See CONTRIBUTING.md for more information.
|
|
required: false
|
|
type: string
|
|
changelog_cf_url:
|
|
description: Where to download the CF Changelog File from. See CONTRIBUTING.md for more information.
|
|
required: false
|
|
type: string
|
|
changelog_branch:
|
|
description: Branch to download changelog Files from. See CONTRIBUTING.md for more information.
|
|
required: false
|
|
type: string
|
|
compare_tag:
|
|
description: Tag(s) to compare against. If specifying multiple, seperate by commas. (Spaces allowed). See CONTRIBUTING.md for more information.
|
|
required: false
|
|
type: string
|
|
separate_upload:
|
|
description: Whether to uploaed each zip (Client, Server, Lang & MMC) and the changelogs seperately. If not set, will just upload all six files into one artifact (Built Pack).
|
|
required: true
|
|
type: boolean
|
|
|
|
workflow_call:
|
|
inputs:
|
|
tag:
|
|
description: Tag to Checkout and Release.
|
|
required: false
|
|
type: string
|
|
release_type:
|
|
description: The Release Type.
|
|
required: false
|
|
default: Release
|
|
type: string
|
|
changelog_url:
|
|
description: Where to download the Changelog File from. See CONTRIBUTING.md for more information.
|
|
required: false
|
|
type: string
|
|
changelog_cf_url:
|
|
description: Where to download the CF Changelog File from. See CONTRIBUTING.md for more information.
|
|
required: false
|
|
type: string
|
|
changelog_branch:
|
|
description: Branch to download changelog Files from. See CONTRIBUTING.md for more information.
|
|
required: false
|
|
type: string
|
|
compare_tag:
|
|
description: Tag to compare to. See CONTRIBUTING.md for more information.
|
|
required: false
|
|
type: string
|
|
separate_upload:
|
|
description: Whether to uploaed each zip (Client, Server & Lang) and the changelogs seperately. If not set, will just upload all five files into one artifact (Built Pack).
|
|
required: false
|
|
default: false
|
|
type: boolean
|
|
head_ref:
|
|
type: string
|
|
required: false
|
|
true_sha:
|
|
type: string
|
|
required: false
|
|
|
|
jobs:
|
|
buildSingle:
|
|
name: Build Pack (${{ inputs.tag }})
|
|
runs-on: ubuntu-latest
|
|
if: ${{ !inputs.separate_upload }}
|
|
env:
|
|
GITHUB_TAG: ${{ inputs.tag }}
|
|
RELEASE_TYPE: ${{ inputs.release_type }}
|
|
GITHUB_HEAD_REF: ${{ inputs.head_ref }}
|
|
TRUE_SHA: ${{ inputs.true_sha }}
|
|
|
|
steps:
|
|
- name: Checkout Ref
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
ref: ${{ inputs.tag }}
|
|
|
|
- name: Restore Cached Files
|
|
uses: actions/cache@v3
|
|
id: cache
|
|
with:
|
|
path: |
|
|
~/.npm
|
|
./.cache
|
|
./tools/node_modules
|
|
key: ${{ runner.os }}-bunny-${{ hashFiles('**/.cache', '**/package-lock.json', '**/manifest.json') }}
|
|
restore-keys: ${{ runner.os }}-bunny-
|
|
|
|
- name: Setup NodeJS v16
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: "16"
|
|
check-latest: true
|
|
|
|
- name: Setup NPM Packages
|
|
working-directory: ./tools
|
|
run: npm ci
|
|
|
|
- name: Check Environmental Variables
|
|
working-directory: ./tools
|
|
run: npx gulp check
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
CURSEFORGE_PROJECT_ID: ${{ secrets.CURSEFORGE_PROJECT_ID }}
|
|
CURSEFORGE_API_TOKEN: ${{ secrets.CURSEFORGE_API_TOKEN }}
|
|
CFCORE_API_TOKEN: ${{ secrets.CFCORE_API_TOKEN }}
|
|
|
|
- name: Build and Zip Pack
|
|
working-directory: ./tools
|
|
run: npx gulp
|
|
env:
|
|
CFCORE_API_TOKEN: ${{ secrets.CFCORE_API_TOKEN }}
|
|
CHANGELOG_BRANCH: ${{ inputs.changelog_branch }}
|
|
CHANGELOG_URL: ${{ inputs.changelog_url }}
|
|
CHANGELOG_CF_URL: ${{ inputs.changelog_cf_url }}
|
|
COMPARE_TAG: ${{ inputs.compare_tag }}
|
|
|
|
- name: Upload All Files
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Built Pack
|
|
path: |
|
|
./build/*.zip
|
|
./build/*.md
|
|
if-no-files-found: error
|
|
|
|
makeNames:
|
|
name: Make Artifact Names (${{ inputs.tag }})
|
|
runs-on: ubuntu-latest
|
|
if: ${{ inputs.separate_upload }}
|
|
env:
|
|
GITHUB_TAG: ${{ inputs.tag }}
|
|
RELEASE_TYPE: ${{ inputs.release_type }}
|
|
GITHUB_HEAD_REF: ${{ inputs.head_ref }}
|
|
TRUE_SHA: ${{ inputs.true_sha }}
|
|
outputs:
|
|
client: ${{ steps.artifactNames.outputs.client }}
|
|
server: ${{ steps.artifactNames.outputs.server }}
|
|
lang: ${{ steps.artifactNames.outputs.lang }}
|
|
mmc: ${{ steps.artifactNames.outputs.mmc }}
|
|
steps:
|
|
- name: Checkout Ref
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
ref: ${{ inputs.tag }}
|
|
|
|
- name: Restore Cached Files
|
|
uses: actions/cache@v3
|
|
id: cache
|
|
with:
|
|
path: |
|
|
~/.npm
|
|
./.cache
|
|
./tools/node_modules
|
|
key: ${{ runner.os }}-bunny-${{ hashFiles('**/.cache', '**/package-lock.json', '**/manifest.json') }}
|
|
restore-keys: ${{ runner.os }}-bunny-
|
|
|
|
- name: Setup NodeJS v16
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: "16"
|
|
check-latest: true
|
|
|
|
- name: Setup NPM Packages
|
|
working-directory: ./tools
|
|
run: npm ci
|
|
|
|
- name: Check Environmental Variables
|
|
working-directory: ./tools
|
|
run: npx gulp check
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
CURSEFORGE_PROJECT_ID: ${{ secrets.CURSEFORGE_PROJECT_ID }}
|
|
CURSEFORGE_API_TOKEN: ${{ secrets.CURSEFORGE_API_TOKEN }}
|
|
CFCORE_API_TOKEN: ${{ secrets.CFCORE_API_TOKEN }}
|
|
|
|
- name: Make Artifact Names
|
|
id: artifactNames
|
|
working-directory: ./tools
|
|
run: npx gulp makeArtifactNames
|
|
|
|
buildClient:
|
|
name: Build Pack Client (${{ inputs.tag }})
|
|
runs-on: ubuntu-latest
|
|
if: ${{ inputs.separate_upload }}
|
|
needs: makeNames
|
|
env:
|
|
GITHUB_TAG: ${{ inputs.tag }}
|
|
RELEASE_TYPE: ${{ inputs.release_type }}
|
|
GITHUB_HEAD_REF: ${{ inputs.head_ref }}
|
|
TRUE_SHA: ${{ inputs.true_sha }}
|
|
steps:
|
|
- name: Checkout Ref
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
ref: ${{ inputs.tag }}
|
|
|
|
- name: Restore Cached Files
|
|
uses: actions/cache@v3
|
|
id: cache
|
|
with:
|
|
path: |
|
|
~/.npm
|
|
./.cache
|
|
./tools/node_modules
|
|
key: ${{ runner.os }}-bunny-${{ hashFiles('**/.cache', '**/package-lock.json', '**/manifest.json') }}
|
|
restore-keys: ${{ runner.os }}-bunny-
|
|
|
|
- name: Setup NodeJS v16
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: "16"
|
|
check-latest: true
|
|
|
|
- name: Setup NPM Packages
|
|
working-directory: ./tools
|
|
run: npm ci
|
|
|
|
- name: Check Environmental Variables
|
|
working-directory: ./tools
|
|
run: npx gulp check
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
CURSEFORGE_PROJECT_ID: ${{ secrets.CURSEFORGE_PROJECT_ID }}
|
|
CURSEFORGE_API_TOKEN: ${{ secrets.CURSEFORGE_API_TOKEN }}
|
|
CFCORE_API_TOKEN: ${{ secrets.CFCORE_API_TOKEN }}
|
|
|
|
- name: Build Client
|
|
working-directory: ./tools
|
|
run: npx gulp buildClient
|
|
env:
|
|
CFCORE_API_TOKEN: ${{ secrets.CFCORE_API_TOKEN }}
|
|
CHANGELOG_BRANCH: ${{ inputs.changelog_branch }}
|
|
CHANGELOG_URL: ${{ inputs.changelog_url }}
|
|
CHANGELOG_CF_URL: ${{ inputs.changelog_cf_url }}
|
|
COMPARE_TAG: ${{ inputs.compare_tag }}
|
|
|
|
- name: Upload Client Zip
|
|
uses: actions/upload-artifact@v3
|
|
if: ${{ inputs.separate_upload }}
|
|
with:
|
|
name: ${{ needs.makeNames.outputs.client }}
|
|
path: ./build/client/**/*
|
|
if-no-files-found: error
|
|
|
|
buildServer:
|
|
name: Build Pack Server (${{ inputs.tag }})
|
|
runs-on: ubuntu-latest
|
|
if: ${{ inputs.separate_upload }}
|
|
needs: makeNames
|
|
env:
|
|
GITHUB_TAG: ${{ inputs.tag }}
|
|
RELEASE_TYPE: ${{ inputs.release_type }}
|
|
GITHUB_HEAD_REF: ${{ inputs.head_ref }}
|
|
TRUE_SHA: ${{ inputs.true_sha }}
|
|
steps:
|
|
- name: Checkout Ref
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
ref: ${{ inputs.tag }}
|
|
|
|
- name: Restore Cached Files
|
|
uses: actions/cache@v3
|
|
id: cache
|
|
with:
|
|
path: |
|
|
~/.npm
|
|
./.cache
|
|
./tools/node_modules
|
|
key: ${{ runner.os }}-bunny-${{ hashFiles('**/.cache', '**/package-lock.json', '**/manifest.json') }}
|
|
restore-keys: ${{ runner.os }}-bunny-
|
|
|
|
- name: Setup NodeJS v16
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: "16"
|
|
check-latest: true
|
|
|
|
- name: Setup NPM Packages
|
|
working-directory: ./tools
|
|
run: npm ci
|
|
|
|
- name: Check Environmental Variables
|
|
working-directory: ./tools
|
|
run: npx gulp check
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
CURSEFORGE_PROJECT_ID: ${{ secrets.CURSEFORGE_PROJECT_ID }}
|
|
CURSEFORGE_API_TOKEN: ${{ secrets.CURSEFORGE_API_TOKEN }}
|
|
CFCORE_API_TOKEN: ${{ secrets.CFCORE_API_TOKEN }}
|
|
|
|
- name: Build Server
|
|
working-directory: ./tools
|
|
run: npx gulp buildServer
|
|
env:
|
|
CFCORE_API_TOKEN: ${{ secrets.CFCORE_API_TOKEN }}
|
|
CHANGELOG_BRANCH: ${{ inputs.changelog_branch }}
|
|
CHANGELOG_URL: ${{ inputs.changelog_url }}
|
|
CHANGELOG_CF_URL: ${{ inputs.changelog_cf_url }}
|
|
COMPARE_TAG: ${{ inputs.compare_tag }}
|
|
|
|
- name: Upload Server Zip
|
|
uses: actions/upload-artifact@v3
|
|
if: ${{ inputs.separate_upload }}
|
|
with:
|
|
name: ${{ needs.makeNames.outputs.server }}
|
|
path: ./build/server/**/*
|
|
if-no-files-found: error
|
|
|
|
buildMMC:
|
|
name: Build Pack MMC (${{ inputs.tag }})
|
|
runs-on: ubuntu-latest
|
|
if: ${{ inputs.separate_upload }}
|
|
needs: makeNames
|
|
env:
|
|
GITHUB_TAG: ${{ inputs.tag }}
|
|
RELEASE_TYPE: ${{ inputs.release_type }}
|
|
GITHUB_HEAD_REF: ${{ inputs.head_ref }}
|
|
TRUE_SHA: ${{ inputs.true_sha }}
|
|
steps:
|
|
- name: Checkout Ref
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
ref: ${{ inputs.tag }}
|
|
|
|
- name: Restore Cached Files
|
|
uses: actions/cache@v3
|
|
id: cache
|
|
with:
|
|
path: |
|
|
~/.npm
|
|
./.cache
|
|
./tools/node_modules
|
|
key: ${{ runner.os }}-bunny-${{ hashFiles('**/.cache', '**/package-lock.json', '**/manifest.json') }}
|
|
restore-keys: ${{ runner.os }}-bunny-
|
|
|
|
- name: Setup NodeJS v16
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: "16"
|
|
check-latest: true
|
|
|
|
- name: Setup NPM Packages
|
|
working-directory: ./tools
|
|
run: npm ci
|
|
|
|
- name: Check Environmental Variables
|
|
working-directory: ./tools
|
|
run: npx gulp check
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
CURSEFORGE_PROJECT_ID: ${{ secrets.CURSEFORGE_PROJECT_ID }}
|
|
CURSEFORGE_API_TOKEN: ${{ secrets.CURSEFORGE_API_TOKEN }}
|
|
CFCORE_API_TOKEN: ${{ secrets.CFCORE_API_TOKEN }}
|
|
|
|
- name: Build MMC
|
|
working-directory: ./tools
|
|
run: npx gulp buildMMC
|
|
env:
|
|
CFCORE_API_TOKEN: ${{ secrets.CFCORE_API_TOKEN }}
|
|
CHANGELOG_BRANCH: ${{ inputs.changelog_branch }}
|
|
CHANGELOG_URL: ${{ inputs.changelog_url }}
|
|
CHANGELOG_CF_URL: ${{ inputs.changelog_cf_url }}
|
|
COMPARE_TAG: ${{ inputs.compare_tag }}
|
|
|
|
- name: Upload MMC Zip
|
|
uses: actions/upload-artifact@v3
|
|
if: ${{ inputs.separate_upload }}
|
|
with:
|
|
name: ${{ needs.makeNames.outputs.mmc }}
|
|
path: ./build/mmc/**/*
|
|
if-no-files-found: error
|
|
|
|
buildLang:
|
|
name: Build Pack Lang and Changelogs (${{ inputs.tag }})
|
|
runs-on: ubuntu-latest
|
|
if: ${{ inputs.separate_upload }}
|
|
needs: makeNames
|
|
env:
|
|
GITHUB_TAG: ${{ inputs.tag }}
|
|
RELEASE_TYPE: ${{ inputs.release_type }}
|
|
GITHUB_HEAD_REF: ${{ inputs.head_ref }}
|
|
TRUE_SHA: ${{ inputs.true_sha }}
|
|
steps:
|
|
- name: Checkout Ref
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
ref: ${{ inputs.tag }}
|
|
|
|
- name: Restore Cached Files
|
|
uses: actions/cache@v3
|
|
id: cache
|
|
with:
|
|
path: |
|
|
~/.npm
|
|
./.cache
|
|
./tools/node_modules
|
|
key: ${{ runner.os }}-bunny-${{ hashFiles('**/.cache', '**/package-lock.json', '**/manifest.json') }}
|
|
restore-keys: ${{ runner.os }}-bunny-
|
|
|
|
- name: Setup NodeJS v16
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: "16"
|
|
check-latest: true
|
|
|
|
- name: Setup NPM Packages
|
|
working-directory: ./tools
|
|
run: npm ci
|
|
|
|
- name: Check Environmental Variables
|
|
working-directory: ./tools
|
|
run: npx gulp check
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
CURSEFORGE_PROJECT_ID: ${{ secrets.CURSEFORGE_PROJECT_ID }}
|
|
CURSEFORGE_API_TOKEN: ${{ secrets.CURSEFORGE_API_TOKEN }}
|
|
CFCORE_API_TOKEN: ${{ secrets.CFCORE_API_TOKEN }}
|
|
|
|
- name: Build Lang and Changelogs
|
|
working-directory: ./tools
|
|
run: npx gulp buildLang
|
|
env:
|
|
CFCORE_API_TOKEN: ${{ secrets.CFCORE_API_TOKEN }}
|
|
CHANGELOG_BRANCH: ${{ inputs.changelog_branch }}
|
|
CHANGELOG_URL: ${{ inputs.changelog_url }}
|
|
CHANGELOG_CF_URL: ${{ inputs.changelog_cf_url }}
|
|
COMPARE_TAG: ${{ inputs.compare_tag }}
|
|
|
|
- name: Upload Lang Zip
|
|
uses: actions/upload-artifact@v3
|
|
if: ${{ inputs.separate_upload }}
|
|
with:
|
|
name: ${{ needs.makeNames.outputs.lang }}
|
|
path: ./build/lang/**/*
|
|
if-no-files-found: error
|
|
|
|
- name: Upload Changelogs
|
|
uses: actions/upload-artifact@v3
|
|
if: ${{ inputs.separate_upload }}
|
|
with:
|
|
name: Changelogs
|
|
path: ./build/*.md
|
|
if-no-files-found: error
|