Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 65 additions & 0 deletions .github/remove_cicd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Copyright 2024 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

name: Remove outdated CICD Label

on:
pull_request_target:
types: [synchronize]

permissions:
pull-requests: write
issues: write

jobs:
remove_cicd_label:
if: contains(github.event.pull_request.labels.*.name, 'CICD')
runs-on: ubuntu-latest
steps:
- name: Check if label was added before push
id: check_timing
run: |
# Get push time (commit date of the head SHA)
PUSH_TIME='${{ github.event.pull_request.updated_at }}'
echo "Push time: $PUSH_TIME"

# Get latest CICD labeling event time from the last 100 events
LABEL_TIME=$(gh api graphql -f query='
query($owner: String!, $repo: String!, $pr: Int!) {
repository(owner: $owner, name: $repo) {
pullRequest(number: $pr) {
timelineItems(last: 100, itemTypes: [LABELED_EVENT]) {
nodes {
... on LabeledEvent {
label { name }
createdAt
}
}
}
}
}
}' -f owner=${{ github.repository_owner }} -f repo=${{ github.event.repository.name }} -F pr=${{ github.event.pull_request.number }} \
--jq '.data.repository.pullRequest.timelineItems.nodes | map(select(.label.name == "CICD")) | last | .createdAt')
echo "Label time: $LABEL_TIME"

if [[ -z "$LABEL_TIME" ]]; then
# Label exists on PR (checked by job 'if') but not in last 100 events -> must be very old
echo "should_remove=true" >> "$GITHUB_OUTPUT"
echo "Result: Label found on PR but not in recent timeline events. Assuming it is old."
elif [[ "$LABEL_TIME" < "$PUSH_TIME" ]]; then
echo "should_remove=true" >> "$GITHUB_OUTPUT"
echo "Result: Label added at $LABEL_TIME is older than push at $PUSH_TIME. Removing."
else
echo "should_remove=false" >> "$GITHUB_OUTPUT"
echo "Result: Label added at $LABEL_TIME is newer than or same as push at $PUSH_TIME. Skipping removal."
fi
env:
GITHUB_TOKEN: ${{ github.token }}

- name: Remove outdated CICD label
if: steps.check_timing.outputs.should_remove == 'true'
run: |
gh pr edit ${{ github.event.pull_request.number }} -R ${{ github.repository }} --remove-label "CICD"
env:
GITHUB_TOKEN: ${{ github.token }}
Loading