Refactor task resolution and task nesting complexity #350
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build Lambda | |
| on: | |
| push: | |
| branches: | |
| - '**' | |
| jobs: | |
| check-runner: | |
| name: Check Runner Availability | |
| runs-on: ubuntu-latest | |
| outputs: | |
| runner-label: ${{ steps.set-runner.outputs.runner-label }} | |
| steps: | |
| - name: Set runner | |
| id: set-runner | |
| run: | | |
| 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) | |
| if [ $? -ne 0 ]; then | |
| echo "Error: Failed to fetch runners from GitHub API" >&2 | |
| exit 1 | |
| fi | |
| runners_count=$(echo "$runners" | jq '.runners | length') | |
| if [ "$runners_count" -eq 0 ]; then | |
| echo "No runners available or failed to retrieve runners." >&2 | |
| echo "runner-label=ubuntu-latest" >> $GITHUB_OUTPUT | |
| exit 0 | |
| fi | |
| available=$(echo "$runners" | jq '.runners[] | select(.status == "online" and .busy == false and .labels[] .name == "self-hosted")') | |
| if [ $? -ne 0 ]; then | |
| echo "Error: Failed to parse JSON response" >&2 | |
| exit 1 | |
| fi | |
| if [ -n "$available" ]; then | |
| echo "runner-label=lambda-linux-runner" >> $GITHUB_OUTPUT | |
| else | |
| echo "runner-label=ubuntu-latest" >> $GITHUB_OUTPUT | |
| fi | |
| build: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| needs: check-runner | |
| runs-on: ${{ needs.check-runner.outputs.runner-label }} | |
| name: Build Lambda | |
| permissions: | |
| contents: write | |
| env: | |
| SEGMENT_DOWNLOAD_TIMEOUT_MINS: '5' | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4.1.1 | |
| - name: Set current date as env variable | |
| run: echo "DATE=$(date +'%Y-%m-%dT%H:%M:%S')" >> $GITHUB_ENV | |
| - name: Get Short Commit Hash | |
| id: vars | |
| run: echo "COMMIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV | |
| - name: Set-Up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '17' | |
| architecture: x64 | |
| cache: 'gradle' | |
| - name: Read Gradle Properties | |
| uses: BrycensRanch/read-properties-action@v1.0.4 | |
| id: all | |
| with: | |
| file: gradle.properties | |
| all: true | |
| - name: Build Lambda | |
| run: ./gradlew build | |
| - name: Rename Files with Commit Hash | |
| run: | | |
| mv ./fabric/build/libs/lambda-fabric-${{ steps.all.outputs.modVersion }}+${{ steps.all.outputs.minecraftVersion }}.jar ./fabric/build/libs/lambda-fabric-${{ steps.all.outputs.modVersion }}+${{ steps.all.outputs.minecraftVersion }}-${{ env.COMMIT_HASH }}.jar | |
| mv ./forge/build/libs/lambda-forge-${{ steps.all.outputs.modVersion }}+${{ steps.all.outputs.minecraftVersion }}.jar ./forge/build/libs/lambda-forge-${{ steps.all.outputs.modVersion }}+${{ steps.all.outputs.minecraftVersion }}-${{ env.COMMIT_HASH }}.jar | |
| mv ./common/build/libs/lambda-api-${{ steps.all.outputs.modVersion }}+${{ steps.all.outputs.minecraftVersion }}.jar ./common/build/libs/lambda-api-${{ steps.all.outputs.modVersion }}+${{ steps.all.outputs.minecraftVersion }}-${{ env.COMMIT_HASH }}.jar | |
| - name: Upload Lambda | |
| uses: ryand56/r2-upload-action@latest | |
| id: upload | |
| with: | |
| r2-account-id: ${{ secrets.R2_ACCOUNT_ID }} | |
| r2-access-key-id: ${{ secrets.R2_ACCESS_KEY }} | |
| r2-secret-access-key: ${{ secrets.R2_ACCESS_SECRET }} | |
| r2-bucket: ${{ secrets.R2_BUCKET_NAME }} | |
| source-dir: | | |
| ./fabric/build/libs/lambda-fabric-${{ steps.all.outputs.modVersion }}+${{ steps.all.outputs.minecraftVersion }}-${{ env.COMMIT_HASH }}.jar | |
| ./forge/build/libs/lambda-forge-${{ steps.all.outputs.modVersion }}+${{ steps.all.outputs.minecraftVersion }}-${{ env.COMMIT_HASH }}.jar | |
| ./common/build/libs/lambda-api-${{ steps.all.outputs.modVersion }}+${{ steps.all.outputs.minecraftVersion }}-${{ env.COMMIT_HASH }}.jar | |
| destination-dir: ${{ env.DATE }}-${{ env.COMMIT_HASH }} | |
| - name: Generate Summary | |
| if: ${{ steps.upload.outputs.result == 'success' }} | |
| run: | | |
| cat << EOF >> $GITHUB_STEP_SUMMARY | |
| ### [Lambda Fabric ${{ steps.all.outputs.modVersion }} ${{ steps.all.outputs.minecraftVersion }} (${{ env.COMMIT_HASH }})](https://r2-bucket.edouard127.christmas/${{ env.DATE }}-${{ env.COMMIT_HASH }}/lambda-fabric-${{ steps.all.outputs.modVersion }}+${{ steps.all.outputs.minecraftVersion }}-${{ env.COMMIT_HASH }}.jar) | |
| ### [Lambda Forge ${{ steps.all.outputs.modVersion }} ${{ steps.all.outputs.minecraftVersion }} (${{ env.COMMIT_HASH }})](https://r2-bucket.edouard127.christmas/${{ env.DATE }}-${{ env.COMMIT_HASH }}/lambda-forge-${{ steps.all.outputs.modVersion }}+${{ steps.all.outputs.minecraftVersion }}-${{ env.COMMIT_HASH }}.jar) | |
| #### [API (Developer Dependency)](https://r2-bucket.edouard127.christmas/${{ env.DATE }}-${{ env.COMMIT_HASH }}/lambda-api-${{ steps.all.outputs.modVersion }}+${{ steps.all.outputs.minecraftVersion }}-${{ env.COMMIT_HASH }}.jar) | |
| **Runner:** \`${{ needs.check-runner.outputs.runner-label }}\` | |
| EOF | |
| - name: Failover Upload | |
| if: ${{ steps.upload.outputs.result == 'failure' }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: lambda-nightly | |
| path: | | |
| /**/build/libs/lambda-*-${{ steps.all.outputs.modVersion }}+${{ steps.all.outputs.minecraftVersion }}-${{ env.COMMIT_HASH }}.jar | |