diff --git a/action.yml b/action.yml index 807cbfd..f9f0263 100644 --- a/action.yml +++ b/action.yml @@ -13,6 +13,9 @@ inputs: title: default: '[bot]: flake bump' required: false + post-workflow: + default: '' + required: false runs: using: "composite" @@ -29,7 +32,7 @@ runs: run: | BRANCH="flake-update-$(date +%s)" echo "Creating branch $BRANCH" - git fetch --all + # git fetch --all git checkout -b "$BRANCH" echo branch=$BRANCH >> $GITHUB_OUTPUT - name: "Check for updates" @@ -37,8 +40,9 @@ runs: shell: bash run: | echo "Checking for flake updates" - nix flake update - if git status --porcelain; then + cp flake.lock test.lock + nix flake update --output-lock-file test.lock + if ! (diff -q flake.lock test.lock); then echo change=true >> $GITHUB_OUTPUT else echo change=false >> $GITHUB_OUTPUT @@ -48,26 +52,27 @@ runs: id: push if: steps.changes.outputs.change == 'true' run: | - echo "Creating PR" + echo "Creating PR for branch ${{ steps.clone.outputs.branch }}" + mv test.lock flake.lock git add flake.lock git commit -m "${{ inputs.title }}" - git push --force-with-lease origin "${{ steps.clone.outputs.clone.branch }}" + git push --force-with-lease origin "${{ steps.clone.outputs.branch }}" RESPONSE=$(curl -X 'POST' \ "$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/pulls" \ -H 'accept: application/json' \ -H "Authorization: token $GITHUB_TOKEN" \ -H 'Content-type: application/json' \ - -d "{ + -d '{ "base": "${{ inputs.base }}", - "head": "${{ steps.clone.outputs.clone.branch }}", + "head": "${{ steps.clone.outputs.branch }}", "title": "automated flake update" - }") + }') NUMBER=$(echo $RESPONSE | jq -r '.number') echo "Created PR $NUMBER." echo NUMBER=$NUMBER >> $GITHUB_OUTPUT - - name: "Set automerge on PR" + - name: "Set automerge on PR and run workflow" shell: bash if: steps.changes.outputs.change == 'true' && steps.push.outputs.number != 'null' run: | @@ -82,3 +87,17 @@ runs: "delete_branch_after_merge": true }') echo $RESPONSE + + - name: "Execute workflow on PR" + shell: bash + if: inputs.post-workflow != '' + run: | + curl -X 'POST' \ + "$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/actions/workflows/${{ inputs.post-workflow }}/dispatches" \ + -H 'accept: application/json' \ + -H "Authorization: token $GITHUB_TOKEN" \ + -H 'Content-Type: application/json' \ + -d "{ + \"ref\": \"$(git rev-parse --verify HEAD)\" + }" +