From 90b99c73fcd6371d312e4487575e79c840f9cabc Mon Sep 17 00:00:00 2001 From: FoxxoTrystan Date: Tue, 16 Jul 2024 23:22:37 +0200 Subject: [PATCH 01/16] CDN V2 --- .github/workflows/publish.yml | 45 ++++++------- .github/workflows/test-packaging.yml | 5 +- Tools/gen_build_info.py | 96 ---------------------------- Tools/publish_github_artifact.py | 56 ++++++++++++++++ 4 files changed, 77 insertions(+), 125 deletions(-) delete mode 100755 Tools/gen_build_info.py create mode 100644 Tools/publish_github_artifact.py diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 177e6a0fe6d..ae1287bc28a 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -41,41 +41,36 @@ jobs: - name: Package client run: dotnet run --project Content.Packaging client --no-wipe-release - - name: Update Build Info - run: Tools/gen_build_info.py - - - name: Shuffle files around - run: | - mkdir "release/${{ github.sha }}" - mv release/*.zip "release/${{ github.sha }}" - - - name: Upload files to centcomm - uses: appleboy/scp-action@master + - name: Upload build artifact + id: artifact-upload-step + uses: actions/upload-artifact@v4 with: - host: ${{ secrets.PUBLISH_HOST }} - username: ${{ secrets.PUBLISH_USER }} - key: ${{ secrets.PUBLISH_KEY }} - port: ${{ secrets.PUBLISH_PORT }} - source: "release/${{ github.sha }}" - target: "/var/www/builds.delta-v.org/delta-v/builds/" - strip_components: 1 + name: build + path: release/*.zip + compression-level: 0 + retention-days: 0 - - name: Update manifest JSON - uses: appleboy/ssh-action@master - with: - host: ${{ secrets.PUBLISH_HOST }} - username: ${{ secrets.PUBLISH_USER }} - key: ${{ secrets.PUBLISH_KEY }} - port: ${{ secrets.PUBLISH_PORT }} - script: /home/deltav/publish/push.ps1 ${{ github.sha }} + - name: Publish version + run: Tools/publish_github_artifact.py + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PUBLISH_TOKEN: ${{ secrets.PUBLISH_TOKEN }} + ARTIFACT_ID: ${{ steps.artifact-upload-step.outputs.artifact-id }} + GITHUB_REPOSITORY: ${{ vars.GITHUB_REPOSITORY }} - name: Publish changelog (Discord) run: Tools/actions_changelogs_since_last_run.py env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CHANGELOG_DIR: ${{ vars.CHANGELOG_DIR }} DISCORD_WEBHOOK_URL: ${{ secrets.CHANGELOG_DISCORD_WEBHOOK }} - name: Publish changelog (RSS) run: Tools/actions_changelog_rss.py env: CHANGELOG_RSS_KEY: ${{ secrets.CHANGELOG_RSS_KEY }} + + - uses: geekyeggo/delete-artifact@v5 + if: always() + with: + name: build diff --git a/.github/workflows/test-packaging.yml b/.github/workflows/test-packaging.yml index 27cf5d2d7b1..b780ce2cfed 100644 --- a/.github/workflows/test-packaging.yml +++ b/.github/workflows/test-packaging.yml @@ -29,7 +29,7 @@ on: jobs: build: name: Test Packaging - if: github.actor != 'PJBot' && github.event.pull_request.draft == false && github.actor != 'DeltaV-Bot' && github.actor != 'SimpleStation14' + if: github.actor != 'PJBot' && github.event.pull_request.draft == false && github.actor != 'DeltaV-Bot' runs-on: ubuntu-latest steps: @@ -65,9 +65,6 @@ jobs: - name: Package client run: dotnet run --project Content.Packaging client --no-wipe-release - - name: Update Build Info - run: Tools/gen_build_info.py - - name: Shuffle files around run: | mkdir "release/${{ github.sha }}" diff --git a/Tools/gen_build_info.py b/Tools/gen_build_info.py deleted file mode 100755 index 83717bebed1..00000000000 --- a/Tools/gen_build_info.py +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/env python3 - -# Generates build info and injects it into the server zip files. - -import codecs -import hashlib -import io -import json -import os -import subprocess -from zipfile import ZipFile, ZIP_DEFLATED - -FILE = "SS14.Client.zip" - -SERVER_FILES = [ - "SS14.Server_linux-x64.zip", - "SS14.Server_linux-arm64.zip", - "SS14.Server_win-x64.zip", - "SS14.Server_osx-x64.zip" -] - -VERSION = os.environ['GITHUB_SHA'] -FORK_ID = "floofstation" -BUILD_URL = f"https://builds.delta-v.org/{{FORK_ID}}/builds/{{FORK_VERSION}}/{FILE}" -MANIFEST_URL = f"https://cdn.delta-v.org/version/{{FORK_VERSION}}/manifest" -MANIFEST_DOWNLOAD_URL = f"https://cdn.delta-v.org/version/{{FORK_VERSION}}/download" - -def main() -> None: - client_file = os.path.join("release", FILE) - manifest = generate_build_json(client_file) - - for server in SERVER_FILES: - inject_manifest(os.path.join("release", server), manifest) - - -def inject_manifest(zip_path: str, manifest: str) -> None: - with ZipFile(zip_path, "a", compression=ZIP_DEFLATED) as z: - z.writestr("build.json", manifest) - - -def generate_build_json(file: str) -> str: - # Env variables set by Jenkins. - - hash = sha256_file(file) - engine_version = get_engine_version() - manifest_hash = generate_manifest_hash(file) - - return json.dumps({ - "download": BUILD_URL, - "hash": hash, - "version": VERSION, - "fork_id": FORK_ID, - "engine_version": engine_version, - "manifest_url": MANIFEST_URL, - "manifest_download_url": MANIFEST_DOWNLOAD_URL, - "manifest_hash": manifest_hash - }) - -def generate_manifest_hash(file: str) -> str: - zip = ZipFile(file) - infos = zip.infolist() - infos.sort(key=lambda i: i.filename) - - bytesIO = io.BytesIO() - writer = codecs.getwriter("UTF-8")(bytesIO) - writer.write("Robust Content Manifest 1\n") - - for info in infos: - if info.filename[-1] == "/": - continue - - bytes = zip.read(info) - hash = hashlib.blake2b(bytes, digest_size=32).hexdigest().upper() - writer.write(f"{hash} {info.filename}\n") - - manifestHash = hashlib.blake2b(bytesIO.getbuffer(), digest_size=32) - - return manifestHash.hexdigest().upper() - -def get_engine_version() -> str: - proc = subprocess.run(["git", "describe","--tags", "--abbrev=0"], stdout=subprocess.PIPE, cwd="RobustToolbox", check=True, encoding="UTF-8") - tag = proc.stdout.strip() - assert tag.startswith("v") - return tag[1:] # Cut off v prefix. - - -def sha256_file(path: str) -> str: - with open(path, "rb") as f: - h = hashlib.sha256() - for b in iter(lambda: f.read(4096), b""): - h.update(b) - - return h.hexdigest() - -if __name__ == '__main__': - main() diff --git a/Tools/publish_github_artifact.py b/Tools/publish_github_artifact.py new file mode 100644 index 00000000000..145dc69b228 --- /dev/null +++ b/Tools/publish_github_artifact.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 + +import requests +import os +import subprocess + +GITHUB_TOKEN = os.environ["GITHUB_TOKEN"] +PUBLISH_TOKEN = os.environ["PUBLISH_TOKEN"] +ARTIFACT_ID = os.environ["ARTIFACT_ID"] +GITHUB_REPOSITORY = os.environ["GITHUB_REPOSITORY"] +VERSION = os.environ['GITHUB_SHA'] + +# +# CONFIGURATION PARAMETERS +# Forks should change these to publish to their own infrastructure. +# +ROBUST_CDN_URL = "https://cdn.delta-v.org/" +FORK_ID = "delta-v" + +def main(): + print("Fetching artifact URL from API...") + artifact_url = get_artifact_url() + print(f"Artifact URL is {artifact_url}, publishing to Robust.Cdn") + + data = { + "version": VERSION, + "engineVersion": get_engine_version(), + "archive": artifact_url + } + headers = { + "Authorization": f"Bearer {PUBLISH_TOKEN}", + "Content-Type": "application/json" + } + resp = requests.post(f"{ROBUST_CDN_URL}fork/{FORK_ID}/publish", json=data, headers=headers) + resp.raise_for_status() + print("Publish succeeded!") + +def get_artifact_url() -> str: + headers = { + "Authorization": f"Bearer {GITHUB_TOKEN}", + "X-GitHub-Api-Version": "2022-11-28" + } + resp = requests.get(f"https://api.github.com/repos/{GITHUB_REPOSITORY}/actions/artifacts/{ARTIFACT_ID}/zip", allow_redirects=False, headers=headers) + resp.raise_for_status() + + return resp.headers["Location"] + +def get_engine_version() -> str: + proc = subprocess.run(["git", "describe","--tags", "--abbrev=0"], stdout=subprocess.PIPE, cwd="RobustToolbox", check=True, encoding="UTF-8") + tag = proc.stdout.strip() + assert tag.startswith("v") + return tag[1:] # Cut off v prefix. + + +if __name__ == '__main__': + main() From 805f196adfc502e0b4513986a1e742b44a985bba Mon Sep 17 00:00:00 2001 From: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Date: Tue, 16 Jul 2024 23:26:19 +0200 Subject: [PATCH 02/16] Update test-packaging.yml --- .github/workflows/test-packaging.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-packaging.yml b/.github/workflows/test-packaging.yml index b780ce2cfed..a8ef52ef526 100644 --- a/.github/workflows/test-packaging.yml +++ b/.github/workflows/test-packaging.yml @@ -29,7 +29,7 @@ on: jobs: build: name: Test Packaging - if: github.actor != 'PJBot' && github.event.pull_request.draft == false && github.actor != 'DeltaV-Bot' + if: github.actor != 'PJBot' && github.event.pull_request.draft == false && github.actor != 'DeltaV-Bot' && github.actor != 'SimpleStation14' runs-on: ubuntu-latest steps: From e2ce1b9811ec55a1b8e13e996c4b092d0c778579 Mon Sep 17 00:00:00 2001 From: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Date: Fri, 19 Jul 2024 16:07:58 +0200 Subject: [PATCH 03/16] Update publish_github_artifact.py --- Tools/publish_github_artifact.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tools/publish_github_artifact.py b/Tools/publish_github_artifact.py index 145dc69b228..6ce5c1540c9 100644 --- a/Tools/publish_github_artifact.py +++ b/Tools/publish_github_artifact.py @@ -14,8 +14,8 @@ # CONFIGURATION PARAMETERS # Forks should change these to publish to their own infrastructure. # -ROBUST_CDN_URL = "https://cdn.delta-v.org/" -FORK_ID = "delta-v" +ROBUST_CDN_URL = "https://floofstation.com:27690" +FORK_ID = "3b872cff-31fa-4c33-8b51-1b0de7f9b439" def main(): print("Fetching artifact URL from API...") From 71afa4af2a99a928658c1daace26f8c8708ca8bc Mon Sep 17 00:00:00 2001 From: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Date: Fri, 19 Jul 2024 21:55:37 +0200 Subject: [PATCH 04/16] Update publish_github_artifact.py --- Tools/publish_github_artifact.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tools/publish_github_artifact.py b/Tools/publish_github_artifact.py index 6ce5c1540c9..bc1555cf9fe 100644 --- a/Tools/publish_github_artifact.py +++ b/Tools/publish_github_artifact.py @@ -14,7 +14,7 @@ # CONFIGURATION PARAMETERS # Forks should change these to publish to their own infrastructure. # -ROBUST_CDN_URL = "https://floofstation.com:27690" +ROBUST_CDN_URL = "https://floofstation.com:27690/" FORK_ID = "3b872cff-31fa-4c33-8b51-1b0de7f9b439" def main(): From 28d8257d369e34f31ddf4057bfa19a5a07030465 Mon Sep 17 00:00:00 2001 From: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Date: Fri, 19 Jul 2024 22:28:28 +0200 Subject: [PATCH 05/16] Update publish_github_artifact.py --- Tools/publish_github_artifact.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tools/publish_github_artifact.py b/Tools/publish_github_artifact.py index bc1555cf9fe..2740ef4f8f4 100644 --- a/Tools/publish_github_artifact.py +++ b/Tools/publish_github_artifact.py @@ -14,8 +14,8 @@ # CONFIGURATION PARAMETERS # Forks should change these to publish to their own infrastructure. # -ROBUST_CDN_URL = "https://floofstation.com:27690/" -FORK_ID = "3b872cff-31fa-4c33-8b51-1b0de7f9b439" +ROBUST_CDN_URL = "http://floofstation.com:27690/" +FORK_ID = "floof" def main(): print("Fetching artifact URL from API...") From 8b071cb1e85d01d98845075b456d553e72e73d8f Mon Sep 17 00:00:00 2001 From: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Date: Fri, 19 Jul 2024 22:33:18 +0200 Subject: [PATCH 06/16] Update publish_github_artifact.py --- Tools/publish_github_artifact.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tools/publish_github_artifact.py b/Tools/publish_github_artifact.py index 2740ef4f8f4..867c40f0949 100644 --- a/Tools/publish_github_artifact.py +++ b/Tools/publish_github_artifact.py @@ -15,7 +15,7 @@ # Forks should change these to publish to their own infrastructure. # ROBUST_CDN_URL = "http://floofstation.com:27690/" -FORK_ID = "floof" +FORK_ID = "floofstation-main" def main(): print("Fetching artifact URL from API...") From a7df1b3b2719d2aa87a950af37a539ceb303f305 Mon Sep 17 00:00:00 2001 From: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Date: Fri, 19 Jul 2024 23:01:59 +0200 Subject: [PATCH 07/16] Update publish.yml --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index ae1287bc28a..0cfb531c6be 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -56,7 +56,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} PUBLISH_TOKEN: ${{ secrets.PUBLISH_TOKEN }} ARTIFACT_ID: ${{ steps.artifact-upload-step.outputs.artifact-id }} - GITHUB_REPOSITORY: ${{ vars.GITHUB_REPOSITORY }} + GITHUB_REPOSITORY: master #${{ vars.GITHUB_REPOSITORY }} - name: Publish changelog (Discord) run: Tools/actions_changelogs_since_last_run.py From db72839ca30f2c9e1c23ab6545024d5e74a958a3 Mon Sep 17 00:00:00 2001 From: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Date: Fri, 19 Jul 2024 23:08:20 +0200 Subject: [PATCH 08/16] Update publish.yml --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 0cfb531c6be..d272af49834 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -56,7 +56,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} PUBLISH_TOKEN: ${{ secrets.PUBLISH_TOKEN }} ARTIFACT_ID: ${{ steps.artifact-upload-step.outputs.artifact-id }} - GITHUB_REPOSITORY: master #${{ vars.GITHUB_REPOSITORY }} + GITHUB_REPOSITORY: Fansana/floofstation1 #${{ vars.GITHUB_REPOSITORY }} - name: Publish changelog (Discord) run: Tools/actions_changelogs_since_last_run.py From c09044339c2c770fa8bb1d73e39bd42cb75c349d Mon Sep 17 00:00:00 2001 From: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Date: Fri, 19 Jul 2024 23:20:04 +0200 Subject: [PATCH 09/16] Update publish.yml --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index d272af49834..ae1287bc28a 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -56,7 +56,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} PUBLISH_TOKEN: ${{ secrets.PUBLISH_TOKEN }} ARTIFACT_ID: ${{ steps.artifact-upload-step.outputs.artifact-id }} - GITHUB_REPOSITORY: Fansana/floofstation1 #${{ vars.GITHUB_REPOSITORY }} + GITHUB_REPOSITORY: ${{ vars.GITHUB_REPOSITORY }} - name: Publish changelog (Discord) run: Tools/actions_changelogs_since_last_run.py From 52893c030d94bb7e3cbb695aa4a9bbc490511013 Mon Sep 17 00:00:00 2001 From: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Date: Fri, 19 Jul 2024 23:23:01 +0200 Subject: [PATCH 10/16] Update publish_github_artifact.py --- Tools/publish_github_artifact.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tools/publish_github_artifact.py b/Tools/publish_github_artifact.py index 867c40f0949..b488ccdf2ec 100644 --- a/Tools/publish_github_artifact.py +++ b/Tools/publish_github_artifact.py @@ -14,8 +14,8 @@ # CONFIGURATION PARAMETERS # Forks should change these to publish to their own infrastructure. # -ROBUST_CDN_URL = "http://floofstation.com:27690/" -FORK_ID = "floofstation-main" +ROBUST_CDN_URL = "https://wizards.cdn.spacestation14.com/" +FORK_ID = "wizards" def main(): print("Fetching artifact URL from API...") From 21eeace4410fc69e7962882aad746136f60c346e Mon Sep 17 00:00:00 2001 From: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Date: Fri, 19 Jul 2024 23:23:38 +0200 Subject: [PATCH 11/16] Update publish_github_artifact.py --- Tools/publish_github_artifact.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tools/publish_github_artifact.py b/Tools/publish_github_artifact.py index b488ccdf2ec..867c40f0949 100644 --- a/Tools/publish_github_artifact.py +++ b/Tools/publish_github_artifact.py @@ -14,8 +14,8 @@ # CONFIGURATION PARAMETERS # Forks should change these to publish to their own infrastructure. # -ROBUST_CDN_URL = "https://wizards.cdn.spacestation14.com/" -FORK_ID = "wizards" +ROBUST_CDN_URL = "http://floofstation.com:27690/" +FORK_ID = "floofstation-main" def main(): print("Fetching artifact URL from API...") From bfc66f515be140166626d3dd69492dbcbbf8bfc0 Mon Sep 17 00:00:00 2001 From: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Date: Fri, 19 Jul 2024 23:23:56 +0200 Subject: [PATCH 12/16] Update publish.yml --- .github/workflows/publish.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index ae1287bc28a..de3d4f2265f 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -56,7 +56,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} PUBLISH_TOKEN: ${{ secrets.PUBLISH_TOKEN }} ARTIFACT_ID: ${{ steps.artifact-upload-step.outputs.artifact-id }} - GITHUB_REPOSITORY: ${{ vars.GITHUB_REPOSITORY }} - name: Publish changelog (Discord) run: Tools/actions_changelogs_since_last_run.py From 7ae4d33115f191fc35f38a9ed76d932763c2a740 Mon Sep 17 00:00:00 2001 From: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Date: Fri, 19 Jul 2024 23:25:32 +0200 Subject: [PATCH 13/16] Update SpaceStation14.sln --- SpaceStation14.sln | 1 - 1 file changed, 1 deletion(-) diff --git a/SpaceStation14.sln b/SpaceStation14.sln index e0cb455a6db..bcd013b5981 100644 --- a/SpaceStation14.sln +++ b/SpaceStation14.sln @@ -62,7 +62,6 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{806ED41A-411B-4B3B-BEB6-DEC6DCA4C205}" ProjectSection(SolutionItems) = preProject Tools\generate_hashes.ps1 = Tools\generate_hashes.ps1 - Tools\gen_build_info.py = Tools\gen_build_info.py EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Robust.Shared.Scripting", "RobustToolbox\Robust.Shared.Scripting\Robust.Shared.Scripting.csproj", "{41B450C0-A361-4CD7-8121-7072B8995CFC}" From 9c297f443602fa77545ad869538e03d7842ed8d3 Mon Sep 17 00:00:00 2001 From: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Date: Fri, 19 Jul 2024 23:34:30 +0200 Subject: [PATCH 14/16] Update publish.yml --- .github/workflows/publish.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index de3d4f2265f..ae1287bc28a 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -56,6 +56,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} PUBLISH_TOKEN: ${{ secrets.PUBLISH_TOKEN }} ARTIFACT_ID: ${{ steps.artifact-upload-step.outputs.artifact-id }} + GITHUB_REPOSITORY: ${{ vars.GITHUB_REPOSITORY }} - name: Publish changelog (Discord) run: Tools/actions_changelogs_since_last_run.py From e5503bc9c46b105cd936c34685efa4c66c8bfb87 Mon Sep 17 00:00:00 2001 From: FoxxoTrystan Date: Fri, 19 Jul 2024 23:46:25 +0200 Subject: [PATCH 15/16] fix --- Tools/publish_github_artifact.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 Tools/publish_github_artifact.py diff --git a/Tools/publish_github_artifact.py b/Tools/publish_github_artifact.py old mode 100644 new mode 100755 From 4f6f763e58e36fea03a52a3d7dac3f0cda2efcdc Mon Sep 17 00:00:00 2001 From: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Date: Sat, 20 Jul 2024 00:02:41 +0200 Subject: [PATCH 16/16] Update Floof.yml --- Resources/Changelog/Floof.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Floof.yml b/Resources/Changelog/Floof.yml index ea12b29f03c..ca34688ce30 100644 --- a/Resources/Changelog/Floof.yml +++ b/Resources/Changelog/Floof.yml @@ -129,3 +129,9 @@ Entries: message: Removed Mass-Mind-Swap Event. id: 18 time: '2024-07-19T13:45:06.0000000+00:00' +- author: FoxxoTrystan/Fansana + changes: + - type: Add + message: Set up the Floof CDN. + id: 19 + time: '2024-07-19T13:45:06.0000000+00:00'