aboutsummaryrefslogblamecommitdiffstats
path: root/.github/workflows/ci.yaml
blob: b70f507a65560747e2d71c26915f8da74f9a7ed4 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14













                                  
                      






                                                        
                               

                                            
                               

















                                            
                                                               

















                                                                  
                         





                                                  
                               

                                            
                               




                                          
                                

























                                                                     


                      


                               
                               

                              
                               




                                           
                                








                        
                                                                                      

                       
                                      





                                                                      
## @todo Describe.

name: Check a ci.erlang.mk project

on:
  workflow_call:

env:
  CI_ERLANG_MK: 1
  AUTO_CI_MASTER: weekly

jobs:

  prepare-unix:
    name: Prepare Unix
    runs-on: ubuntu-latest
    outputs:
      erlang: ${{ steps.versions.outputs.erlang }}
      latest: ${{ steps.latest_version.outputs.latest }}
    steps:

    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Checkout ci.erlang.mk repository
      uses: actions/checkout@v4
      with:
        repository: ninenines/ci.erlang.mk
        path: deps/ci.erlang.mk

    - name: Output Erlang/OTP versions
      id: versions
      run: |
        {
          echo "erlang<<EOF"
          make ci-list | jq -Rn '[inputs]'
          echo EOF
        } >> "$GITHUB_OUTPUT"

    - name: Output latest Erlang/OTP version
      id: latest_version
      run: |
        {
          echo "latest<<EOF"
          make ci-list | grep -v rc | grep -v master | tail -n1
          echo EOF
        } >> "$GITHUB_OUTPUT"

  check:
    name: Unix
    needs: prepare-unix
    strategy:
      fail-fast: false
      matrix:
        erlang: ${{ fromJson(needs.prepare-unix.outputs.erlang) }}
        os: [ubuntu-latest, macos-latest]
    uses: ./.github/workflows/unix-ci.yaml
    with:
      latest: ${{ needs.prepare-unix.outputs.latest }}
      erlang: ${{ matrix.erlang }}
      os: ${{ matrix.os }}

  prepare-windows:
    name: Prepare Windows
    runs-on: windows-latest
    outputs:
      erlang: ${{ steps.versions.outputs.erlang }}
    steps:

    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Checkout ci.erlang.mk repository
      uses: actions/checkout@v4
      with:
        repository: ninenines/ci.erlang.mk
        path: deps/ci.erlang.mk

    - name: Setup MSYS2
      uses: msys2/setup-msys2@v2
      with:
        msystem: mingw64
        update: true
        install: >-
          git
          make
          mingw-w64-x86_64-jq

    - name: Output Erlang/OTP versions
      id: versions
      shell: msys2 {0}
      run: |
        {
          echo "erlang<<EOF"
          make ci-windows-list | jq -Rn '[inputs]'
          echo EOF
        } >> "$GITHUB_OUTPUT"

  test-windows:
    name: Windows
    needs: prepare-windows
    strategy:
      fail-fast: false
      matrix:
        erlang: ${{ fromJson(needs.prepare-windows.outputs.erlang) }}
    runs-on: windows-latest
    env:
      COWBOY_QUICER: 0
      GUN_QUICER: 0
    steps:

    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Install Erlang/OTP
      uses: erlef/setup-beam@v1
      with:
        otp-version: '${{ matrix.erlang }}'
        version-type: loose

    - name: Setup MSYS2
      uses: msys2/setup-msys2@v2
      with:
        msystem: mingw64
        update: true
        install: >-
          git
          make

    - name: Run tests
      shell: msys2 {0}
      run: PATH=$INSTALL_DIR_FOR_OTP/bin:$PATH make -k ci-windows-${{ matrix.erlang }}

    - name: Upload logs
      uses: actions/upload-artifact@v4
      if: always()
      with:
        name: Common Test logs (${{ matrix.erlang }} ${{ runner.os }})
        path: |
          logs/
          !logs/**/log_private