This is an automated email from the ASF dual-hosted git repository.
yihua pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hudi.git
The following commit(s) were added to refs/heads/master by this push:
new 6f74c7f6ec6 [HUDI-7438] Add GitHub action to check Azure CI report
(#10731)
6f74c7f6ec6 is described below
commit 6f74c7f6ec6f50547f0472841db05d6943eb07be
Author: Y Ethan Guo <[email protected]>
AuthorDate: Thu Feb 22 21:44:14 2024 -0800
[HUDI-7438] Add GitHub action to check Azure CI report (#10731)
---
.github/workflows/azure_ci_check.yml | 92 ++++++++++++++++++++++++++++++++++++
1 file changed, 92 insertions(+)
diff --git a/.github/workflows/azure_ci_check.yml
b/.github/workflows/azure_ci_check.yml
new file mode 100644
index 00000000000..347d9c2959f
--- /dev/null
+++ b/.github/workflows/azure_ci_check.yml
@@ -0,0 +1,92 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+
+name: Azure CI
+
+on:
+ issue_comment:
+ types: [ created, edited, deleted ]
+
+permissions:
+ pull-requests: read
+ issues: read
+
+jobs:
+ check-azure-ci-report:
+ if: "!contains(github.event.pull_request.body, 'HOTFIX: SKIP AZURE CI')"
+ runs-on: ubuntu-latest
+ steps:
+ - name: Get last commit hash
+ id: last_commit
+ uses: actions/github-script@v7
+ with:
+ github-token: ${{secrets.GITHUB_TOKEN}}
+ script: |
+ const pr = context.payload.pull_request;
+ const lastCommitHash = pr.head.sha;
+ console.log(`Last commit hash: ${lastCommitHash}`);
+ // Set the output variable to be used in subsequent step
+ core.setOutput("last_commit_hash", lastCommitHash);
+
+ - name: Check Azure CI report in PR comment
+ uses: actions/github-script@v7
+ with:
+ github-token: ${{secrets.GITHUB_TOKEN}}
+ script: |
+ const lastCommitHash = '${{
steps.last_commit.outputs.last_commit_hash }}'
+ const botUsername = 'hudi-bot';
+
+ const issueNumber = context.payload.pull_request.number;
+ const comments = await github.rest.issues.listComments({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ issue_number: issueNumber,
+ });
+
+ // Find the last comment from hudi-bot containing the Azure CI
report
+ const botComments = comments.data.filter(comment =>
comment.user.login === botUsername);
+ const lastComment = botComments.pop();
+
+ if (lastComment) {
+ const reportPrefix = '${lastCommitHash} Azure: '
+ const successReportString = '${reportPrefix}[SUCCESS]'
+ const failureReportString = '${reportPrefix}[FAILURE]'
+ if (lastComment.body.includes(reportPrefix)) {
+ if (lastComment.body.includes(successReportString)) {
+ console.log(`Azure CI succeeded on the latest commit of the
PR.`);
+ return true;
+ } else if (lastComment.body.includes(failureReportString)) {
+ console.log(`Azure CI failed on the latest commit of the
PR.`);
+ core.setFailed("Azure CI failed on the latest commit of the
PR.");
+ return false;
+ } else {
+ console.log(`Azure CI is in progress on the latest commit of
the PR.`);
+ core.setFailed("Azure CI is in progress on the latest commit
of the PR.");
+ return false;
+ }
+ } else {
+ console.log(`No Azure CI report on the latest commit of the
PR.`);
+ core.setFailed("No Azure CI report on the latest commit of the
PR.");
+ return false;
+ }
+ } else {
+ console.log(`Azure CI report does not seem to be ready yet.`);
+ core.setFailed("Azure CI report does not seem to be ready yet.");
+ return false;
+ }
+ env:
+ GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}