Project creation using Lineaje cloud

Pipeline samples demonstrating the project creation using Lineaje Cloud

Bitbucket pipeline example

Here is an example of bitbucket-pipelines.yml. It assumes a user access token (REPO_ACCESS_TOKEN) is created for the project and stored under BitBucket->Project Settings->Respository Variables

image: atlassian/default-image:3
definitions:
  steps:
    # This step exports all env variables required for other steps and stores it in 
    # build.env. build.env is then made available as artifacts thus making sure all
    # steps have access to these env variables
    - step: &set-version-variables
        name: Set Version Variables
        script:
          - export VERSION=${VERSION:-1.0.0}
          - echo export VERSION=${VERSION} >> build.env
          - export REPO_ACCESS_TOKEN=${REPO_ACCESS_TOKEN}
          - echo export REPO_ACCESS_TOKEN=${REPO_ACCESS_TOKEN} >> build.env
          - echo "Version set to $VERSION"
        artifacts:
          - build.env

    # This step triggers a project creation using Lineaje cloud
    # veecli upload command supports trigeering the project in Lineaje cloud
    # veecli accepts a json file as an input that has all inputs about the source code
    # including the url, version, the branch/tag, type, username/token to access the code
    - step: &generate-project-from-src
        name: generate project from src
        # Use amazon/aws-cli as the base image for this step as we have to issue s3 commands
        image: amazon/aws-cli:latest
        script:
          # Make sure to include build.env
          - source build.env
          # Define your aws access keys. This can come from repository variables for your project
          # This can be configured under BitBucket->Project Settings
          - export AWS_ACCESS_KEY_ID=$PROD_AWS_ACCESS_KEY_ID
          - export AWS_SECRET_ACCESS_KEY=$PROD_AWS_SECRET_ACCESS_KEY
          - export AWS_DEFAULT_REGION=us-west-2
          
          # PROJECT_NAME: The project in Lineaje portal will be shown with PROJECT_NAME
          #   $BITBUCKET_REPO_SLUG is the standard BB variabe that carries the project name
          #   You can change this if required
          # REPO_URL: Repo url that can be accssed via Lineaje Cloud
          # REPO_TYPE: Repo type. Accepted values are "github", "bitbucket", "gitlab", "git"
          # REPO_USER: Username who has access to this repo. This can come from repository variable.
          - export REPO_NAME=$BITBUCKET_REPO_SLUG
          - export PROJECT_NAME="$REPO_NAME-repo"
          - export REPO_URL="https://bitbucket.org/<project>/$REPO_NAME"
          - export REPO_TYPE="bitbucket"
          - export REPO_USER="user-abc"

          # Copy the Lineaje tool from s3 location
          # Refer Pre-Requisites section to learn more.
          - aws s3 cp s3:<bucketname>/lineaje-cli/config.json .
          - aws s3 cp s3:<bucketname>/lineaje-cli/veecli .
          - aws s3 cp s3:<bucketname>/lineaje-cli/input-src.json .
          - chmod +x veecli
          - chmod +w input-src.json

          # install jq. This tool wil be used to edit input-src.json
          - yum update --assumeyes
          - yum install --assumeyes jq

          # update the input-src.json
          # Update the project, version, srcurl, type, matchingref (branch/tag)
          # Update the credentails under repository_access_configs
          - tmp=$(mktemp)
          - jq '.project = env.PROJECT_NAME' input-src.json > "$tmp" && mv "$tmp" input-src.json
          - jq '.version = env.VERSION' input-src.json > "$tmp" && mv "$tmp" input-src.json
          - jq '.inputs[].SrcInfo.srcurl = env.REPO_URL' input-src.json > "$tmp" && mv "$tmp" input-src.json
          - jq '.inputs[].SrcInfo.type = env.REPO_TYPE' input-src.json > "$tmp" && mv "$tmp" input-src.json
          - jq '.inputs[].SrcInfo.matchingref = env.TAG' input-src.json > "$tmp" && mv "$tmp" input-src.json
          - jq '.repository_access_configs[].path = env.REPO_URL' input-src.json > "$tmp" && mv "$tmp" input-src.json
          - jq '.repository_access_configs[].type = env.REPO_TYPE' input-src.json > "$tmp" && mv "$tmp" input-src.json
          - jq '.repository_access_configs[].user_name = env.REPO_USER' input-src.json > "$tmp" && mv "$tmp" input-src.json
          - jq '.repository_access_configs[].token = env.REPO_ACCESS_TOKEN' input-src.json > "$tmp" && mv "$tmp" input-src.json
          - jq . input-src.json
          
          # Trigger the project creation job in Lineaje cloud
          # This step will only trigger the job in Lineaje cloud and return back
          - ./veecli upload --input input-src.json --type cli

pipelines:
  custom:
    deploy-to-prod:
      - step: *set-version-variables
      # Below 4 steps are just for illustration
      #- step: *build-artifacts
      #- step: *upload-artifacts-to-artifactory
      #- step: *push-image-to-prod
      #- step: *tag-branch
      - step: *generate-project-from-src

Last updated