YAML Schema
The YAML schema for Aql:
resources: - name: <string> type: Aql configuration: sourceArtifactory: <artifactory integration name> query: <string> addedProperties: key1: val1 key2: val2 mappings: - name: mapping1 input: output: - name: mapping2 input: output:
Tags
name
An alphanumeric string (underscores are permitted) that identifies the resource.
type
Must be Aql
for this resource type.
configuration
Specifies all configuration selections for the resource.
Tag | Description | Required/Optional |
---|---|---|
sourceArtifactory | The name of an Artifactory Integration. | Required |
query | An Artifactory Query Language query string. | Required |
addedProperties | List of added properties that will be added to the artifacts after distribution of the release bundle.
| Optional |
| List of mappings that are applied to the artifact paths after distribution of the release bundle.
| Optional |
Examples
- These examples may require an Artifactory Integration and/or an Distribution Integration.
- The Pipelines DSL for this example is available in this repository in the JFrog GitHub account.
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..."