Skip to content
Snippets Groups Projects
ci_dev.gitlab-ci.yml 4.52 KiB
Newer Older
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
stages:
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
  - dev_pulling_repo
  - dev_secrets_in_repo
  - dev_linting_code
  - dev_linting_docker
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
  - docker_login
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed

variables:
  GITLAB_API: "https://labs.etsi.org/api/v4"
  CI_JOB_TOKEN: $CI_JOB_TOKEN
  CI_DEBUG_TRACE: "false"
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
  CI_REGISTRY_USER: $CI_REGISTRY_USER
  CI_REGISTRY_PASSWORD: $CI_REGISTRY_PASSWORD
  CI_REGISTRY: $CI_REGISTRY
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
  CAPIF_DOCKER_REGISTRY: $CAPIF_DOCKER_REGISTRY
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed

Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
.dev_common: &dev_common
  tags:
    - shell

#dev_pulling_repo:
#  stage: dev_pulling_repo
#  script:
#    - git clone https://oauth2:${CI_JOB_TOKEN}@labs.etsi.org/rep/ocf/capif.git
#  <<: *dev_common
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
dev_secrets_in_repo:
  stage: dev_secrets_in_repo
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
  script:
    - |
      pip install trufflehog
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
      cd ../
      trufflehog capif --exclude_paths capif/cicd/exclusions --max_depth=5
#  needs: ["dev_pulling_repo"]
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
  <<: *dev_common
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed

# define the process to do linting code: Sonarque, ruff?
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
dev_linting_code:
  stage: dev_linting_code
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
  script:
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
    - |
      echo "###ruff checks###"
      pip install ruff
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
      ruff check --config cicd/ruff.toml . || true
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
  needs: ["dev_secrets_in_repo"]
  <<: *dev_common
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
dev_linting_docker:
  stage: dev_linting_docker
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
  script:
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
   - |
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
    # Download hadolint binary
    wget https://github.com/hadolint/hadolint/releases/download/v2.8.0/hadolint-Linux-x86_64 -O hadolint

    # Make it executable
    chmod +x hadolint
    
    # Move it to your binaries folder
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
    mv hadolint ../
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
    
    # Verify the installation
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
    ../hadolint --version
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
    #find . -name 'services/Dockerfile*' -exec hadolint --no-fail -f gitlab_codeclimate {} + > docker-lint.json
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed

Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
    ../hadolint services/capif-client/Dockerfile || true
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
    ../hadolint services/vault/Dockerfile || true

    echo "### nginx ###"
    ../hadolint services/nginx/Dockerfile || true

    echo "### register ###"
    ../hadolint services/register/Dockerfile || true

    echo "### TS29222_CAPIF_Access_Control_Policy_API ###"
    ../hadolint services/TS29222_CAPIF_Access_Control_Policy_API/Dockerfile || true

    echo "### TS29222_CAPIF_API_Invoker_Management_API ###"
    ../hadolint services/TS29222_CAPIF_API_Invoker_Management_API/Dockerfile || true

    echo "### TS29222_CAPIF_API_Provider_Management_API ###"
    ../hadolint services/TS29222_CAPIF_API_Provider_Management_API/Dockerfile || true

    echo "### TS29222_CAPIF_Auditing_API ###"
    ../hadolint services/TS29222_CAPIF_Auditing_API/Dockerfile || true

    echo "### TS29222_CAPIF_Discover_Service_API ###"
    ../hadolint services/TS29222_CAPIF_Discover_Service_API/Dockerfile || true

    echo "### TS29222_CAPIF_Events_API ###"
    ../hadolint services/TS29222_CAPIF_Events_API/Dockerfile || true

    echo "### TS29222_CAPIF_Logging_API_Invocation_API ###"
    ../hadolint services/TS29222_CAPIF_Logging_API_Invocation_API/Dockerfile || true

    echo "### TS29222_CAPIF_Publish_Service_API ###"
    ../hadolint services/TS29222_CAPIF_Publish_Service_API/Dockerfile || true

    echo "### TS29222_CAPIF_Routing_Info_API ###"
    ../hadolint services/TS29222_CAPIF_Routing_Info_API/Dockerfile || true

    echo "### TS29222_CAPIF_Security_API ###"
    ../hadolint services/TS29222_CAPIF_Security_API/Dockerfile || true
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
#  artifacts:
#    name: "$CI_JOB_NAME artifacts from $CI_PROJECT_NAME on $CI_COMMIT_REF_SLUG"
#    when: always
#    reports:
#      codequality:
#        - docker-lint.json
#  interruptible: true    
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
  needs: ["dev_linting_code"]
  <<: *dev_common
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed

Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
# NOT WORKING: failed when docker login. seem we need to use docker-in-docker rather than 
# shell alpine runners
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
docker_login:
  stage: docker_login
  image: docker:24.0.9
  services:
    - docker:24.0.9-dind
  tags:
    - docker
  script:
   - |
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
    #docker login --username $CI_REGISTRY_USER --password $CAPIF_DOCKER_REGISTRY $CI_REGISTRY
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
    cd services/capif-client/ && docker build -t capif-client:$CI_COMMIT_REF_SLUG .

    docker push capif-client:$CI_COMMIT_REF_SLUG
Andres Anaya Amariels's avatar
Andres Anaya Amariels committed
## NOT WORKING: failed when build de images - failed to mount overlay: operation not permitted" storage-driver=overlay2
#docker_login:
#  stage: docker_login
#  script:
#   - |
#    #!/bin/bash
#
#    # Update your existing list of packages
#    apk update
#
#    # Install Docker
#    apk add docker
#
#    # Start the Docker service
#    dockerd &
#
#    # Verify the installation
#    docker --version
#
#    echo "### docker login ###"
#    docker login --username $CI_REGISTRY_USER --password $CI_REGISTRY_PASSWORD $CI_REGISTRY
#
#    echo "### build & push capif-client ###"
#    cd services/capif-client/ && docker build -t capif-client:$CI_COMMIT_REF_SLUG .
#
#    docker push capif-client:$CI_COMMIT_REF_SLUG