Help Center/ CodeArts Pipeline/ User Guide/ Reference/ Pipeline Contexts/ Example 1: Using an Expression to Specify the Execution Condition
Updated on 2024-12-16 GMT+08:00

Example 1: Using an Expression to Specify the Execution Condition

You can reference contexts with expressions to specify the execution condition of a job. An expression can be any combination of contexts, operators, functions, or literals. Contexts can be accessed programmatically with expressions, so information such as pipeline runs, sources, variables, and jobs can be transferred within a pipeline.

Figure 1 Expressions

Example:

The following expression shows that a job runs only when the running branch of the specified code source is master.

${{ sources.my_repo.target_branch == 'master' }}
  • Pipeline contexts
  • Operator
    The following table lists the operators that can be used in expressions.
    Table 1 Operators

    Operator

    Description

    .

    Attribute reference. For example, the ${{ pipeline.trigger_type }} expression can be used to obtain the trigger type.

    !

    False. For example, the ${{ !startsWith(sources.my_repo.target_branch, 'release') }} can be used to check whether the branch of the pipeline's code source does not start with "release".

    ==

    Equal. For example, the ${{ pipeline.trigger_type == 'Manual' }} expression can be used to check whether a pipeline is triggered manually.

    !=

    Not equal. For example, the ${{ pipeline.trigger_type != 'Manual' }} expression can be used to check whether a pipeline is not triggered manually.

    &&

    And. For example, the ${{ pipeline.trigger_type == 'Manual' && sources.my_repo.target_branch == 'master' }} expression can be used to check whether a pipeline is triggered manually and the branch of the pipeline code source is master.

    ||

    Or. For example, the ${{ pipeline.trigger_type == 'Manual' || sources.my_repo.target_branch == 'master' }} expression can be used to check whether a pipeline is triggered manually or the branch of the pipeline code source is master.

  • Function

    The following table lists the functions that can be used in expressions.

    Table 2 Built-in functions

    Function

    Description

    contains

    • Format

      contains(search, item)

    • Description

      If search contains item, this function returns true.

      • If search is an array and item is an element in the array, this function returns true.
      • If search is a string and item is a substring of search, the function returns true.
    • Example

      contains('abc', 'bc') returns true.

    startsWith

    • Format

      startsWith(searchString, searchValue)

    • Description

      If searchString starts with searchValue, this function returns true.

    • Example

      startsWith('abc', 'ab') returns true.

    endsWith

    • Format

      endsWith(searchString, searchValue)

    • Description

      If searchString ends with searchValue, this function returns true.

    • Example

      endsWith('abc', 'bc') returns true.

    Object filter

    You can use the * syntax to apply a filter and select matching items in a collection.

    The following is the context of a job execution.

    {
        "check_job": {
            "status": "COMPLETED",
            "metrics": {
                "critical": "0",
                "major": "0"
            }
        },
        "demo_job": {
            "status": "FAILED"
        }
    }
    • jobs.*.status indicates the status of all jobs. Therefore, ['COMPLETED', 'FAILED'] is returned.
    • Filters can be used together with the contains function. For example, contains(jobs.*.status, 'FAILED') will return true because jobs.*.status contains FAILED.