diff --git a/.github/workflows/chunk.yml b/.github/workflows/chunk.yml new file mode 100644 index 0000000..da80436 --- /dev/null +++ b/.github/workflows/chunk.yml @@ -0,0 +1,28 @@ +--- + +on: + push: + branches: + - 'main' + schedule: + # Runs every 4 hours + - cron: "0 */4 * * *" + workflow_dispatch: + +jobs: + chunk-publish-workflows: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Trigger workflows for each chunk + run: | + jq '{plugins: .plugins | _nwise(256)}' plugins.json | jq -s '{chunks: .}' > chunks.json + # The above command outputs a nested list + CHUNK_COUNT=$(jq '.chunks | length' chunks.json) + for ((i = 0 ; i < CHUNK_COUNT ; i++ )); do + PAYLOAD=$(jq -c '.chunks[$i]' chunks.json) + curl -X POST -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ + -H "Accept: application/vnd.github+json" \ + "https://api.github.com/repos/nvim-neorocks/nurr/dispatches" \ + -d '{"event_type":"chunked_trigger","client_payload":$PAYLOAD}' + done diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index c09865f..9368571 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,13 +1,8 @@ name: Publish semver tags to LuaRocks on: - push: - branches: - - 'main' - schedule: - # Runs every 4 hours - - cron: "0 */4 * * *" - workflow_dispatch: + repository_dispatch: + types: [chunked_trigger] jobs: generate-matrix: @@ -17,7 +12,7 @@ jobs: steps: - uses: actions/checkout@v4 - id: set-matrix - run: echo "MATRIX=$(cat ./plugins.json | tr -d '\n\r')" >> $GITHUB_OUTPUT + run: echo "MATRIX=${{ github.event.client_payload }}" >> $GITHUB_OUTPUT publish: runs-on: ubuntu-latest needs: generate-matrix diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8f923f1 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +chunks.json