mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
adapt CI workflows to the monorepo layout
gamedir and gamedir-languages now live in this repository, so the build no longer clones them separately or pins their commits in versions.env: one commit SHA identifies everything. The compile job sparse-checks-out the source only, and the assemble job the game data only, both with blob:none so neither downloads the other half. Dist names drop the G....L.... gamedir suffixes since GAME_VERSION now covers the data too.
This commit is contained in:
+13
-52
@@ -18,33 +18,13 @@ jobs:
|
|||||||
filter: 'tree:0'
|
filter: 'tree:0'
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Clone gamedir metadata
|
|
||||||
run: |
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
GAMEDIR_REPOSITORY=1dot13/gamedir
|
|
||||||
GAMEDIR_LANGUAGES_REPOSITORY=1dot13/gamedir-languages
|
|
||||||
|
|
||||||
# filter tree is what makes this fast
|
|
||||||
git clone --config transfer.fsckobjects=false --no-checkout --filter=tree:0 \
|
|
||||||
https://github.com/$GAMEDIR_REPOSITORY \
|
|
||||||
gamedir
|
|
||||||
|
|
||||||
git clone --config transfer.fsckobjects=false --no-checkout --filter=tree:0 \
|
|
||||||
https://github.com/$GAMEDIR_LANGUAGES_REPOSITORY \
|
|
||||||
gamedir-languages
|
|
||||||
|
|
||||||
mkdir dist/
|
|
||||||
echo -n "
|
|
||||||
GAMEDIR_REPOSITORY=$GAMEDIR_REPOSITORY
|
|
||||||
GAMEDIR_LANGUAGES_REPOSITORY=$GAMEDIR_LANGUAGES_REPOSITORY
|
|
||||||
" > dist/versions.env
|
|
||||||
|
|
||||||
- name: Generate source version information
|
- name: Generate source version information
|
||||||
working-directory: source
|
working-directory: source
|
||||||
run: |
|
run: |
|
||||||
set -eux
|
set -eux
|
||||||
|
|
||||||
|
mkdir ../dist/
|
||||||
|
|
||||||
SOURCE_COMMIT_DATETIME=$(TZ=UTC0 git log -1 --date=iso-strict-local --format=%cd $GITHUB_SHA)
|
SOURCE_COMMIT_DATETIME=$(TZ=UTC0 git log -1 --date=iso-strict-local --format=%cd $GITHUB_SHA)
|
||||||
SOURCE_COMMIT_DATE=$(TZ=UTC0 git log -1 --date=short-local --format=%cd $GITHUB_SHA)
|
SOURCE_COMMIT_DATE=$(TZ=UTC0 git log -1 --date=short-local --format=%cd $GITHUB_SHA)
|
||||||
|
|
||||||
@@ -91,35 +71,7 @@ jobs:
|
|||||||
GAME_VERSION=$GAME_VERSION
|
GAME_VERSION=$GAME_VERSION
|
||||||
GAME_BUILD_INFORMATION=$GAME_BUILD_INFORMATION
|
GAME_BUILD_INFORMATION=$GAME_BUILD_INFORMATION
|
||||||
GIT_SHA=$GIT_SHA
|
GIT_SHA=$GIT_SHA
|
||||||
" >> ../dist/versions.env
|
" > ../dist/versions.env
|
||||||
|
|
||||||
# due to building everything in parallel, versions should be pinned at the start so everything builds based on the same versions
|
|
||||||
- name: Generate gamedir version information
|
|
||||||
working-directory: gamedir
|
|
||||||
run: |
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
GAMEDIR_COMMIT_SHA=$(git rev-parse HEAD)
|
|
||||||
GAMEDIR_COMMIT_DATETIME=$(TZ=UTC0 git log -1 --date=iso-strict-local --format=%cd $GAMEDIR_COMMIT_SHA)
|
|
||||||
|
|
||||||
echo -n "
|
|
||||||
GAMEDIR_COMMIT_SHA=$GAMEDIR_COMMIT_SHA
|
|
||||||
GAMEDIR_COMMIT_DATETIME=$GAMEDIR_COMMIT_DATETIME
|
|
||||||
" >> ../dist/versions.env
|
|
||||||
|
|
||||||
# due to building everything in parallel, versions should be pinned at the start so everything builds based on the same versions
|
|
||||||
- name: Generate gamedir-languages version information
|
|
||||||
working-directory: gamedir-languages
|
|
||||||
run: |
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
GAMEDIR_LANGUAGES_COMMIT_SHA=$(git rev-parse HEAD)
|
|
||||||
GAMEDIR_LANGUAGES_COMMIT_DATETIME=$(TZ=UTC0 git log -1 --date=iso-strict-local --format=%cd $GAMEDIR_LANGUAGES_COMMIT_SHA)
|
|
||||||
|
|
||||||
echo -n "
|
|
||||||
GAMEDIR_LANGUAGES_COMMIT_SHA=$GAMEDIR_LANGUAGES_COMMIT_SHA
|
|
||||||
GAMEDIR_LANGUAGES_COMMIT_DATETIME=$GAMEDIR_LANGUAGES_COMMIT_DATETIME
|
|
||||||
" >> ../dist/versions.env
|
|
||||||
|
|
||||||
- name: Show version information summary
|
- name: Show version information summary
|
||||||
run: |
|
run: |
|
||||||
@@ -145,8 +97,17 @@ jobs:
|
|||||||
SCCACHE_GHA_ENABLED: 'true'
|
SCCACHE_GHA_ENABLED: 'true'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
# the game data in gamedir/ and gamedir-languages/ is not needed to
|
||||||
|
# compile and would add gigabytes to the checkout
|
||||||
- name: Checkout source
|
- name: Checkout source
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@v7
|
||||||
|
with:
|
||||||
|
filter: 'blob:none'
|
||||||
|
sparse-checkout: |
|
||||||
|
/*
|
||||||
|
!gamedir/
|
||||||
|
!gamedir-languages/
|
||||||
|
sparse-checkout-cone-mode: false
|
||||||
|
|
||||||
- name: Download versions.env
|
- name: Download versions.env
|
||||||
uses: actions/download-artifact@v8
|
uses: actions/download-artifact@v8
|
||||||
|
|||||||
@@ -51,20 +51,15 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: cat artifacts/versions.env >> $GITHUB_ENV
|
run: cat artifacts/versions.env >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Checkout gamedir
|
# blob:none plus a sparse checkout fetches only the game data, not the
|
||||||
|
# engine source; both directories come from the same pinned commit
|
||||||
|
- name: Checkout gamedir and gamedir-languages
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@v7
|
||||||
with:
|
with:
|
||||||
repository: ${{ env.GAMEDIR_REPOSITORY }}
|
filter: 'blob:none'
|
||||||
ref: ${{ env.GAMEDIR_COMMIT_SHA }}
|
sparse-checkout: |
|
||||||
path: gamedir
|
gamedir
|
||||||
|
gamedir-languages
|
||||||
- name: Checkout gamedir-languages
|
|
||||||
if: matrix.language != 'English'
|
|
||||||
uses: actions/checkout@v7
|
|
||||||
with:
|
|
||||||
repository: ${{ env.GAMEDIR_LANGUAGES_REPOSITORY }}
|
|
||||||
ref: ${{ env.GAMEDIR_LANGUAGES_COMMIT_SHA }}
|
|
||||||
path: gamedir-languages
|
|
||||||
|
|
||||||
- name: Copy gamedir-languages files to gamedir
|
- name: Copy gamedir-languages files to gamedir
|
||||||
if: matrix.language != 'English'
|
if: matrix.language != 'English'
|
||||||
@@ -95,7 +90,7 @@ jobs:
|
|||||||
|
|
||||||
# "-" separates words, "_" combines words, see double-click behavior
|
# "-" separates words, "_" combines words, see double-click behavior
|
||||||
DIST_PREFIX='JA2_113'
|
DIST_PREFIX='JA2_113'
|
||||||
DIST_NAME="${DIST_PREFIX}-${GAME_VERSION}-G${GAMEDIR_COMMIT_SHA:0:4}L${GAMEDIR_LANGUAGES_COMMIT_SHA:0:4}-${{ matrix.language }}"
|
DIST_NAME="${DIST_PREFIX}-${GAME_VERSION}-${{ matrix.language }}"
|
||||||
echo "DIST_NAME=$DIST_NAME" >> $GITHUB_ENV
|
echo "DIST_NAME=$DIST_NAME" >> $GITHUB_ENV
|
||||||
|
|
||||||
echo "If you encounter problems during gameplay, please provide the following version information:
|
echo "If you encounter problems during gameplay, please provide the following version information:
|
||||||
@@ -106,12 +101,6 @@ jobs:
|
|||||||
Source Repository: $GITHUB_REPOSITORY
|
Source Repository: $GITHUB_REPOSITORY
|
||||||
Source Commit SHA: $GITHUB_SHA
|
Source Commit SHA: $GITHUB_SHA
|
||||||
Source Commit Date: $SOURCE_COMMIT_DATETIME
|
Source Commit Date: $SOURCE_COMMIT_DATETIME
|
||||||
Gamedir Repository: $GAMEDIR_REPOSITORY
|
|
||||||
Gamedir Commit SHA: $GAMEDIR_COMMIT_SHA
|
|
||||||
Gamedir Commit Date: $GAMEDIR_COMMIT_DATETIME
|
|
||||||
Gamedir Languages Repository: $GAMEDIR_LANGUAGES_REPOSITORY
|
|
||||||
Gamedir Languages Commit SHA: $GAMEDIR_LANGUAGES_COMMIT_SHA
|
|
||||||
Gamedir Languages Commit Date: $GAMEDIR_LANGUAGES_COMMIT_DATETIME
|
|
||||||
" > "gamedir/${DIST_PREFIX}-Version.txt"
|
" > "gamedir/${DIST_PREFIX}-Version.txt"
|
||||||
cat "gamedir/${DIST_PREFIX}-Version.txt"
|
cat "gamedir/${DIST_PREFIX}-Version.txt"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user