AQL Examples

JFrog Pipelines Documentation

Products
JFrog Pipelines
Content Type
User Guide
ft:sourceType
Paligo

Example 1: AQL with build name and number

resources:
  - name: myAqlResource
    type: Aql
    configuration:
      sourceArtifactory: myArtifactoryIntegration
      query: items.find({"@build.name":{"$eq":"buildName"}})
  - name: myReleaseBundle
    type: ReleaseBundle
    configuration:
      sourceDistribution: myDistributionIntegration
      name: name
      version: '1'

pipelines:
  - name: pipelineToUpdateResource
    steps:
      - name: myBashStep
        type: Bash
        configuration:
          integrations:
            - name: myArtifactoryIntegration
          outputResources:
            - name: myAqlResource
        execution:
          onExecute:
            - write_output myAqlResource query='items.find({"@build.name":{"$eq":"myBuildName"}})'

  - name: CreateReleaseBundlePipeline
    configuration:
      inputResources:
        - name: myAqlResource
      outputResources:
        - name: myReleaseBundle
    steps:
      - name: myCreateReleaseBundleStep
        type: CreateReleaseBundle
        configuration:
          releaseBundleName: ${JFROG_CLI_BUILD_NAME}
          releaseBundleVersion: ${run_id}
          dryRun: true

Example 2: AQL with file name

resources:
  - name: myAqlResource
    type: Aql
    configuration:
      sourceArtifactory: myArtifactoryIntegration
      query: 'items.find({"$and": [{"repo": {"$eq": "example-repo-local"}}, {"name": {"$match": "myFile.txt"}}]})'

  - name: myReleaseBundle
    type: ReleaseBundle
    configuration:
      sourceDistribution: myDistributionIntegration
      name: name
      version: '1'

pipelines:
  - name: myCreateReleaseBundlePipeline
    steps:
      - name: myCreateReleaseBundleStep
        type: CreateReleaseBundle
        configuration:
          releaseBundleName: ${JFROG_CLI_BUILD_NAME}
          releaseBundleVersion: ${run_id}
          dryRun: false
          inputResources:
            - name: myAqlResource
          outputResources:
            - name: myReleaseBundle

Example 3: AQL to add an additional property to the artifacts in the release bundle

resources:
  - name: myAqlResource
    type: Aql
    configuration:
      sourceArtifactory: myArtifactoryIntegration
      query: 'items.find({"$and": [{"repo": {"$eq": "example-repo-local"}}, {"name": {"$match": "myFile.txt"}}]})'
      addedProperties:
        myRunNumber: ${run_id}

  - name: myReleaseBundle
    type: ReleaseBundle
    configuration:
      sourceDistribution: myDistributionIntegration
      name: name
      version: '1'

pipelines:
  - name: myCreateReleaseBundlePipeline
    steps:
      - name: myCreateReleaseBundleStep
        type: CreateReleaseBundle
        configuration:
          releaseBundleName: ${JFROG_CLI_BUILD_NAME}
          releaseBundleVersion: ${run_id}
          dryRun: false
          inputResources:
            - name: myAqlResource
          outputResources:
            - name: myReleaseBundle

Example 4: AQL to map one path to another

resources:
  - name: myAqlResource
    type: Aql
    configuration:
      sourceArtifactory: myArtifactoryIntegration
      query: 'items.find({"$and": [{"repo": {"$eq": "example-repo-local"}}, {"name": {"$match": "myFile.txt"}}]})'
      mappings:
        - name: myMapping
          input: example-repo-local/myFile.txt
          output: example-repo-local/myFile_2.txt

  - name: myReleaseBundle
    type: ReleaseBundle
    configuration:
      sourceDistribution: myDistributionIntegration
      name: name
      version: '1'

pipelines:
  - name: myCreateReleaseBundlePipeline
    steps:
      - name: myCreateReleaseBundleStep
        type: CreateReleaseBundle
        configuration:
          releaseBundleName: ${JFROG_CLI_BUILD_NAME}
          releaseBundleVersion: ${run_id}
          dryRun: false
          inputResources:
            - name: myAqlResource
          outputResources:
            - name: myReleaseBundle

Example 5: AQL mapping paths using capturing groups in the input

resources:
  - name: myAqlResource
    type: Aql
    configuration:
      sourceArtifactory: myArtifactoryIntegration
      query: 'items.find({"$and": [{"repo": {"$eq": "example-repo-local"}}, {"name": {"$match": "myFile.txt"}}]})'
      mappings:
        - name: myMapping
          input: example-repo-local/myFile.(.*)
          output: example-repo-local/myFile_2.$1

  - name: myReleaseBundle
    type: ReleaseBundle
    configuration:
      sourceDistribution: myDistributionIntegration
      name: name
      version: '1'

pipelines:
  - name: myCreateReleaseBundlePipeline
    steps:
      - name: myCreateReleaseBundleStep
        type: CreateReleaseBundle
        configuration:
          releaseBundleName: ${JFROG_CLI_BUILD_NAME}
          releaseBundleVersion: ${run_id}
          dryRun: false
          inputResources:
            - name: myAqlResource
          outputResources:
            - name: myReleaseBundle

Example 6: pipelines.yml

resources:
  - name: Aql_ART_1
    type: Aql
    configuration:
      sourceArtifactory: myArtifactoryIntegration
      query: items.find({"@build.name":{"$eq":"art"}})
      addedProperties:
        key1: value1
        key2: value2
      mappings:
        - name: mapping1
          input: IN
          output: test1
        - name: mapping2
          input: IN
          output: test2

pipelines:
  - name: pipelines_ART_1
    steps:
      - name: step_ART_1
        type: PowerShell
        configuration:
          nodePool: win_2019
          inputResources:
            - name: Aql_ART_1
              trigger: true
        execution:
          onExecute:
            - write_output "executing step..."