Skip to content

Update.Unturned.Redist #89

Update.Unturned.Redist

Update.Unturned.Redist #89

name: "Update.Unturned.Redist"
on:
schedule:
- cron: "*/15 * * * *" # Run every 15 minutes
workflow_dispatch:
inputs:
variant:
description: 'Which variant to update'
required: true
default: 'client'
type: choice
options:
- client
- server
- server-preview
- client-preview
- server-preview-old
- client-preview-old
permissions:
contents: write
packages: write
concurrency:
group: unturned-redist-update-${{ github.ref }}
cancel-in-progress: false
jobs:
determine-variants:
name: "Determine Variants to Run"
runs-on: ubuntu-latest
outputs:
variants: ${{ steps.set_variants.outputs.variants }}
steps:
- name: Set variants
id: set_variants
run: |
if [ "$GITHUB_EVENT_NAME" = "workflow_dispatch" ]; then
echo "variants=[\"${INPUT_VARIANT}\"]" >> $GITHUB_OUTPUT
else
all_variants=("client" "server" "server-preview" "client-preview" "server-preview-old" "client-preview-old")
variants_json=$(printf '%s\n' "${all_variants[@]}" | jq -R . | jq -s -c .)
echo "variants=$variants_json" >> $GITHUB_OUTPUT
fi
env:
INPUT_VARIANT: ${{ github.event.inputs.variant }}
GITHUB_EVENT_NAME: ${{ github.event_name }}
update_redist:
name: "Update Redist"
runs-on: ubuntu-latest
needs: determine-variants
strategy:
matrix:
variant: ${{ fromJson(needs.determine-variants.outputs.variants) }}
# Run sequentially, one variant at a time
max-parallel: 1
fail-fast: false
steps:
- name: Determine APP_ID and REDIST_DIR
id: vars
run: |
if [[ "${{ matrix.variant }}" == client || "${{ matrix.variant }}" == client-preview || "${{ matrix.variant }}" == client-preview-old ]]; then
echo "APP_ID=304930" >> $GITHUB_ENV
else
echo "APP_ID=1110390" >> $GITHUB_ENV
fi
case "${{ matrix.variant }}" in
client-preview) echo "REDIST_DIR=redist/redist-client" >> $GITHUB_ENV ;;
server-preview) echo "REDIST_DIR=redist/redist-server" >> $GITHUB_ENV ;;
client-preview-old) echo "REDIST_DIR=redist/redist-client-preview-old" >> $GITHUB_ENV ;;
server-preview-old) echo "REDIST_DIR=redist/redist-server-preview-old" >> $GITHUB_ENV ;;
client) echo "REDIST_DIR=redist/redist-client" >> $GITHUB_ENV ;;
server) echo "REDIST_DIR=redist/redist-server" >> $GITHUB_ENV ;;
*) echo "REDIST_DIR=redist/redist-unknown" >> $GITHUB_ENV ;;
esac
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: master
- name: Download update tool
uses: robinraju/release-downloader@v1
with:
repository: RocketModFix/UnturnedRedistUpdateTool
latest: true
fileName: UnturnedRedistUpdateTool.zip
out-file-path: redist_tool
extract: true
- name: Setup .NET
uses: actions/setup-dotnet@v4
env:
DOTNET_NOLOGO: true
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
DOTNET_CLI_TELEMETRY_OPTOUT: true
with:
dotnet-version: 9.x
- name: Setup SteamCMD
uses: CyberAndrii/setup-steamcmd@v1
- name: Update game files
run: |
if [[ "${{ matrix.variant }}" == "client" || "${{ matrix.variant }}" == "server" ]]; then
steamcmd +force_install_dir $GITHUB_WORKSPACE +login ${{ secrets.STEAM_USERNAME }} ${{ secrets.STEAM_PASSWORD }} +app_update $APP_ID -validate +quit
else
steamcmd +force_install_dir $GITHUB_WORKSPACE +login ${{ secrets.STEAM_USERNAME }} ${{ secrets.STEAM_PASSWORD }} +app_update $APP_ID -beta preview -validate +quit
fi
- name: Run redist updater
run: |
flags=""
# Add --force flag for manual dispatch
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
flags="$flags --force"
fi
# Add --preview flag for preview variants
case "${{ matrix.variant }}" in
client-preview|server-preview)
flags="$flags --preview"
;;
esac
echo "Event name: ${{ github.event_name }}"
echo "Matrix variant: ${{ matrix.variant }}"
echo "Final flags: '$flags'"
dotnet redist_tool/UnturnedRedistUpdateTool.dll "$GITHUB_WORKSPACE" "$GITHUB_WORKSPACE/$REDIST_DIR" "$APP_ID" $flags
- name: Generate Commit Message
run: |
msg=$( cat .commit )
echo "message=$msg" >> "$GITHUB_OUTPUT"
id: generate_commit_message
- name: Commit changes
if: success()
run: |
git config --global user.email "sunnamed434@users.noreply.github.com"
git config --global user.name "sunnamed434"
if git diff --quiet; then
echo "No changes detected for ${{ matrix.variant }}"
else
git add -A
git reset README.md # Reset README.md, cause steamcmd override it.
git status
git commit -m "${{ steps.generate_commit_message.outputs.message }}"
git push
fi
workflow-keepalive:
if: github.event_name == 'schedule'
runs-on: ubuntu-latest
permissions:
actions: write
steps:
- uses: liskin/gh-workflow-keepalive@v1