github.com/snyk/vervet/v5@v5.11.1-0.20240202085829-ad4dd7fb6101/.circleci/config.yml (about)

     1  version: 2.1
     2  
     3  orbs:
     4    go: circleci/go@1.9.0
     5    publish: snyk/publish@1
     6    snyk: snyk/snyk@1
     7  
     8  defaults: &defaults
     9    resource_class: small
    10    working_directory: ~/vervet
    11    docker:
    12      - image: cimg/go:1.21-node
    13  
    14  test_vu_defaults: &test_vu_defaults
    15    resource_class: medium
    16    working_directory: ~/vervet/vervet-underground
    17    machine:
    18      image: ubuntu-2004:2023.10.1
    19  
    20  vu_defaults: &vu_defaults
    21    resource_class: small
    22    working_directory: ~/vervet/vervet-underground
    23    docker:
    24      - image: cimg/go:1.21-node
    25    environment:
    26      DOCKER_BUILDKIT: 1
    27  
    28  ignore_main_branch_filter: &ignore_main_branch_filter
    29    filters:
    30      branches:
    31        ignore:
    32          - main
    33  
    34  only_main_branch_filter: &only_main_branch_filter
    35    filters:
    36      branches:
    37        only:
    38          - main
    39  
    40  commands:
    41    gcr_auth:
    42      description: Auth GCR
    43      steps:
    44        - setup_remote_docker
    45        - run:
    46            name: GCR auth
    47            command: echo $GCLOUD_GCR_BUILDER | docker login -u _json_key --password-stdin https://gcr.io/snyk-main
    48  
    49    setup_build_remote_docker:
    50      steps:
    51        - setup_remote_docker:
    52            docker_layer_caching: false
    53  
    54  jobs:
    55    test:
    56      <<: *defaults
    57      steps:
    58        - run:
    59            name: Install spectral
    60            command: sudo npm install -g @stoplight/spectral@6.5.0
    61        - checkout
    62        - go/mod-download-cached
    63        - run:
    64            name: Verify testdata/output up to date
    65            command: go generate ./testdata
    66        - run:
    67            name: Run tests
    68            command: go test ./... -count=1
    69  
    70    test-vu:
    71      <<: *test_vu_defaults
    72      steps:
    73        - checkout:
    74            path: ~/vervet
    75        - go/install:
    76            version: 1.21.3
    77        - go/mod-download-cached
    78        - run:
    79            command: make test
    80  
    81    lint:
    82      docker:
    83        - image: golangci/golangci-lint:v1.51.0
    84      steps:
    85        - checkout
    86        - run:
    87            command: golangci-lint run -v ./...
    88  
    89    lint-vu:
    90      docker:
    91        - image: golangci/golangci-lint:v1.51.0
    92      steps:
    93        - checkout
    94        - run:
    95            command: cd vervet-underground && golangci-lint run -v ./...
    96  
    97    build-vu:
    98      <<: *vu_defaults
    99      steps:
   100        - checkout:
   101            path: ~/vervet
   102        - gcr_auth
   103        - run:
   104            name: Build Docker Image
   105            command: make build-docker
   106        - publish/save-image:
   107            image_name: vervet-underground
   108  
   109    scan-vu-container:
   110      <<: *vu_defaults
   111      steps:
   112        - setup_build_remote_docker
   113        - publish/load-image:
   114            image_name: vervet-underground
   115        - snyk/scan:
   116            organization: platform-extensibility
   117            command: container test
   118            fail-on-issues: true
   119            severity-threshold: high
   120            monitor-on-build: false
   121            docker-image-name: vervet-underground:${CIRCLE_WORKFLOW_ID}
   122            token-variable: MONITOR_SNYK_TOKEN
   123  
   124    release:
   125      <<: *defaults
   126      steps:
   127        - checkout
   128        - run: |-
   129            go install github.com/caarlos0/svu@latest
   130            export VERSION=$(svu next)
   131            if [ -z $(git tag -l ${VERSION}) ]; then
   132              ./scripts/dist.bash
   133              ./scripts/release.bash
   134            fi
   135  
   136  workflows:
   137    version: 2
   138    CI:
   139      jobs:
   140        - test:
   141            name: Test
   142            <<: *ignore_main_branch_filter
   143  
   144        - test-vu:
   145            name: Test VU
   146            <<: *ignore_main_branch_filter
   147            
   148        - lint:
   149            name: Lint
   150            <<: *ignore_main_branch_filter
   151  
   152        - lint-vu:
   153            name: Lint VU
   154            <<: *ignore_main_branch_filter
   155  
   156        - build-vu:
   157            name: Build Docker Image
   158            context: snyk-docker-build
   159            requires:
   160              - Test VU
   161              - Lint VU
   162  
   163        - scan-vu-container:
   164            name: Scan Container
   165            context:
   166              - team-extensibility
   167            requires:
   168              - Build Docker Image
   169  
   170    CD:
   171      jobs:
   172        - test:
   173            name: Test
   174            <<: *only_main_branch_filter
   175            
   176        - build-vu:
   177            name: Build Docker Image
   178            context: snyk-docker-build
   179            <<: *only_main_branch_filter
   180  
   181        - release:
   182            name: Release
   183            context: nodejs-app-release
   184            requires:
   185              - Test
   186  
   187        - publish/publish:
   188            name: Publish Docker Image
   189            image_name: vervet-underground
   190            fedramp: "no"
   191            snyk_organization: platform-extensibility
   192            snyk_token_variable: MONITOR_SNYK_TOKEN
   193            snyk_project_tags: component=pkg:github/snyk/vervet-underground@main,component=pkg:github/snyk/vervet@main
   194            context:
   195              - snyk-docker-build
   196              - infra-publish-orb
   197              - team-extensibility
   198              - snyk-bot-slack
   199            requires:
   200              - Build Docker Image