diff --git a/.github/workflows/autocommit.yml b/.github/workflows/autocommit.yml new file mode 100644 index 0000000..5813112 --- /dev/null +++ b/.github/workflows/autocommit.yml @@ -0,0 +1,68 @@ +name: AutoCommit +on: + workflow_run: + workflows: + - PullRequest + types: + - completed +jobs: + Info: + runs-on: ubuntu-latest + steps: + - name: 'Output Information' + shell: pwsh + run: | + echo 'Event: ${{ github.event.workflow_run.event }}' + echo 'Conclusion: ${{ github.event.workflow_run.conclusion }}' + echo 'Author: ${{ github.event.workflow_run.head_commit.author.email }}' + # - name: 'Log Event Context' + # shell: pwsh + # run: | + # echo '${{ toJson(github.event) }}' + AutoCommit: + runs-on: ubuntu-latest + if: github.event.workflow_run.conclusion == 'success' && (github.event.workflow_run.head_commit.author.email != 'github-actions@github.com' || github.event.workflow_run.head_commit.message != '[GitHub Actions] Update green tests.') + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + repository: ${{ github.event.workflow_run.head_repository.full_name }} + ref: ${{ github.event.workflow_run.head_branch }} + token: ${{ secrets.GH_PUBLIC_REPOSITORIES_TOKEN }} + fetch-depth: 0 + - name: 'Download Green Tests' + uses: actions/github-script@v3.1.0 + with: + script: | + var artifacts = await github.actions.listWorkflowRunArtifacts({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: ${{ github.event.workflow_run.id }}, + }); + var matchArtifact = artifacts.data.artifacts.filter((artifact) => { + return artifact.name == "green-tests" + })[0]; + var download = await github.actions.downloadArtifact({ + owner: context.repo.owner, + repo: context.repo.repo, + artifact_id: matchArtifact.id, + archive_format: 'zip', + }); + var fs = require('fs'); + fs.writeFileSync('${{ github.workspace }}/green-tests.zip', Buffer.from(download.data)); + - name: 'Download artifact' + shell: pwsh + run: Expand-Archive green-tests.zip -DestinationPath './test/EFCore.Jet.FunctionalTests/GreenTests' -Force + - name: 'Commit Green Tests' + shell: pwsh + run: | + if ((git status -s).Length -gt 0) { + git config --global user.name github-actions + git config --global user.email github-actions@github.com + git add ./test/EFCore.Jet.FunctionalTests/GreenTests/ + git status + git commit -m "[GitHub Actions] Update green tests." + git push + } else { + echo 'Nothing to commit.' + } \ No newline at end of file