github.com/upcmd/up@v0.8.1-0.20230108151705-ad8b797bf04f/tests/functests/e0166.yml (about)

     1  notes:
     2    - documented in docs
     3  
     4  scopes:
     5    - name: global
     6      vars:
     7        my_docker_ep: gitlab/mydocker_repo/jenkins
     8      dvars:
     9        - name: ENV
    10          value: dev1
    11          flags:
    12            - envVar
    13  
    14        - name: JENKINS_NAME
    15          value: '{{ env "JENKINS_NAME" |validateMandatoryFailIfNone "JENKINS_NAME" }}'
    16  
    17        - name: JENKINS_MASTER_DOCKER_IMAGE_URL
    18          value: '{{.my_docker_ep}}/master'
    19          flags:
    20            - envVar
    21  
    22        - name: JENKINS_SLAVE_DOCKER_IMAGE_URL
    23          value: '{{.my_docker_ep}}/slave'
    24          flags:
    25            - envVar
    26  
    27        - name: JENKINS_EXPECTED_VERSION
    28          value: 2.222.4
    29          flags:
    30            - envVar
    31  
    32    - name: nonprod
    33      members:
    34        - dev
    35        - staging
    36      dvars:
    37        - name: ASSUME_ROLE_ARN
    38          value: arn:aws:iam::123456789012:role/my-nonn-prod-iam-role
    39          flags:
    40            - envVar
    41        - name: JENKINS_PVT_USERNAME
    42          value: svc_go
    43          flags:
    44            - envVar
    45  
    46    - name: prod
    47      members:
    48        - dr
    49        - prod
    50      vars:
    51        host_alias: prod
    52      dvars:
    53        - name: ENV
    54          value: prod
    55          flags:
    56            - envVar
    57        - name: ASSUME_ROLE_ARN
    58          value: arn:aws:iam::998654321012:role/my-nonn-prod-iam-role
    59          flags:
    60            - envVar
    61  
    62        - name: JENKINS_USERNAME
    63          value: my_jenkins_prod_user
    64          flags:
    65            - envVar
    66  
    67    - name: staging
    68      dvars:
    69        - name: ENV
    70          value: staging
    71          flags:
    72            - envVar
    73  
    74  dvars:
    75    - name: JENKINS_URL
    76      desc: |
    77        auto render to a specific valid url
    78      value: '{{ printf "%s-%s.myjenkins.xyz" .JENKINS_NAME .ENV}}'
    79      flags:
    80        - envVar
    81  
    82  eprofiles:
    83    - name: my-jenkins-local-test
    84      desc: |
    85        a test profile for test in local machine
    86      instance: staging
    87      evars:
    88        - name: JENKINS_NAME
    89          value: my-jenkins-test
    90  
    91        - name: SKIP_EBS_BACKUP
    92          value: "true"
    93  
    94    - name: jenkins-prod-gocd
    95      instance: prod
    96      desc: |
    97        a profile for jenkins prod stack creation in GoCD
    98      evars:
    99        - name: JENKINS_NAME
   100          value: jenkins-prod
   101  
   102        - name: SKIP_EBS_BACKUP
   103          value: "false"
   104  
   105    - name: jenkins-dev
   106      instance: dev
   107      desc: |
   108        all other tests are running in jenkins slave
   109      evars:
   110        - name: JENKINS_NAME
   111          value: dev-jenkins
   112  
   113        - name: SKIP_EBS_BACKUP
   114          value: "true"
   115  
   116  tasks:
   117    -
   118      name: task
   119      desc: main entry
   120      task:
   121        - func: cmd
   122          do:
   123            - name: inspect
   124              cmd:
   125                - exec_vars
   126                - exec_base_env_vars_configured
   127  
   128            - name: assert
   129              cmd:
   130                - '{{eq .JENKINS_NAME "my-jenkins-test" }}'
   131                - '{{eq .JENKINS_URL "my-jenkins-test-staging.myjenkins.xyz" }}'
   132                - '{{eq .JENKINS_SLAVE_DOCKER_IMAGE_URL "gitlab/mydocker_repo/jenkins/slave" }}'
   133  
   134        -
   135          func: shell
   136          dvars:
   137            - name: env_export_test
   138              value: '{{envExport "exec_env_vars_configured" ""}}'
   139              flags:
   140                - v
   141          desc: main job
   142          do:
   143            - 'echo """{{.env_export_test}}"""'
   144  
   145        -
   146          func: shell
   147          do:
   148            - echo "demo conditionally quit"
   149          if: '{{ne .ENV "prod"}}'
   150          else:
   151            - func: cmd
   152              do:
   153                - name: print
   154                  cmd: not allow to touch prod
   155                - name: exit
   156  
   157        - func: block
   158          desc: |
   159            conditionally exec in gocd / jenkins / local
   160            obtain the env var from the build environment, it could be either GoCD agent, or a Jenkins slave
   161            it does not matter if the agent is in a EC2 instance, or a docker, or inside of k8s pod, as long as the env var used as indication is right for your case, below is just for example
   162          dvars:
   163            - name: gocd_marker
   164              value: '{{ env "GOCD_AGENT_VERSION" }}'
   165              flags:
   166                - taskScope
   167                - v
   168            - name: jenkins_marker
   169              value: '{{ env "JENKINS_20_AGENT_SERVICE_PORT" }}'
   170              flags:
   171                - taskScope
   172                - v
   173          if: '{{or (ne .gocd_marker "None") (ne .jenkins_marker "None")}}'
   174          do:
   175            -
   176              func: shell
   177              desc: |
   178                run in gocd if it detects there is a GoCD marker
   179                also it runs the piped in comand as prior script before real provision step
   180              do: |
   181                #{{.up_runtime_task_pipe_in_content}}
   182                echo "make my_jenkins_stack_creation"
   183              if: '{{(ne .gocd_marker "None") }}'
   184            -
   185              func: shell
   186              desc: |
   187                run in jenkins
   188                it use different prior step to assume role
   189              do: |
   190                echo "source ./assume_role.sh"
   191                echo "make my_jenkins_stack_creation"
   192              if: '{{(ne .jenkins_marker "None")}}'
   193          else:
   194            -
   195              func: shell
   196              do:
   197                - echo "starting my real stack creation work"
   198                - echo "this job is running in my local machine"
   199                - echo "make my_jenkins_stack_creation"