Skip to content

Nightly modpack build #117

Nightly modpack build

Nightly modpack build #117

name: Nightly modpack build
on:
workflow_dispatch:
schedule:
- cron: '30 2 * * *' # 2:30am UTC every day
jobs:
nightly-modpack-build:
runs-on: ubuntu-latest
steps:
# check-out repo and set-up python
- name: Check out repository
uses: actions/checkout@v3
with:
token: ${{ secrets.NIGHTLY_GITHUB_TOKEN }}
fetch-depth: 1
ref: dev
- name: Set up python
id: setup-python
uses: actions/setup-python@v4
with:
python-version: 3.10.5
- name: Setup private repo access token
shell: bash
run: echo "${{ secrets.NIGHTLY_GITHUB_TOKEN }}" > ~/.github_personal_token
# install & configure poetry
- name: Install Poetry
uses: snok/install-poetry@v1
with:
virtualenvs-create: true
virtualenvs-in-project: true
installer-parallel: true
# load cached venv if cache exists
- name: Load cached venv
id: cached-poetry-dependencies
uses: actions/cache@v3
with:
path: .venv
key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}
# install dependencies if cache does not exist
- name: Install dependencies
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
run: poetry install --no-interaction --no-root
# install your root project, if required
- name: Install library
run: poetry install --no-interaction
- name: Get current date
id: date
shell: bash
run: |
echo "today=$(date --iso-8601)+${{ github.run_number }}" >> "$GITHUB_OUTPUT"
echo "cachedate=$(date '+%G-w%V')" >> "$GITHUB_OUTPUT"
- name: Load cached mod zips
id: load_cache
uses: actions/cache/restore@v3
with:
path: cache
key: daxxl-${{ runner.os }}-${{ steps.date.outputs.cachedate }}
restore-keys: |
daxxl-${{ runner.os }}-
- name: Build modpack archives
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.NIGHTLY_GITHUB_TOKEN }}
run: |
poetry run python -m gtnh.cli.generate_nightly --update-available
poetry run python -m gtnh.cli.assemble_nightly
- name: Save cached mod zips
uses: actions/cache/save@v3
if: success() || failure()
with:
path: cache
key: daxxl-${{ runner.os }}-${{ steps.date.outputs.cachedate }}
# Upload modpack
- name: Upload manifest
uses: actions/upload-artifact@v3
# Upload all archives even if one of the zips fails to upload
if: success() || failure()
with:
name: gtnh-nightly-${{ steps.date.outputs.today }}-manifest.json
path: releases/manifests/nightly.json
- name: Upload manifest job summary
shell: bash
if: success() || failure()
continue-on-error: true
run: |
echo "# GTNH Nightly build ${{ steps.date.outputs.today }}" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo "| Mod | Version | Side |" >> "$GITHUB_STEP_SUMMARY"
echo "| --- | ------- | ---- |" >> "$GITHUB_STEP_SUMMARY"
jq -r '.github_mods | keys[] as $k | ["", $k, .[$k].version, .[$k].side, ""] | join(" | ") | ltrimstr(" ")' releases/manifests/nightly.json >> "$GITHUB_STEP_SUMMARY"
jq -r '.external_mods | keys[] as $k | ["", $k, .[$k].version, .[$k].side, ""] | join(" | ") | ltrimstr(" ")' releases/manifests/nightly.json >> "$GITHUB_STEP_SUMMARY"
- name: Relocate built zips
shell: bash
run: |
mv releases/zip/GT_New_Horizons_nightly_Server.zip "GTNH-${{ steps.date.outputs.today }}-server.zip"
mv releases/zip/GT_New_Horizons_nightly_Server_Java*.zip "GTNH-${{ steps.date.outputs.today }}-server-new-java.zip"
mv releases/multi_poly/GT_New_Horizons_nightly_\(MultiMC\).zip "GTNH-${{ steps.date.outputs.today }}-mmcprism-java8.zip"
mv releases/multi_poly/GT_New_Horizons_nightly_\(PrismLauncher\)_*.zip "GTNH-${{ steps.date.outputs.today }}-mmcprism-new-java.zip"
- name: Upload server zip
uses: actions/upload-artifact@v3
# Upload all archives even if one of the zips fails to upload
if: success() || failure()
with:
name: gtnh-nightly-${{ steps.date.outputs.today }}-server
path: GTNH-${{ steps.date.outputs.today }}-server.zip
- name: Upload modern java server zip
uses: actions/upload-artifact@v3
# Upload all archives even if one of the zips fails to upload
if: success() || failure()
with:
name: gtnh-nightly-${{ steps.date.outputs.today }}-server-new-java
path: GTNH-${{ steps.date.outputs.today }}-server-new-java.zip
- name: Upload MMC zip
uses: actions/upload-artifact@v3
# Upload all archives even if one of the zips fails to upload
if: success() || failure()
with:
name: gtnh-nightly-${{ steps.date.outputs.today }}-mmcprism-java8
path: GTNH-${{ steps.date.outputs.today }}-mmcprism-java8.zip
- name: Upload modern java Prism zip
uses: actions/upload-artifact@v3
# Upload all archives even if one of the zips fails to upload
if: success() || failure()
with:
name: gtnh-nightly-${{ steps.date.outputs.today }}-mmcprism-new-java
path: GTNH-${{ steps.date.outputs.today }}-mmcprism-new-java.zip