@@ -10,9 +10,45 @@ concurrency:
1010 cancel-in-progress : true
1111
1212jobs :
13- build_and_release :
14- name : Build and Release Lambda
13+ check-runner :
1514 runs-on : ubuntu-latest
15+
16+ outputs :
17+ runner-label : ${{ steps.set-runner.outputs.runner-label }}
18+
19+ steps :
20+ - name : Set runner
21+ id : set-runner
22+ run : |
23+ runners=$(curl -v -s -H "Accept: application/vnd.github+json" -H "Authorization: token ${{ secrets.REPO_ACCESS_TOKEN }}" "https://api.github.com/repos/${{ github.repository }}/actions/runners" --http1.1)
24+ if [ $? -ne 0 ]; then
25+ echo "Error: Failed to fetch runners from GitHub API" >&2
26+ exit 1
27+ fi
28+
29+ runners_count=$(echo "$runners" | jq '.runners | length')
30+ if [ "$runners_count" -eq 0 ]; then
31+ echo "No runners available or failed to retrieve runners." >&2
32+ echo "runner-label=ubuntu-latest" >> $GITHUB_OUTPUT
33+ exit 0
34+ fi
35+
36+ available=$(echo "$runners" | jq '.runners[] | select(.status == "online" and .busy == false and .labels[] .name == "self-hosted")')
37+ if [ $? -ne 0 ]; then
38+ echo "Error : Failed to parse JSON response" >&2
39+ exit 1
40+ fi
41+
42+ if [ -n "$available" ]; then
43+ echo "runner-label=lambda-linux-runner" >> $GITHUB_OUTPUT
44+ else
45+ echo "runner-label=ubuntu-latest" >> $GITHUB_OUTPUT
46+ fi
47+ build :
48+ needs : check-runner
49+ runs-on : ${{ needs.check-runner.outputs.runner-label }}
50+
51+ name : Build and Release Lambda
1652 permissions :
1753 contents : write
1854 env :
2157 - name : Checkout Repository
2258 uses : actions/checkout@v4.1.1
2359
60+ - name : Set current date as env variable
61+ run : echo "DATE=$(date +'%Y-%m-%dT%H:%M:%S')" >> $GITHUB_ENV
62+
2463 - name : Get Short Commit Hash
2564 id : vars
2665 run : echo "COMMIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
3271 java-version : ' 17'
3372 architecture : x64
3473 cache : ' gradle'
35- cache-dependency-path : |
36- build.gradle.kts
3774
3875 - name : Read Gradle Properties
3976 uses : BrycensRanch/read-properties-action@v1.0.4
@@ -43,25 +80,37 @@ jobs:
4380 all : true
4481
4582 - name : Build Lambda
46- run : ./gradlew --build-cache build
83+ run : ./gradlew build
4784
4885 - name : Upload Lambda Fabric
49- uses : actions/ upload-artifact@v4.3.6
86+ uses : ryand56/r2- upload-action@latest
5087 with :
51- name : lambda-fabric-${{ steps.all.outputs.modVersion }}+${{ steps.all.outputs.minecraftVersion }}-${{ env.COMMIT_HASH }}
52- path : fabric/build/libs/
88+ r2-account-id : ${{ secrets.R2_ACCOUNT_ID }}
89+ r2-access-key-id : ${{ secrets.R2_ACCESS_KEY }}
90+ r2-secret-access-key : ${{ secrets.R2_ACCESS_SECRET }}
91+ r2-bucket : ${{ secrets.R2_BUCKET_NAME }}
92+ source-dir : ' ./fabric/build/libs/lambda-fabric-${{ steps.all.outputs.modVersion }}+${{ steps.all.outputs.minecraftVersion }}.jar'
93+ destination-dir : ${{ env.DATE }}-${{ env.COMMIT_HASH }}
5394
5495 - name : Upload Lambda Forge
55- uses : actions/ upload-artifact@v4.3.6
96+ uses : ryand56/r2- upload-action@latest
5697 with :
57- name : lambda-forge-${{ steps.all.outputs.modVersion }}+${{ steps.all.outputs.minecraftVersion }}-${{ env.COMMIT_HASH }}
58- path : forge/build/libs/
98+ r2-account-id : ${{ secrets.R2_ACCOUNT_ID }}
99+ r2-access-key-id : ${{ secrets.R2_ACCESS_KEY }}
100+ r2-secret-access-key : ${{ secrets.R2_ACCESS_SECRET }}
101+ r2-bucket : ${{ secrets.R2_BUCKET_NAME }}
102+ source-dir : ' ./forge/build/libs/lambda-forge-${{ steps.all.outputs.modVersion }}+${{ steps.all.outputs.minecraftVersion }}.jar'
103+ destination-dir : ${{ env.DATE }}-${{ env.COMMIT_HASH }}
59104
60105 - name : Upload Lambda API
61- uses : actions/ upload-artifact@v4.3.6
106+ uses : ryand56/r2- upload-action@latest
62107 with :
63- name : lambda-${{ steps.all.outputs.modVersion }}+${{ steps.all.outputs.minecraftVersion }}-${{ env.COMMIT_HASH }}
64- path : common/build/libs/
108+ r2-account-id : ${{ secrets.R2_ACCOUNT_ID }}
109+ r2-access-key-id : ${{ secrets.R2_ACCESS_KEY }}
110+ r2-secret-access-key : ${{ secrets.R2_ACCESS_SECRET }}
111+ r2-bucket : ${{ secrets.R2_BUCKET_NAME }}
112+ source-dir : ' ./common/build/libs/lambda-api-${{ steps.all.outputs.modVersion }}+${{ steps.all.outputs.minecraftVersion }}.jar'
113+ destination-dir : ${{ env.DATE }}-${{ env.COMMIT_HASH }}
65114
66115 - name : Create Release
67116 uses : softprops/action-gh-release@v2.0.8
0 commit comments