From 7437e6f085c96ef57389c08d4e1214c4a76847ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Mon, 23 Aug 2021 08:56:41 +0200 Subject: Create command-compile.yml --- .github/workflows/command-compile.yml | 117 ++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 .github/workflows/command-compile.yml (limited to '.github') diff --git a/.github/workflows/command-compile.yml b/.github/workflows/command-compile.yml new file mode 100644 index 000000000..090324e98 --- /dev/null +++ b/.github/workflows/command-compile.yml @@ -0,0 +1,117 @@ +name: Compile Command +on: + issue_comment: + types: [created] + +jobs: + init: + runs-on: ubuntu-latest + + # On pull requests and if the comment starts with `/compile` + if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/compile') + + outputs: + git_path: ${{ steps.git-path.outputs.path }} + arg1: ${{ steps.command.outputs.arg1 }} + arg2: ${{ steps.command.outputs.arg2 }} + head_ref: ${{ steps.comment-branch.outputs.head_ref }} + + steps: + - name: Check actor permission + uses: skjnldsv/check-actor-permission@v2 + with: + require: write + + - name: Add reaction on start + uses: peter-evans/create-or-update-comment@v1 + with: + token: ${{ secrets.COMMAND_BOT_PAT }} + repository: ${{ github.event.repository.full_name }} + comment-id: ${{ github.event.comment.id }} + reaction-type: "+1" + + - name: Parse command + uses: skjnldsv/parse-command-comment@master + id: command + + # Init path depending on which command is run + - name: Init path + id: git-path + run: | + if ${{ startsWith(steps.command.outputs.arg1, '/') }}; then + echo "::set-output name=path::${{ github.workspace }}${{steps.command.outputs.arg1}}" + else + echo "::set-output name=path::${{ github.workspace }}${{steps.command.outputs.arg2}}" + fi + + - name: Init branch + uses: xt0rted/pull-request-comment-branch@v1 + id: comment-branch + + process: + runs-on: ubuntu-latest + needs: init + + steps: + - name: Checkout ${{ needs.init.outputs.head_ref }} + uses: actions/checkout@v2 + with: + token: ${{ secrets.COMMAND_BOT_PAT }} + fetch-depth: 0 + ref: ${{ needs.init.outputs.head_ref }} + + - name: Setup git + run: | + git config --local user.email "nextcloud-command@users.noreply.github.com" + git config --local user.name "nextcloud-command" + + - name: Read package.json node and npm engines version + uses: skjnldsv/read-package-engines-version-actions@v1 + id: package-engines-versions + with: + fallbackNode: '^12' + fallbackNpm: '^6' + + - name: Set up node ${{ steps.package-engines-versions.outputs.nodeVersion }} + uses: actions/setup-node@v2 + with: + node-version: ${{ steps.package-engines-versions.outputs.nodeVersion }} + cache: npm + + - name: Set up npm ${{ steps.package-engines-versions.outputs.npmVersion }} + run: npm i -g npm@"${{ steps.package-engines-versions.outputs.npmVersion }}" + + - name: Install dependencies & build + run: | + npm ci + npm run build --if-present + + - name: Commit and push default + if: ${{ needs.init.outputs.arg1 != 'fixup' && needs.init.outputs.arg1 != 'amend' }} + run: | + git add ${{ needs.init.outputs.git_path }} + git commit --signoff -m 'Compile assets' + git push origin ${{ needs.init.outputs.head_ref }} + + - name: Commit and push fixup + if: ${{ needs.init.outputs.arg1 == 'fixup' }} + run: | + git add ${{ needs.init.outputs.git_path }} + git commit --fixup=HEAD --signoff + git push origin ${{ needs.init.outputs.head_ref }} + + - name: Commit and push amend + if: ${{ needs.init.outputs.arg1 == 'amend' }} + run: | + git add ${{ needs.init.outputs.git_path }} + git commit --amend --no-edit --signoff + git push --force origin ${{ needs.init.outputs.head_ref }} + + - name: Add reaction on failure + uses: peter-evans/create-or-update-comment@v1 + if: failure() + with: + token: ${{ secrets.COMMAND_BOT_PAT }} + repository: ${{ github.event.repository.full_name }} + comment-id: ${{ github.event.comment.id }} + reaction-type: "-1" -- cgit v1.2.3