@@ -2,12 +2,7 @@ name: "Update.Unturned.Redist"
22
33on :
44 schedule :
5- - cron : " */9 * * * *" # Client
6- - cron : " */16 * * * *" # Server
7- - cron : " */12 * * * *" # Server Preview Old
8- - cron : " */6 * * * *" # Client Preview Old
9- - cron : " */8 * * * *" # Server Preview
10- - cron : " */7 * * * *" # Client Preview
5+ - cron : " */15 * * * *"
116 workflow_dispatch :
127 inputs :
138 variant :
@@ -28,100 +23,38 @@ permissions:
2823 packages : write
2924
3025concurrency :
31- group : unturned-redist-update
26+ group : unturned-redist-update-${{ github.ref }}
3227 cancel-in-progress : false
3328
3429jobs :
35- determine-variant :
36- name : " Determine Variant"
37- runs-on : ubuntu-latest
38- outputs :
39- variants : ${{ steps.set-variants.outputs.variants }}
40- steps :
41- - name : Set variants based on trigger
42- id : set-variants
43- run : |
44- if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
45- case "${{ github.event.inputs.variant }}" in
46- "client")
47- echo 'variants=["client"]' >> $GITHUB_OUTPUT
48- ;;
49- "server")
50- echo 'variants=["server"]' >> $GITHUB_OUTPUT
51- ;;
52- "server-preview")
53- echo 'variants=["server-preview"]' >> $GITHUB_OUTPUT
54- ;;
55- "client-preview")
56- echo 'variants=["client-preview"]' >> $GITHUB_OUTPUT
57- ;;
58- "server-preview-old")
59- echo 'variants=["server-preview-old"]' >> $GITHUB_OUTPUT
60- ;;
61- "client-preview-old")
62- echo 'variants=["client-preview-old"]' >> $GITHUB_OUTPUT
63- ;;
64- esac
65- else
66- # For scheduled runs, determine which variant based on current time
67- current_minute=$(date +%M)
68- remainder_9=$((current_minute % 9))
69- remainder_16=$((current_minute % 16))
70- remainder_12=$((current_minute % 12))
71- remainder_6=$((current_minute % 6))
72- remainder_8=$((current_minute % 8))
73- remainder_7=$((current_minute % 7))
74-
75- variants=()
76- if [ $remainder_9 -eq 0 ]; then
77- variants+=("client")
78- fi
79- if [ $remainder_16 -eq 0 ]; then
80- variants+=("server")
81- fi
82- if [ $remainder_12 -eq 0 ]; then
83- variants+=("server-preview-old")
84- fi
85- if [ $remainder_6 -eq 0 ]; then
86- variants+=("client-preview-old")
87- fi
88- if [ $remainder_8 -eq 0 ]; then
89- variants+=("server-preview")
90- fi
91- if [ $remainder_7 -eq 0 ]; then
92- variants+=("client-preview")
93- fi
94-
95- if [ ${#variants[@]} -eq 0 ]; then
96- echo "No variants to run"
97- echo 'variants=["none"]' >> $GITHUB_OUTPUT
98- else
99- # Convert array to JSON format
100- json_variants=$(printf '%s\n' "${variants[@]}" | jq -R . | jq -cs .)
101- echo "variants=$json_variants" >> "$GITHUB_OUTPUT"
102- fi
103- fi
104-
10530 update_redist :
10631 name : " Update ${{ matrix.variant }}"
10732 runs-on : ubuntu-latest
108- needs : determine-variant
109- if : ${{ needs.determine-variant.outputs.variants != '["none"]' }}
11033 strategy :
11134 matrix :
112- variant : ${{ fromJson(needs.determine-variant.outputs.variants) }}
35+ variant :
36+ - client
37+ - server
38+ - server-preview
39+ - client-preview
40+ - server-preview-old
41+ - client-preview-old
42+ # Run all variants in parallel without failing entire workflow
43+ fail-fast : false
11344
11445 env :
11546 APP_ID : ${{ (matrix.variant == 'client' || matrix.variant == 'client-preview' || matrix.variant == 'client-preview-old') && '304930' || '1110390' }}
116- REDIST_DIR : ${{ matrix.variant == 'client-preview' && 'redist/redist-client' || matrix.variant == 'server-preview' && 'redist/redist-server' || format(' redist/redist-{0}', matrix.variant) }}
47+ REDIST_DIR : ${{ matrix.variant == 'client-preview' && 'redist/redist-client' || matrix.variant == 'server-preview' && 'redist/redist-server' || matrix.variant == 'client-preview-old' && ' redist/redist-client-preview-old' || matrix.variant == 'server-preview-old' && 'redist/redist-server-preview-old' || matrix.variant == 'client' && 'redist/redist-client' || matrix.variant == 'server' && 'redist/redist-server' || 'redist/redist-unknown' }}
11748
11849 steps :
119- - name : Checkout
50+ - name : Checkout repository
12051 uses : actions/checkout@v4
12152 with :
12253 ref : master
54+ # Fetch entire history for proper version comparison
55+ fetch-depth : 0
12356
124- - name : Download tool release
57+ - name : Download update tool
12558 uses : robinraju/release-downloader@v1
12659 with :
12760 repository : RocketModFix/UnturnedRedistUpdateTool
@@ -140,51 +73,43 @@ jobs:
14073 dotnet-version : 9.x
14174
14275 - name : Setup SteamCMD
143- id : setup-steamcmd
14476 uses : CyberAndrii/setup-steamcmd@v1
14577
146- - name : Update app
147- if : ${{ matrix.variant == 'client' || matrix.variant == 'server' }}
148- run : steamcmd +force_install_dir $GITHUB_WORKSPACE +login ${{ secrets.STEAM_USERNAME }} ${{ secrets.STEAM_PASSWORD }} +app_update $APP_ID -validate +quit
149-
150- - name : Update app (preview)
151- if : ${{ matrix.variant == 'client-preview' || matrix.variant == 'server-preview' || matrix.variant == 'client-preview-old' || matrix.variant == 'server-preview-old' }}
152- run : steamcmd +force_install_dir $GITHUB_WORKSPACE +login ${{ secrets.STEAM_USERNAME }} ${{ secrets.STEAM_PASSWORD }} +app_update $APP_ID -beta preview -validate +quit
153-
154- - name : Run auto-updater (force)
155- if : ${{ github.event_name == 'workflow_dispatch' }}
78+ - name : Update game files
15679 run : |
157- if [[ "${{ matrix.variant }}" == "client-preview " || "${{ matrix.variant }}" == "server-preview " ]]; then
158- dotnet redist_tool/UnturnedRedistUpdateTool.dll " $GITHUB_WORKSPACE" "$GITHUB_WORKSPACE/$REDIST_DIR" " $APP_ID" --force --preview
80+ if [[ "${{ matrix.variant }}" == "client" || "${{ matrix.variant }}" == "server" ]]; then
81+ steamcmd +force_install_dir $GITHUB_WORKSPACE +login ${{ secrets.STEAM_USERNAME }} ${{ secrets.STEAM_PASSWORD }} +app_update $APP_ID -validate +quit
15982 else
160- dotnet redist_tool/UnturnedRedistUpdateTool.dll " $GITHUB_WORKSPACE" "$GITHUB_WORKSPACE/$REDIST_DIR" " $APP_ID" --force
83+ steamcmd +force_install_dir $GITHUB_WORKSPACE +login ${{ secrets.STEAM_USERNAME }} ${{ secrets.STEAM_PASSWORD }} +app_update $APP_ID -beta preview -validate +quit
16184 fi
16285
163- - name : Run auto-updater (schedule)
164- if : ${{ github.event_name == 'schedule' }}
86+ - name : Run redist updater
16587 run : |
88+ flags=""
89+ if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
90+ flags+=" --force"
91+ fi
16692 if [[ "${{ matrix.variant }}" == "client-preview" || "${{ matrix.variant }}" == "server-preview" ]]; then
167- dotnet redist_tool/UnturnedRedistUpdateTool.dll "$GITHUB_WORKSPACE" "$GITHUB_WORKSPACE/$REDIST_DIR" "$APP_ID" --preview
168- else
169- dotnet redist_tool/UnturnedRedistUpdateTool.dll "$GITHUB_WORKSPACE" "$GITHUB_WORKSPACE/$REDIST_DIR" "$APP_ID"
93+ flags+=" --preview"
17094 fi
95+
96+ dotnet redist_tool/UnturnedRedistUpdateTool.dll "$GITHUB_WORKSPACE" "$GITHUB_WORKSPACE/$REDIST_DIR" "$APP_ID" $flags
17197
172- - name : Generate Commit Message
173- run : |
174- msg=$( cat .commit )
175- echo "message=$msg" >> "$GITHUB_OUTPUT"
176- id : generate_commit_message
177-
178- - name : Commit and push changes
98+ - name : Commit changes
99+ if : success()
179100 run : |
180101 git config --global user.email "[email protected] " 181102 git config --global user.name "sunnamed434"
182-
183- git add -A
184- git reset README.md # Reset README.md, cause steamcmd override it.
185- git status
186- git commit -m "${{ steps.generate_commit_message.outputs.message }}"
187- git push
103+
104+ # Check for actual changes before committing
105+ if git diff --quiet; then
106+ echo "No changes detected for ${{ matrix.variant }}"
107+ else
108+ git add -A
109+ git reset README.md # Reset README.md, cause steamcmd override it.
110+ git commit -m "Update redist: ${{ matrix.variant }}"
111+ git push
112+ fi
188113
189114 workflow-keepalive :
190115 if : github.event_name == 'schedule'
0 commit comments