~ruther/qmk_firmware

ref: 9777b5f2c3e5fbd37a45d39a2662b46327f72fdd qmk_firmware/.github/workflows/ci_build_major_branch.yml -rw-r--r-- 4.0 KiB
9777b5f2 — Rutherther chore: update drawer config 8 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
name: CI Build Major Branch

permissions:
  contents: read
  actions: write

on:
  push:
    branches: [master, develop]
  workflow_dispatch:
    inputs:
      branch:
        type: choice
        description: "Branch to build"
        options: [master, develop]

env:
  # https://docs.github.com/en/actions/learn-github-actions/usage-limits-billing-and-administration#usage-limits
  # We've decreased it from 20 to 15 to allow for other GHA to run unimpeded
  CONCURRENT_JOBS: 15

# Ensure we only have one build running at a time, cancelling any active builds if a new commit is pushed to the respective branch
concurrency:
  group: ci_build-${{ github.event.inputs.branch || github.ref_name }}
  cancel-in-progress: true

jobs:
  determine_concurrency:
    name: "Determine concurrency"
    if: github.repository == 'qmk/qmk_firmware'
    runs-on: ubuntu-latest
    container: ghcr.io/qmk/qmk_cli

    outputs:
      slice_length: ${{ steps.generate_slice_length.outputs.slice_length }}

    steps:
      - name: Install prerequisites
        run: |
          apt-get update
          apt-get install -y jq

      - name: Disable safe.directory check
        run: |
          git config --global --add safe.directory '*'

      - name: Checkout QMK Firmware
        uses: actions/checkout@v4

      - name: Determine concurrency
        id: generate_slice_length
        run: |
          target_count=$( {
            qmk find -km default 2>/dev/null
            qmk find -km via 2>/dev/null
          } | sort | uniq | wc -l)
          slice_length=$((target_count / ($CONCURRENT_JOBS - 1))) # Err on the side of caution as we're splitting default and via
          echo "slice_length=$slice_length" >> $GITHUB_OUTPUT

  build_targets:
    name: "Compile keymap ${{ matrix.keymap }}"
    needs: determine_concurrency
    strategy:
      fail-fast: false
      matrix:
        keymap: [default, via]
    uses: ./.github/workflows/ci_build_major_branch_keymap.yml
    with:
      branch: ${{ inputs.branch || github.ref_name }}
      keymap: ${{ matrix.keymap }}
      slice_length: ${{ needs.determine_concurrency.outputs.slice_length }}
    secrets: inherit

  rollup_tasks:
    name: "Consolidation"
    needs: build_targets
    runs-on: ubuntu-latest

    steps:
      - name: Download firmwares
        uses: actions/download-artifact@v4
        with:
          pattern: firmware-*
          path: firmwares
          merge-multiple: true

      - name: Upload to https://ci.qmk.fm/${{ inputs.branch || github.ref_name }}/${{ github.sha }}
        uses: jakejarvis/s3-sync-action@master
        with:
          args: --acl public-read --follow-symlinks --delete
        env:
          AWS_S3_BUCKET: ${{ vars.CI_QMK_FM_SPACES_BUCKET }}
          AWS_ACCESS_KEY_ID: ${{ secrets.CI_QMK_FM_SPACES_KEY }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.CI_QMK_FM_SPACES_SECRET }}
          AWS_REGION: ${{ vars.CI_QMK_FM_SPACES_REGION }}
          AWS_S3_ENDPOINT: ${{ vars.CI_QMK_FM_SPACES_ENDPOINT }}
          SOURCE_DIR: firmwares
          DEST_DIR: ${{ inputs.branch || github.ref_name }}/${{ github.sha }}

      - name: Upload to https://ci.qmk.fm/${{ inputs.branch || github.ref_name }}/latest
        uses: jakejarvis/s3-sync-action@master
        with:
          args: --acl public-read --follow-symlinks --delete
        env:
          AWS_S3_BUCKET: ${{ vars.CI_QMK_FM_SPACES_BUCKET }}
          AWS_ACCESS_KEY_ID: ${{ secrets.CI_QMK_FM_SPACES_KEY }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.CI_QMK_FM_SPACES_SECRET }}
          AWS_REGION: ${{ vars.CI_QMK_FM_SPACES_REGION }}
          AWS_S3_ENDPOINT: ${{ vars.CI_QMK_FM_SPACES_ENDPOINT }}
          SOURCE_DIR: firmwares
          DEST_DIR: ${{ inputs.branch || github.ref_name }}/latest

      - name: Check if failure marker file exists
        id: check_failure_marker
        uses: andstor/file-existence-action@v3
        with:
          files: firmwares/.failed

      - name: Fail build if needed
        if: steps.check_failure_marker.outputs.files_exists == 'true'
        run: |
          # Exit with failure if the compilation stage failed
          exit 1
Do not follow this link