mirror of
https://github.com/gradle/gradle-build-action
synced 2024-11-23 18:12:15 +00:00
123 lines
3.1 KiB
Markdown
123 lines
3.1 KiB
Markdown
# Execute Gradle commands in Github Actions workflows
|
|
|
|
This Github Action can be used to run arbitrary Gradle commands on any platform supported by Github Actions.
|
|
|
|
|
|
## Usage
|
|
|
|
The following workflow will run `gradle build` using the wrapper from the repository on ubuntu, macos and windows:
|
|
|
|
```yaml
|
|
// .github/workflows/gradle-build-pr.yml
|
|
name: Run Gradle on PRs
|
|
on: pull-request
|
|
jobs:
|
|
gradle:
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- uses: actions/setup-java@v1
|
|
with:
|
|
java-version: 11
|
|
- uses: eskatos/gradle-command-action@v1
|
|
with:
|
|
arguments: build
|
|
```
|
|
|
|
## Gradle arguments
|
|
|
|
The `arguments` input can used to pass arbitrary arguments to the `gradle` command line.
|
|
|
|
Here are some valid examples:
|
|
```yaml
|
|
arguments: build
|
|
arguments: check --scan
|
|
arguments: some arbitrary tasks
|
|
arguments: build -PgradleProperty=foo
|
|
arguments: build -DsystemProperty=bar
|
|
....
|
|
```
|
|
|
|
See `gradle --help` for more information.
|
|
|
|
If you need to pass environment variables, simply use the Github Actions workflow syntax:
|
|
|
|
```yaml
|
|
- uses: eskatos/gradle-command-action@v1
|
|
env:
|
|
CI: true
|
|
```
|
|
|
|
## Run a build from a different directory
|
|
|
|
```yaml
|
|
- uses: eskatos/gradle-command-action@v1
|
|
with:
|
|
build-root-directory: some/subdirectory
|
|
```
|
|
|
|
## Use a Gradle wrapper from a different directory
|
|
|
|
```yaml
|
|
- uses: eskatos/gradle-command-action@v1
|
|
with:
|
|
wrapper-directory: path/to/wrapper-directory
|
|
```
|
|
|
|
## Use a specific `gradle` executable
|
|
|
|
```yaml
|
|
- uses: eskatos/gradle-command-action@v1
|
|
with:
|
|
gradle-executable: path/to/gradle
|
|
```
|
|
|
|
## Setup and use a declared Gradle version
|
|
|
|
```yaml
|
|
- uses: eskatos/gradle-command-action@v1
|
|
with:
|
|
gradle-version: 5.6.2
|
|
```
|
|
|
|
`gradle-version` can be set to any valid Gradle version.
|
|
|
|
Moreover, you can use the following aliases:
|
|
|
|
| Alias | Selects |
|
|
| --- |---|
|
|
| `current` | The current [stable release](https://gradle.org/install/) |
|
|
| `rc` | The current [release candidate](https://gradle.org/release-candidate/) if any, otherwise fallback to `current` |
|
|
| `nightly` | The latest [nightly](https://gradle.org/nightly/), fails if none. |
|
|
| `release-nightly` | The latest [release nightly](https://gradle.org/release-nightly/), fails if none. |
|
|
|
|
This can be handy to automatically test your build with the next Gradle version once a release candidate is out:
|
|
|
|
```yaml
|
|
// .github/workflows/test-gradle-rc.yml
|
|
name: Test latest Gradle RC
|
|
on:
|
|
schedule:
|
|
- cron: 0 0 * * * # daily
|
|
jobs:
|
|
gradle-rc:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- uses: actions/setup-java@v1
|
|
with:
|
|
java-version: 11
|
|
- uses: eskatos/gradle-command-action@v1
|
|
with:
|
|
gradle-version: rc
|
|
arguments: build --dry-run # just test build configuration
|
|
```
|
|
|
|
# Build scans
|
|
|
|
If your build publishes a [build scan](https://gradle.com/build-scans/) the `gradle-command-action` action will emit the link to the published build scan as an output named `build-scan-url`.
|
|
|
|
You can then use that link in subsequent actions of your workflow.
|