Files
plugin-hub/.github/workflows/build.yml
Max Weber 79e77d63b9 package: avoid rebuilding plugins with compatible apis
we have to do this as part of a compiler plugin, and not by just looking
at the classes' bytecode, because jls§13.1 requires inlining of certain
constant values, so references to these will not be present in the
bytecode.
2021-11-13 10:09:25 -07:00

107 lines
3.5 KiB
YAML

on:
workflow_dispatch:
inputs:
FORCE_BUILD:
description: "List of plugins to build, or 'ALL'"
required: false
COMMIT_RANGE:
description: "Commit range to build 1234abc..5689def"
required: false
API_FILES_VERSION:
description: "RuneLite version to use .api files from"
required: false
push:
pull_request:
env:
CACHE_VERSION: 2.1.0
jobs:
build:
# any forks that predate this repo having an action will have actions
# enabled by default, which will fail in a lot of cases because the branch
# is new, which makes the differential build fail
if: github.event_name != 'push' || github.repository_owner == 'runelite'
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- uses: actions/setup-java@v2
with:
distribution: adopt
java-version: 11
- uses: actions/cache@v2
with:
path: |
~/.gradle/caches/
~/.gradle/wrapper/
key: package-${{ env.CACHE_VERSION }}-${{ hashFiles('runelite.version') }}
restore-keys: |
package-${{ env.CACHE_VERSION }}-
- name: prepare
run: |
pushd package
./gradlew --build-cache prep
./gradlew --build-cache --project-dir verification-template :verifyCore
popd
- name: build
env:
REPO_CREDS: ${{ secrets.REPO_CREDS }}
REPO_ROOT: ${{ secrets.REPO_ROOT }}
# workflow_dispatch
FORCE_BUILD: ${{ github.event.inputs.FORCE_BUILD }}
COMMIT_RANGE: ${{ github.event.inputs.COMMIT_RANGE }}
API_FILES_VERSION: ${{ github.event.inputs.API_FILES_VERSION }}
# push
COMMIT_BEFORE: ${{ github.event.before }}
COMMIT_AFTER: ${{ github.event.after }}
# pull_request
PR_BEFORE: ${{ github.event.pull_request.base.sha }}
PR_AFTER: ${{ github.event.pull_request.head.sha }}
PACKAGE_IS_PR: ${{ github.event_name == 'pull_request' }}
run: |
COMMAND_SECRET="$(openssl rand -hex 32)"
echo "::add-mask::$COMMAND_SECRET"
echo "::stop-commands::$COMMAND_SECRET"
if $PACKAGE_IS_PR; then
export PACKAGE_COMMIT_RANGE="$PR_BEFORE...$PR_AFTER"
else
export PACKAGE_COMMIT_RANGE="${COMMIT_RANGE:-${COMMIT_BEFORE:+$COMMIT_BEFORE...$COMMIT_AFTER}}"
fi
exec java -XX:+UseParallelGC -cp package/package/build/libs/package.jar net.runelite.pluginhub.packager.Packager
- uses: actions/upload-artifact@v2
with:
name: manifest_diff
path: /tmp/manifest_diff
retention-days: 1
upload:
if: (github.event_name != 'push' || github.repository_owner == 'runelite') && github.event_name != 'pull_request'
needs: build
concurrency: upload
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 1
- uses: actions/setup-java@v2
with:
distribution: adopt
java-version: 11
- uses: actions/cache@v2
with:
path: |
~/.gradle/caches/
~/.gradle/wrapper/
key: upload-${{ env.CACHE_VERSION }}
- uses: actions/download-artifact@v2
with:
name: manifest_diff
path: /tmp
- name: upload
env:
REPO_CREDS: ${{ secrets.REPO_CREDS }}
REPO_ROOT: ${{ secrets.REPO_ROOT }}
SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
run: |
pushd package
./gradlew :upload:run
popd