ell-dispatch #659
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: IWD CI | |
| # | |
| # The basic flow of the CI is as follows: | |
| # | |
| # 1. Get all inputs, or default values, and set as 'setup' job output | |
| # 2. Find any cached binaries (hostapd, wpa_supplicant, kernel etc) | |
| # 3. Checkout all dependent repositories | |
| # 4. Tar all local files. This is an unfortunate requirement since github jobs | |
| # cannot share local files. Since there are multiple CI's acting on the same | |
| # set of repositories it makes more sense to retain these and re-download | |
| # them for each CI job. | |
| # 5. Run each CI, currently 'main' and 'musl'. | |
| # * 'main' is the default IWD CI which runs all the build steps as well | |
| # as test-runner | |
| # * 'musl' uses an alpine docker image to test the build on musl-libc | |
| # | |
| # Both CI's use the 'iwd-ci' repo which calls into 'ci-docker'. The | |
| # 'ci-docker' action essentially re-implements the native Github docker | |
| # action but allows arbitrary options to be passed in (e.g. privileged or | |
| # mounting non-standard directories) | |
| # | |
| on: | |
| pull_request: | |
| workflow_dispatch: | |
| inputs: | |
| tests: | |
| description: Tests to run (comma separated, no spaces) | |
| default: all | |
| kernel: | |
| description: Kernel version | |
| default: '6.2' | |
| hostapd_version: | |
| description: Hostapd and wpa_supplicant version | |
| default: 'hostapd_2_11' | |
| ell_ref: | |
| description: ELL reference | |
| default: refs/heads/workflow | |
| repository_dispatch: | |
| types: [ell-dispatch] | |
| jobs: | |
| setup: | |
| runs-on: ubuntu-22.04 | |
| outputs: | |
| tests: ${{ steps.inputs.outputs.tests }} | |
| kernel: ${{ steps.inputs.outputs.kernel }} | |
| hostapd_version: ${{ steps.inputs.outputs.hostapd_version }} | |
| ell_ref: ${{ steps.inputs.outputs.ell_ref }} | |
| repository: ${{ steps.inputs.outputs.repository }} | |
| ref_branch: ${{ steps.inputs.outputs.ref_branch }} | |
| steps: | |
| # | |
| # This makes CI inputs consistent depending on how the CI was invoked: | |
| # * pull_request trigger won't have any inputs, so these need to be set | |
| # to default values. | |
| # * workflow_dispatch sets all inputs from the user input | |
| # * repository_dispatch sets all inputs based on the JSON payload of | |
| # the request. | |
| # | |
| - name: Setup Inputs | |
| id: inputs | |
| run: | | |
| if [ ${{ github.event_name }} == 'workflow_dispatch' ] | |
| then | |
| TESTS=${{ github.event.inputs.tests }} | |
| KERNEL=${{ github.event.inputs.kernel }} | |
| HOSTAPD_VERSION=${{ github.event.inputs.hostapd_version }} | |
| ELL_REF=${{ github.event.inputs.ell_ref }} | |
| REF="$GITHUB_REF" | |
| REPO="$GITHUB_REPOSITORY" | |
| elif [ ${{ github.event_name }} == 'repository_dispatch' ] | |
| then | |
| TESTS=all | |
| KERNEL=5.19 | |
| HOSTAPD_VERSION=09a281e52a25b5461c4b08d261f093181266a554 | |
| ELL_REF=${{ github.event.client_payload.ref }} | |
| REF=$ELL_REF | |
| REPO=${{ github.event.client_payload.repo }} | |
| else | |
| TESTS=all | |
| KERNEL=5.19 | |
| HOSTAPD_VERSION=09a281e52a25b5461c4b08d261f093181266a554 | |
| ELL_REF="refs/heads/workflow" | |
| REF="$GITHUB_REF" | |
| REPO="$GITHUB_REPOSITORY" | |
| fi | |
| # | |
| # Now that the inputs are sorted, set the output of this step to these | |
| # values so future jobs can refer to them. | |
| # | |
| echo "tests=$TESTS" >> $GITHUB_OUTPUT | |
| echo "kernel=$KERNEL" >> $GITHUB_OUTPUT | |
| echo "hostapd_version=$HOSTAPD_VERSION" >> $GITHUB_OUTPUT | |
| echo "ell_ref=$ELL_REF" >> $GITHUB_OUTPUT | |
| echo "repository=$REPO" >> $GITHUB_OUTPUT | |
| echo "ref_branch=$REF" >> $GITHUB_OUTPUT | |
| - name: Cache UML Kernel | |
| id: cache-uml-kernel | |
| uses: actions/cache@v3 | |
| with: | |
| path: ${{ github.workspace }}/cache/um-linux-${{ steps.inputs.outputs.kernel }} | |
| key: um-linux-${{ steps.inputs.outputs.kernel }}_ubuntu22 | |
| - name: Cache Hostapd | |
| id: cache-hostapd | |
| uses: actions/cache@v3 | |
| with: | |
| path: | | |
| ${{ github.workspace }}/cache/hostapd_${{ steps.inputs.outputs.hostapd_version }} | |
| ${{ github.workspace }}/cache/hostapd_cli_${{ steps.inputs.outputs.hostapd_version }} | |
| key: hostapd_${{ steps.inputs.outputs.hostapd_version }}_ssl3 | |
| - name: Cache WpaSupplicant | |
| id: cache-wpas | |
| uses: actions/cache@v3 | |
| with: | |
| path: | | |
| ${{ github.workspace }}/cache/wpa_supplicant_${{ steps.inputs.outputs.hostapd_version }} | |
| ${{ github.workspace }}/cache/wpa_cli_${{ steps.inputs.outputs.hostapd_version }} | |
| key: wpa_supplicant_${{ steps.inputs.outputs.hostapd_version }}_ssl3 | |
| - name: Checkout IWD | |
| uses: actions/checkout@v3 | |
| with: | |
| path: iwd | |
| repository: IWDTestBot/iwd | |
| token: ${{ secrets.ACTION_TOKEN }} | |
| - name: Checkout ELL | |
| uses: actions/checkout@v3 | |
| with: | |
| path: ell | |
| repository: IWDTestBot/ell | |
| ref: ${{ steps.inputs.outputs.ell_ref }} | |
| - name: Checkout CiBase | |
| uses: actions/checkout@v3 | |
| with: | |
| repository: IWDTestBot/cibase | |
| path: cibase | |
| - name: Checkout CI | |
| uses: actions/checkout@v3 | |
| with: | |
| repository: IWDTestBot/iwd-ci | |
| path: iwd-ci | |
| - name: Tar files | |
| run: | | |
| FILES="iwd ell cibase iwd-ci" | |
| if [ "${{ steps.cache-uml-kernel.outputs.cache-hit }}" == 'true' ] | |
| then | |
| FILES+=" ${{ github.workspace }}/cache/um-linux-${{ steps.inputs.outputs.kernel }}" | |
| fi | |
| if [ "${{ steps.cache-hostapd.outputs.cache-hit }}" == 'true' ] | |
| then | |
| FILES+=" ${{ github.workspace }}/cache/hostapd_${{ steps.inputs.outputs.hostapd_version }}" | |
| FILES+=" ${{ github.workspace }}/cache/hostapd_cli_${{ steps.inputs.outputs.hostapd_version }}" | |
| fi | |
| if [ "${{ steps.cache-wpas.outputs.cache-hit }}" == 'true' ] | |
| then | |
| FILES+=" ${{ github.workspace }}/cache/wpa_supplicant_${{ steps.inputs.outputs.hostapd_version }}" | |
| FILES+=" ${{ github.workspace }}/cache/wpa_cli_${{ steps.inputs.outputs.hostapd_version }}" | |
| fi | |
| tar -cvf archive.tar $FILES | |
| - name: Upload artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: iwd-artifacts | |
| path: | | |
| archive.tar | |
| iwd-alpine-ci: | |
| runs-on: ubuntu-22.04 | |
| needs: setup | |
| steps: | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: iwd-artifacts | |
| - name: Untar | |
| run: tar -xf archive.tar | |
| - name: Modprobe pkcs8_key_parser | |
| run: | | |
| sudo modprobe pkcs8_key_parser | |
| - name: Alpine CI | |
| uses: IWDTestBot/iwd-ci@master | |
| with: | |
| ref_branch: ${{ needs.setup.outputs.ref_branch }} | |
| repository: ${{ needs.setup.outputs.repository }} | |
| github_token: ${{ secrets.ACTION_TOKEN }} | |
| email_token: ${{ secrets.EMAIL_TOKEN }} | |
| patchwork_token: ${{ secrets.PATCHWORK_TOKEN }} | |
| ci: musl | |
| iwd-ci: | |
| runs-on: ubuntu-22.04 | |
| needs: setup | |
| steps: | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: iwd-artifacts | |
| - name: Untar | |
| run: tar -xf archive.tar | |
| - name: Cache UML Kernel | |
| id: cache-uml-kernel | |
| uses: actions/cache@v3 | |
| with: | |
| path: ${{ github.workspace }}/cache/um-linux-${{ needs.setup.outputs.kernel }} | |
| key: um-linux-${{ needs.setup.outputs.kernel }}_ubuntu22 | |
| - name: Cache Hostapd | |
| id: cache-hostapd | |
| uses: actions/cache@v3 | |
| with: | |
| path: | | |
| ${{ github.workspace }}/cache/hostapd_${{ needs.setup.outputs.hostapd_version }} | |
| ${{ github.workspace }}/cache/hostapd_cli_${{ needs.setup.outputs.hostapd_version }} | |
| key: hostapd_${{ needs.setup.outputs.hostapd_version }}_ssl3 | |
| - name: Cache WpaSupplicant | |
| id: cache-wpas | |
| uses: actions/cache@v3 | |
| with: | |
| path: | | |
| ${{ github.workspace }}/cache/wpa_supplicant_${{ needs.setup.outputs.hostapd_version }} | |
| ${{ github.workspace }}/cache/wpa_cli_${{ needs.setup.outputs.hostapd_version }} | |
| key: wpa_supplicant_${{ needs.setup.outputs.hostapd_version }}_ssl3 | |
| - name: Modprobe pkcs8_key_parser | |
| run: | | |
| sudo modprobe pkcs8_key_parser | |
| echo ${{ needs.setup.outputs.ref_branch }} | |
| echo ${{ needs.setup.outputs.repository }} | |
| - name: Run CI | |
| uses: IWDTestBot/iwd-ci@master | |
| with: | |
| ref_branch: ${{ needs.setup.outputs.ref_branch }} | |
| repository: ${{ needs.setup.outputs.repository }} | |
| tests: ${{ needs.setup.outputs.tests }} | |
| kernel: ${{ needs.setup.outputs.kernel }} | |
| hostapd_version: ${{ needs.setup.outputs.hostapd_version }} | |
| github_token: ${{ secrets.ACTION_TOKEN }} | |
| email_token: ${{ secrets.EMAIL_TOKEN }} | |
| patchwork_token: ${{ secrets.PATCHWORK_TOKEN }} | |
| ci: main | |
| - name: Upload Logs | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: test-runner-logs | |
| path: ${{ github.workspace }}/log |