Skip to content

Commit 68baad1

Browse files
committed
creating auto format action
1 parent fae94cf commit 68baad1

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

.github/workflows/auto-format.yml

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
name: Auto Format
2+
on:
3+
pull_request_target:
4+
types: [opened, synchronize]
5+
workflow_dispatch:
6+
7+
jobs:
8+
auto-format:
9+
runs-on: ubuntu-latest
10+
container: osodevops/build-harness:latest
11+
steps:
12+
# Checkout the pull request branch
13+
# "An action in a workflow run can’t trigger a new workflow run. For example, if an action pushes code using
14+
# the repository’s GITHUB_TOKEN, a new workflow will not run even when the repository contains
15+
# a workflow configured to run when push events occur."
16+
# However, using a personal access token will cause events to be triggered.
17+
# We need that to ensure a status gets posted after the auto-format commit.
18+
# We also want to trigger tests if the auto-format made no changes.
19+
- uses: actions/checkout@v2
20+
if: github.event.pull_request.state == 'open'
21+
name: Privileged Checkout
22+
with:
23+
token: ${{ secrets.TOPBOT_PUBLIC_REPO_ACCESS_TOKEN }}
24+
repository: ${{ github.event.pull_request.head.repo.full_name }}
25+
# Check out the PR commit, not the merge commit
26+
# Use `ref` instead of `sha` to enable pushing back to `ref`
27+
ref: ${{ github.event.pull_request.head.ref }}
28+
29+
# Do all the formatting stuff
30+
- name: Auto Format
31+
if: github.event.pull_request.state == 'open'
32+
shell: bash
33+
env:
34+
GITHUB_TOKEN: "${{ secrets.TOPBOT_PUBLIC_REPO_ACCESS_TOKEN }}"
35+
run: make BUILD_HARNESS_PATH=/build-harness PACKAGES_PREFER_HOST=true -f /build-harness/templates/Makefile.build-harness pr/readme/host
36+
37+
# Commit changes (if any) to the PR branch
38+
- name: Commit changes to the PR branch
39+
if: github.event.pull_request.state == 'open'
40+
shell: bash
41+
id: commit
42+
env:
43+
SENDER: ${{ github.event.sender.login }}
44+
run: |
45+
set -x
46+
output=$(git diff --name-only)
47+
48+
if [ -n "$output" ]; then
49+
echo "Changes detected. Pushing to the PR branch"
50+
git config --global user.name 'osotopbot'
51+
git config --global user.email '[email protected]'
52+
git add -A
53+
git commit -m "Auto Format"
54+
# Prevent looping by not pushing changes in response to changes from cloudpossebot
55+
[[ $SENDER == "osotopbot" ]] || git push
56+
# Set status to fail, because the push should trigger another status check,
57+
# and we use success to indicate the checks are finished.
58+
printf "::set-output name=%s::%s\n" "changed" "true"
59+
exit 1
60+
else
61+
printf "::set-output name=%s::%s\n" "changed" "false"
62+
echo "No changes detected"
63+
fi

0 commit comments

Comments
 (0)