parallel jobs for a gitlab ci/cd

I would like to run multiple job in parallel in gitlab CI/CD. I have read multiple examples but I cannot figure out what is wrong with my example:

.apk_caching: &apk_caching
    tags:
        - runner_name
    image:
        name: $IMAGE_DOCKER:latest
    <<: *docker_dind_service


.program_ready_template: &program_ready_template
    <<: *apk_caching
    stage: build
    script:
        - python2.7 method.py


build_ubuntu:
  variables:
    program_version : $version
    program_exe : $EXEFILE
    program_installer_path : $EXEPATH
  extends: .program_ready_template
  rules:
    - *rules_schedule
    - *rules_branch
    - if: '$CI_PIPELINE_SOURCE != "web"'
        changes:
        - images/dockerfiles/*
        when: always
    - when: never   
  parallel:
    matrix:
      - version: ["A", "B", "C"]

for version A exefile is “A_EXE” and exe path is “A_PATH”; as following:

  EXEFILE: ["A_EXE", "B_EXE", "C_EXE"]
  EXEPATH: ["A_PATH", "B_PATH", "C_PATH"] 

How can I pass exefile and exepath as well so that I would have three parallel jobs. One for version “A” with EXEFILE of “A_EXE” and EXEPATH of “A_PATH” and so on and so forth.

UPDATE:

this is also returning an invalid yaml file:

parallel:
      matrix:
        - version: "A"
          EXEFILE: "A_EXE"
          EXEPATH: "A_PATH"
        - version: "B"
          EXEFILE: "B_EXE"
          EXEPATH: "B_PATH"
        - version: "C"
          EXEFILE: "C_EXE"
          EXEPATH: "C_PATH"

Hi @hmfkzh

You can use Pipeline Editor in GitLab UI to validate your setup and also to see on which line is the issue.