Skip to content

Gitlab CI

Import jobs

---

# gitLab ci stages
stages:

  # deployment
  - "gitleaks"
  - "linting"
  - "deployment"

# include jobs
include:

  # deployment
  - local: ".gitlab/gitleaks.yaml"
  - local: ".gitlab/linting.yaml"
  - local: ".gitlab/deployment.yaml"

Run a docker container

---

# linting
linting:
  stage: "linting"
  image:
    name: "docker.io/pipelinecomponents/ansible-lint:0.79.0"
  rules:

    # run only on push to default branch
    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
    - when: "never"

  # start linting
  script:
    - "ansible-lint -c .ansible-lint ."

Run a SSH command

---

# deploy ansible code
deployment:
  stage: "deployment"
  image: "cr.simoncor.net/siempie/ssh-client:v25.06.03"
  rules:

    # run only on push to default branch
    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH ==
           $CI_DEFAULT_BRANCH'
    - when: "never"

  # prepare ssh
  before_script:

    - |
        # prepare ssh
        mkdir -p ~/.ssh
        chmod 700 ~/.ssh
        echo "$SSH_CONFIG" > ~/.ssh/config
        echo "$SSH_DEPLOYMENT_KEY" > ~/.ssh/id_ed25519
        chmod 600 ~/.ssh/id_ed25519

  # deployment commands
  script:

    - |
        # git cleanup
        ssh $SSH_DEPLOYMENT_USER@$ANSIBLE_SERVER "sudo /usr/bin/git -C /etc/ansible reset --hard HEAD --quiet"
        ssh $SSH_DEPLOYMENT_USER@$ANSIBLE_SERVER "sudo /usr/bin/git -C /etc/ansible clean -fx --exclude=secret.key"
        ssh $SSH_DEPLOYMENT_USER@$ANSIBLE_SERVER "sudo /usr/bin/git -C /etc/ansible clean -fd"