-
Notifications
You must be signed in to change notification settings - Fork 1
102 lines (86 loc) · 3.63 KB
/
Copy pathpublish-java-plugin.yml
File metadata and controls
102 lines (86 loc) · 3.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
name: Build & Publish Java Plugin
on:
release:
types: [published]
workflow_dispatch:
inputs:
version:
description: Version number to publish. Defaults to the ref name.
required: false
jobs:
build-and-publish:
runs-on: ubuntu-latest
env:
MODTALE_API_URL: ${{ vars.MODTALE_API_URL || 'https://api.modtale.net/api/v1' }}
MODTALE_PROJECT_ID: ${{ vars.MODTALE_PROJECT_ID || '123e4567-e89b-12d3-a456-426614174000' }}
MODTALE_GAME_VERSIONS: ${{ vars.MODTALE_GAME_VERSIONS || '2026.01.17-4b0f30090' }}
MODTALE_CHANNEL: ${{ vars.MODTALE_CHANNEL || 'RELEASE' }}
MODTALE_DEPENDENCIES: ${{ vars.MODTALE_DEPENDENCIES }}
MODTALE_INCOMPATIBLE_PROJECTS: ${{ vars.MODTALE_INCOMPATIBLE_PROJECTS }}
MODTALE_REPLACE_EXISTING: ${{ vars.MODTALE_REPLACE_EXISTING || 'false' }}
MODTALE_PUBLISH_AFTER_UPLOAD: ${{ vars.MODTALE_PUBLISH_AFTER_UPLOAD || 'false' }}
RELEASE_BODY: ${{ github.event.release.body }}
RELEASE_TAG: ${{ github.event.release.tag_name }}
VERSION_INPUT: ${{ inputs.version }}
steps:
- uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4
with:
gradle-version: current
- name: Build with Gradle
run: gradle -p gradle-plugin build
- name: Upload to Modtale
shell: bash
run: |
set -euo pipefail
if [[ -z "${MODTALE_PROJECT_ID}" || "${MODTALE_PROJECT_ID}" == "123e4567-e89b-12d3-a456-426614174000" ]]; then
echo "::error::Set the MODTALE_PROJECT_ID repository variable before publishing."
exit 1
fi
VERSION="${VERSION_INPUT:-${RELEASE_TAG:-${GITHUB_REF_NAME}}}"
VERSION="${VERSION#v}"
JAR_PATH="$(find gradle-plugin/build/libs -name '*-plain.jar' -prune -o -name '*.jar' -print | head -n 1)"
CHANGELOG_FILE="${RUNNER_TEMP}/modtale-changelog.md"
{
echo "Automated release from GitHub Actions."
if [[ -n "${RELEASE_BODY:-}" ]]; then
echo
printf '%s\n' "${RELEASE_BODY}"
fi
} > "${CHANGELOG_FILE}"
form=(
-F "file=@${JAR_PATH}"
-F "versionNumber=${VERSION}"
-F "channel=${MODTALE_CHANNEL}"
-F "changelog=<${CHANGELOG_FILE};type=text/markdown"
)
append_csv_field() {
local field="$1"
local csv="$2"
IFS=',' read -ra values <<< "${csv}"
for value in "${values[@]}"; do
value="$(echo "${value}" | xargs)"
if [[ -n "${value}" ]]; then
form+=(-F "${field}=${value}")
fi
done
}
append_csv_field "gameVersions" "${MODTALE_GAME_VERSIONS}"
append_csv_field "modIds" "${MODTALE_DEPENDENCIES:-}"
append_csv_field "incompatibleProjectIds" "${MODTALE_INCOMPATIBLE_PROJECTS:-}"
if [[ "${MODTALE_REPLACE_EXISTING,,}" == "true" ]]; then
form+=(-F "replaceExisting=true")
fi
curl --fail-with-body -X POST "${MODTALE_API_URL%/}/projects/${MODTALE_PROJECT_ID}/versions" \
-H "X-MODTALE-KEY: ${{ secrets.MODTALE_API_KEY }}" \
"${form[@]}"
if [[ "${MODTALE_PUBLISH_AFTER_UPLOAD,,}" == "true" ]]; then
curl --fail-with-body -X POST "${MODTALE_API_URL%/}/projects/${MODTALE_PROJECT_ID}/publish" \
-H "X-MODTALE-KEY: ${{ secrets.MODTALE_API_KEY }}"
fi