Skip to content

Introduce kudo serialization format. #450

Introduce kudo serialization format.

Introduce kudo serialization format. #450

Workflow file for this run

# Copyright (c) 2022-2024, NVIDIA CORPORATION.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# A workflow to keep BASE branch up-to-date from HEAD branch
name: auto-merge HEAD to BASE
on:
pull_request_target:
branches:
- branch-*
types: [closed]
jobs:
auto-merge: # TODO: use spark-rapids-common shared action when available
if: github.event.pull_request.merged == true
runs-on: ubuntu-latest
steps:
- name: set HEAD ENV
run: echo "HEAD=${{ github.event.pull_request.base.ref }}" >> $GITHUB_ENV
- name: Generate target branch
run: |
current_branch="${{ env.HEAD }}"
version=${current_branch#branch-}
IFS='.' read -r -a parts <<< "$version"
year=${parts[0]}
month=${parts[1]}
month=$((10#$month + 2))
if [ $month -gt 12 ]; then
month=$((month - 12))
year=$((year + 1))
fi
next_release=$(printf "%02d.%02d" $year $month)
echo "Next release is $next_release"
echo "BASE=branch-$next_release" >> $GITHUB_ENV
- name: Check if target branch exists
run: |
CODE=$(curl -s -o /dev/null -w "%{http_code}" -H "Authorization: token ${{ secrets.AUTOMERGE_TOKEN }}" \
https://api.github.com/repos/${{ github.repository }}/branches/${{ env.BASE }})
echo "Response code: $CODE..."
if [ $CODE -eq 200 ]; then
echo "branch_exists=true" >> $GITHUB_ENV
else
echo "branch_exists=false" >> $GITHUB_ENV
echo "Failed to find ${{ env.BASE }}. Skip auto-merge..."
fi
- uses: actions/checkout@v4
if: env.branch_exists == 'true'
with:
ref: ${{ env.HEAD }} # force to fetch from latest upstream instead of PR ref
token: ${{ secrets.AUTOMERGE_TOKEN }} # workaround auto-merge token to avoid GITHUB_TOKEN insufficient permission
- name: push intermediate branch for auto-merge
if: env.branch_exists == 'true'
run: |
git config user.name "spark-rapids automation"
git config user.email "[email protected] "
git fetch origin ${HEAD} ${BASE}
git checkout -b ${INTERMEDIATE_HEAD} origin/${HEAD}
# Sync the $BASE branch with the commits from the $HEAD branch,
# excluding the paths defined as $FILE_USE_BASE (located under ./thirdparty).
git checkout origin/${BASE} -- ${FILE_USE_BASE}
# If any submodule file is updated in the HEAD branch,
# always change it to the corresponding one from the BASE branch.
[ ! -z "$(git status --porcelain=v1 --untracked=no)" ] && \
git commit -s -am "Auto-merge use ${BASE} versions"
git push origin ${INTERMEDIATE_HEAD} -f
env:
INTERMEDIATE_HEAD: bot-auto-merge-${{ env.HEAD }}
FILE_USE_BASE: thirdparty/cudf thirdparty/cudf-pins
- name: auto-merge job
if: env.branch_exists == 'true'
uses: ./.github/workflows/action-helper
with:
operator: auto-merge
env:
OWNER: NVIDIA
REPO: spark-rapids-jni
HEAD: bot-auto-merge-${{ env.HEAD }}
BASE: ${{ env.BASE }}
TOKEN: ${{ secrets.AUTOMERGE_TOKEN }}