| # Workflow to cherry-pick changes from main to release branch. |
| |
| name: auto-merge |
| |
| on: |
| push: |
| branches: [ main ] |
| |
| jobs: |
| pick-test-push: |
| strategy: |
| fail-fast: false |
| |
| # The type of runner that the job will run on |
| runs-on: ubuntu-latest |
| |
| permissions: |
| contents: write |
| |
| steps: |
| # Checkout |
| - uses: actions/checkout@v2 |
| with: |
| fetch-depth: 0 |
| ref: 2.0.3-release |
| |
| - name: merge commits from main to release branch |
| run: | |
| # Cherry pick new changes from main, except for version bumps. |
| # A commit is a version bump IFF it touches third_party/prebuilt/repo |
| DONT_PICK=$(cat <<EOF |
| 5c073ba9c1283190467937b4456be9174b9be86c |
| EOF |
| ) |
| git config --global user.email "kotlin-symbol-processing@google.com" |
| git config --global user.name "KSP Auto Pick" |
| MERGE_BASE=$(git merge-base HEAD origin/main) |
| CANDIDATES=$(git log --pretty=%H $MERGE_BASE..origin/main) |
| PICKED=$(git log $MERGE_BASE..HEAD | sed -n "s/^[ ]*(cherry picked from commit \([a-z0-9]*\))$/\1/p") |
| VERSION_BUMPS=$(git log $MERGE_BASE..origin/main --pretty=%H --grep UPDATE_KOTLIN_VERSION) |
| TO_PICK=$(grep -Fxv -f <(echo "$PICKED"; echo "$VERSION_BUMPS"; echo "$DONT_PICK") <(echo "$CANDIDATES") | awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }') |
| echo Picking $TO_PICK |
| if [ -n "$TO_PICK" ]; then git cherry-pick -x $TO_PICK; fi |
| |
| - name: Setup Java 17 |
| uses: actions/setup-java@v1.4.3 |
| with: |
| java-version: '17' |
| java-package: jdk |
| architecture: x64 |
| |
| # Build cache |
| - name: Cache Gradle Cache |
| uses: actions/cache@v4 |
| with: |
| path: ~/.gradle/caches |
| key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle.kts') }}-${{ hashFiles('**/gradle.properties') }} |
| # An ordered list of keys to use for restoring the cache if no cache hit occurred for key |
| restore-keys: | |
| ${{ runner.os }}-gradle- |
| - name: Cache gradle wrapper |
| uses: actions/cache@v4 |
| with: |
| path: ~/.gradle/wrapper |
| key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }} |
| |
| # Check API compatibility |
| - name: API compatibility check |
| run: ./gradlew :api:checkApi |
| |
| # Run ksp generated tests |
| - name: test |
| run: ./gradlew --stacktrace --info check |
| |
| - name: push to release branch |
| if: success() |
| run: git fetch && git rebase && git push origin |
| |
| - name: Upload test results |
| if: always() |
| uses: actions/upload-artifact@v4 |
| with: |
| name: test-reports |
| path: | |
| compiler-plugin/build/reports |
| integration-tests/build/reports |
| gradle-plugin/build/reports |
| common-util/build/reports |
| kotlin-analysis-api/build/reports |