gcloud setup build pipeline - devonfw/hangar GitHub Wiki

Setting up a Build pipeline on Google Cloud

In this section we will create a build pipeline for compiling project code. This pipeline will be configured to be triggered every time there is a commit to the Cloud Source Repository, regardless of which branch it is made on.

The creation of the pipeline will follow the project workflow, so a new branch named feature/build-pipeline will be created and the YAML file for the pipeline will be pushed to it.

Then, the new branch will be merged into the appropriate branch (provided in -b flag).

The script located at /scripts/pipelines/gcloud/pipeline_generator.sh will automatically create this new branch, create a build pipeline based on a YAML template appropriate for the project programming language or framework, create the Pull Request and, if it is possible, merge this new branch into the specified branch.

Prerequisites

This script will commit and push the corresponding YAML template into your repository, so please be sure your local repository is up-to-date (i.e you have pulled latest changes with git pull).

Creating the pipeline using provided script

Usage

pipeline_generator.sh \
  -c <config file path> \
  -n <{pipeline_type} name> \
  -l <language or framework> \
  -d <project local path> \
  [--language-version <version>] \
  [--registry-location <artifact registry>] \
  [-t <target-directory>] \
  [-b <branch>] \
  [-m <machine type for {pipeline_type} runner>]
  [--env-vars <env vars list>]
  [--secret-vars <secret vars list>]
Note
The config file for the build pipeline is located at /scripts/pipelines/gcloud/templates/build/build-pipeline.cfg.

Flags

-c, --config-file        [Required] Configuration file containing {pipeline_type} definition.
-n, --pipeline-name      [Required] Name that will be set to the {pipeline_type}.
-l, --language           [Required] Language or framework of the project.
-d, --local-directory    [Required] Local directory of your project.
    --language-version   [Required, if Flutter or Python] Language or framework version.
    --registry-location  [Required, if Flutter] Artifact registry location.
-t, --target-directory              Target directory of build process. Takes precedence over the language/framework default one.
-b, --target-branch                 Name of the branch to which the Pull Request will target. PR is not created if the flag is not provided.
-m, --machine-type                  Machine type for {pipeline_type} runner. Accepted values: E2_HIGHCPU_8, E2_HIGHCPU_32, N1_HIGHCPU_8, N1_HIGHCPU_32.
    --env-vars                      List of environment variables to be made available in pipeline. Syntax: "var1=val1 var2=val2 ...".
    --secret-vars                   List of environment variables (saved as secrets in Secret Manager) to be made available in pipeline. Syntax: "var1=val1 var2=val2 ...".

Examples

Quarkus project

Quarkus native project
./pipeline_generator.sh -c ./templates/build/build-pipeline.cfg -n quarkus-project-build -l quarkus -d C:/Users/$USERNAME/Desktop/quarkus-project -b develop {openBrowserFlag}
Quarkus project using JVM
./pipeline_generator.sh -c ./templates/build/build-pipeline.cfg -n quarkus-project-build -l quarkus-jvm -d C:/Users/$USERNAME/Desktop/quarkus-project -b develop {openBrowserFlag}

Node.js project

./pipeline_generator.sh -c ./templates/build/build-pipeline.cfg -n node-project-build -l node -d C:/Users/$USERNAME/Desktop/node-project -b develop {openBrowserFlag}

Angular project

./pipeline_generator.sh -c ./templates/build/build-pipeline.cfg -n angular-project-build -l angular -d C:/Users/$USERNAME/Desktop/angular-project -b develop {openBrowserFlag}

Python project

./pipeline_generator.sh -c ./templates/build/build-pipeline.cfg -n python-project-build -l python -d C:/Users/$USERNAME/Desktop/python-project -b develop --language-version 3.10 {openBrowserFlag}

Flutter project

./pipeline_generator.sh -c ./templates/build/build-pipeline.cfg -n flutter-project-build -l flutter -d C:/Users/$USERNAME/Desktop/flutter-project -b develop --language-version 3.3.4 --registry-location europe {openBrowserFlag}
⚠️ **GitHub.com Fallback** ⚠️