pr.yml 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. name: Build PR snapshot
  2. on:
  3. pull_request:
  4. paths:
  5. - '**.gradle'
  6. - '**.properties'
  7. - '**/src/**'
  8. types: [ opened, synchronize, reopened ]
  9. jobs:
  10. validate-gradle:
  11. name: "Validate Gradle wrapper"
  12. runs-on: ubuntu-20.04
  13. steps:
  14. - uses: actions/checkout@v2
  15. with:
  16. fetch-depth: 0
  17. - uses: gradle/wrapper-validation-action@v1
  18. license:
  19. name: "Verify License integrity"
  20. runs-on: ubuntu-20.04
  21. if: |
  22. !contains(github.event.head_commit.message, '[ci skip]')
  23. steps:
  24. - uses: actions/checkout@v2
  25. - name: Set up JDK 8
  26. uses: actions/setup-java@v2
  27. with:
  28. java-version: 8
  29. distribution: 'adopt'
  30. - name: Cache Gradle wrapper
  31. uses: actions/cache@v2
  32. with:
  33. path: ~/.gradle/wrapper
  34. key: gradle-wrapper-${{ runner.os }}-${{ hashFiles('gradle/wrapper/**/*') }}
  35. restore-keys: gradle-wrapper-${{ runner.os }}-
  36. - name: Cache packages
  37. id: cache-packages
  38. uses: actions/cache@v2
  39. with:
  40. path: ~/.gradle/caches
  41. key: gradle-packages-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
  42. restore-keys: gradle-packages-${{ runner.os }}-
  43. - name: Make gradlew executable
  44. run: chmod +x ./gradlew
  45. - name: Verify license using Licenser
  46. run: |
  47. ./gradlew licenseCheck
  48. # Remove some potentially problematic files from the Gradle cache,
  49. # so that GitHub Actions doesn't cache them.
  50. - name: Cleanup Gradle Cache
  51. if: steps.cache-packages.outputs.cache-hit != 'true'
  52. run: |
  53. rm -f $HOME/.gradle/caches/*/*.lock
  54. rm -rf $HOME/.gradle/caches/*/plugin-resolution/
  55. rm -rf $HOME/.gradle/caches/*/scripts/
  56. rm -rf $HOME/.gradle/caches/*/scripts-remapped/
  57. rm -rf $HOME/.gradle/caches/*/fileHashes/
  58. rm -f $HOME/.gradle/caches/journal-1/file-access.bin
  59. build:
  60. name: "Build"
  61. strategy:
  62. matrix:
  63. java: [ 8, 15 ] # Build on Java 8 (version shipped with MC 1.16) and Java 15 (iirc the latest version supported by both loaders on 1.16)
  64. runs-on: ubuntu-20.04
  65. if: |
  66. !contains(github.event.head_commit.message, '[ci skip]')
  67. steps:
  68. - uses: actions/checkout@v2
  69. - name: Set up JDK ${{ matrix.java }}
  70. uses: actions/setup-java@v2
  71. with:
  72. java-version: ${{ matrix.java }}
  73. distribution: 'adopt'
  74. - name: Cache Gradle wrapper
  75. uses: actions/cache@v2
  76. with:
  77. path: ~/.gradle/wrapper
  78. key: gradle-wrapper-${{ runner.os }}-${{ hashFiles('gradle/wrapper/**/*') }}
  79. restore-keys: gradle-wrapper-${{ runner.os }}-
  80. - name: Cache packages
  81. id: cache-packages
  82. uses: actions/cache@v2
  83. with:
  84. path: ~/.gradle/caches
  85. key: gradle-packages-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
  86. restore-keys: gradle-packages-${{ runner.os }}-
  87. - name: Make gradlew executable
  88. run: chmod +x ./gradlew
  89. - name: Build with Gradle
  90. run: |
  91. ./gradlew build --stacktrace --no-daemon
  92. # Remove some potentially problematic files from the Gradle cache,
  93. # so that GitHub Actions doesn't cache them.
  94. - name: Cleanup Gradle Cache
  95. if: steps.cache-packages.outputs.cache-hit != 'true'
  96. run: |
  97. rm -f $HOME/.gradle/caches/*/*.lock
  98. rm -rf $HOME/.gradle/caches/*/plugin-resolution/
  99. rm -rf $HOME/.gradle/caches/*/scripts/
  100. rm -rf $HOME/.gradle/caches/*/scripts-remapped/
  101. rm -rf $HOME/.gradle/caches/*/fileHashes/
  102. rm -f $HOME/.gradle/caches/journal-1/file-access.bin
  103. - name: Setting mod version
  104. if: ${{ matrix.java == '8' }} # Only upload Java 8 artifacts for MC 1.16
  105. run: |
  106. cat $GITHUB_WORKSPACE/gradle.properties | grep ^archives_base_name= >> $GITHUB_ENV
  107. cat $GITHUB_WORKSPACE/gradle.properties | grep ^minecraft_version= >> $GITHUB_ENV
  108. cat $GITHUB_WORKSPACE/gradle.properties | grep ^base_version= >> $GITHUB_ENV
  109. - name: Create package name
  110. if: ${{ matrix.java == '8' }} # Only upload Java 8 artifacts for MC 1.16
  111. run: echo "package_name=[$minecraft_version] $archives_base_name-$base_version.${{ github.run_number }}" >> $GITHUB_ENV
  112. - uses: actions/upload-artifact@v2
  113. if: ${{ matrix.java == '8' }} # Only upload Java 8 artifacts for MC 1.16
  114. with:
  115. name: ${{ env.package_name }}
  116. path: |
  117. **/build/libs/
  118. !build/libs/
  119. !**/*-dev.jar
  120. !**/*-shadow.jar
  121. !**/*-transformProduction*.jar
  122. !**/testmod*/