Gradle Update
Gradle Update keeps the latest Gradle Wrapper by pull requests for your repositories on GitHub.
Visit https://gradleupdate.appspot.com
Note: In past adding a star on this repository triggered a new pull request, but it has no effect now. Feel free to star this repository!
How works
When a user requested update for a repository
- Receive a request for repository.
- Check if user have permission to push to the repository.
- Check if Gradle Update have permission to pull from the repository.
- Queue a task for the repository.
- In a task,
- Check if the repository:default-branch does not have the latest version of Gradle Wrapper.
- Fork the repository as fork and sync default-branch to upstream.
- Create or update a commit with the latest version of Gradle Wrapper as fork:gradle-branch.
- Create or update a pull request from fork:gradle-branch onto repository:default-branch.
Periodically
- Check the latest version of Gradle from services.gradle.org.
- If a new version of Gradle is found,
- Trigger updating Gradle Wrapper on latest-gradle-wrapper.
- Wait until the new version is available on latest-gradle-wrapper.
- Get a list of repositories to be updated and queue tasks for each repository.
When a badge for the repository is requested,
- Check the version of Gradle Wrapper in the repository.
- If it is up-to-date, respond the green image.
- If it is out-of-date, respond the red image.
- If it has no Gradle Wrapper, respond the grey image.
Architecture
- React
- Gaelyk
- App Engine
- Spock
- Webpack
- Babel
- Gradle
Git operations are performed via GitHub API. It requires no filesystem or git command.
All operations are performed on Task Queue and designed to be transactional and idempotence. Any exception such as HTTP error may occur during an operation but will be recovered by retrying.
Contribution
Gradle Update is an open source software licensed under the Apache License Version 2.0. Feel free to open issues or pull requests.
How to Run
Build and run App Engine development server.
npm run watch
./gradlew appengineRun
We can run Webpack development server instead.
npm run start
How to Deploy
Push the master branch and Circle CI will deploy the app to App Engine.
A service account key should be provided during CI.
Open Google Cloud Platform Console and create a service account.
Then, encode the JSON key as follows and store it into the environment variable APPENGINE_KEY
on Circle CI.
base64 -b0 appengine-key.json
Build system
Sources:
- Frontend
/src/main/js
- JSX and Less code/static
- Static files
- Backend
/src/main/groovy
- Production code/src/main/groovlet
- Production code (Groovlet)/src/main/config
- Configuration files/src/test/groovy
- Test code
Artifacts:
Destination | Source | Builder |
---|---|---|
/build/exploded-app |
/static |
Webpack |
/build/exploded-app/react.min.js |
dependencies | Webpack |
/build/exploded-app/app.js |
/src/main/js and dependencies |
Webpack |
/build/exploded-app/WEB-INF |
/src/main/config |
Gradle |
/build/exploded-app/WEB-INF/lib |
/src/main/groovy and dependencies |
Gradle |
/build/exploded-app/WEB-INF/groovy |
/src/main/groovlet |
Gradle and Webpack |
/build/local_db.bin |
- | App Engine Dev Server |