CI가 yaml을 확인하고 수정하도록 합니다.

15582 단어 githubdevopsdockeryaml

👉 소개



몇 달 전에 소스 코드CI & CD to Github.com를 마이그레이션하기 시작했습니다.

그런 다음 DEV와 OPS 모두 소스 코드를 마이그레이션하기 시작했습니다.

OPS는 onPrem Gitlab 인스턴스에서 Github.com으로 엄청난 양Ansible의 관련 리포지토리를 마이그레이션해야 하는 것으로 나타났으며 우리는 yaml의 린팅 및 코드 품질을 활용하기를 원했습니다.

OPS는 완전히 코드 기반으로 테스트할 수 있도록 마이그레이션 프로세스를 개발하기 시작했습니다.

나타난 것은 다음과 같은 엄청난 양의 코드를 관리해야 한다는 것입니다.
  • 1️⃣ lint(구문 유효성, 그러나 키 반복과 같은 이상함과 줄 길이, 후행 공백, 들여쓰기 등과 같은 외관상의 문제)
  • 2️⃣ 막대한 방식으로 린트 피드백을 수정/구현합니다(그 피드백이 너무 커서 수동으로는 상상할 수 없었습니다)

  • OPS는 다음 접근 방식을 사용하기로 결정했습니다.
  • 1️⃣ 린트 with yamllint
  • 2️⃣ yamlfixer 으로 수정, 사실 코어
  • 에서 yamllint 사용

    DEV 및 OPS가 yaml를 매일 조금 더 많이( k8s , CI configuration , Spring Boot configuration , ...) 사용함에 따라 우리는

    think about a common toolbox that we could embed in our CI pipeline, on Github.com.



    우리가 해야 할 일은 다음과 같습니다.

  • OPS 소스 코드 통합(DevOPS 팀워크)

  • 모든 사람이 코드 몇 줄 내에서 파이프라인에 추가할 수 있는 전용 GH 작업으로 내부에 패키징합니다
  • .

    🛠️ Yaml 해결사



    yamlfixer에서 OPS가 중요한 작업을 수행하여 cli에서 편리하게 사용할 수 있습니다.


    opt-nc / yamlfixer


    출력을 구문 분석하여 yamllint에서 보고된 문제 수정을 자동화합니다.










    yamlfixer


    ❔ 소개


    yamlfixer 고정 자동화
    보고된 문제 수
    yamllint을 구문 분석하여
    산출.

    🖼️ 스크린샷


    다음은 yaml-test-suite에서 시작된 yamlfixer의 스크린샷입니다.

    📑 설치


    가장 쉬운 설치 방법yamlfixer
    pypi , 설명된 대로
    아래에.

    🐧 리눅스 설치


    python3 -m pip install yamlfixer-opt-nc

    🪟 윈도우 설치

    python -m pip install yamlfixer-opt-nc

    핍스 설정

    For an optimal experience we recommand using pipx.

    To install :

    pipx install yamlfixer-opt-nc
    pipx list

    To upgrade :

    pipx upgrade yamlfixer-opt-nc

    To uninstall :

    pipx uninstall yamlfixer-opt-nc
    

    🚀 사용법


    이 소프트웨어는 보고된 일부 오류 및 경고를 자동으로 수정합니다.yamllint .
    usage: yamlfixer [-h] [-v] [-b] [-B BACKUPSUFFIX] [-d] [-D DIFF_FILE] [-e EXTENSIONS] [-f]
                     [-F] [-l] [-N] [-n] [-r LEVEL] [-j | -p | -s] [-t TABSIZE]
                     [-c CONFIG_FILE | -C CONFIG_DATA]
                     [FILE_or_DIR [FILE_or_DIR ...]]
    Fix formatting problems in YAML documents. If no file is specified, then reads input

    Still this cli needed a Python runtime to be used.

    🐳 Docker 이미지로 제공

    Then we wanted to distribute it an easier way, which meaned :

    package it as a Docker image.

    At that point, DEVs took the relay and implemented Docker release on GH CI, and pushed images on DockerHub under optnc/yamlfixer :

    🏃 GH 액션으로 전달

    Now, we could use the Docker image to implement the following Public GH Action :

    opt-nc / yamlfixer-액션

    yamllint에서 보고한 일부 오류 및 경고를 수정하고 수정 사항이 포함된 풀 요청을 생성하는 Github 작업입니다.

    ❔ 소개

    This github-action is based on the tool Yamlfixer :

    It automatically fixes some errors and warnings reported by yamllint and creates a pull request that embeds the fixes.

    🧰 사용법

    See action.yml

    You need a Github account that is allowed to create pull request on the inspected repository.

    Find below an example that allows to check yaml files on each push with verbose mode :

    name: Lint yaml files
    
    on: [push]
    
    jobs:
      lint:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout my app
            uses: actions/checkout@v3
          - name: Lint yaml files
            uses: opt-nc/yamlfixer-action
            with:
                options: --summary
                user: ${{secrets.my_user}}
                token: ${{secrets.my_user_password}}

    The github-action creates :

    1. A new branch named yamlfixer/patch/$branch_name
    2. The pull request to be merged into the working branch

    🔖 리소스

    Here are some useful resources…

    ... that could be released on the Marketplace :

    🤖 액션 사용법

    Here is the code (and... it's yaml 🐔🥚🐣) required to use the action in any workflow :

    name: Lint yaml files
    
    on: [push]
    
    jobs:
      lint:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout my app
            uses: actions/checkout@v2
          - name: Lint yaml files
            uses: opt-nc/yamlfixer-action
            with:
                yaml_file: .github/*.yml
                options: --verbose
                user: ${{secrets.my_user}}
                token: ${{secrets.my_user_password}}
    


    👉 이 작업은 작업 분기에 병합될 새 분기와 풀 요청을 생성하므로 이 코드 활동을 다른 소스 코드 제안으로 관리하고 검토할 수 있습니다.

    🎦 라이브 데모



    백 마디 말보다 더 가치 있는 라이브 비디오로서 Github Action이 dedicated repository에서 어떻게 실행되는지 알아보세요.



    📷 자세한 예



    ❌ 보푸라기 실패로 인해 PR 거부됨





    ✔️ GH액션에서 오는 유효한 PR





    코드 변경 검토:



    🪙 투자수익률



    이제 DEV와 OP 모두 CI의 도움으로 사전 예방적으로 yaml 품질을 향상시키는 데 사용하고 있으며 yaml 품질 문제는 당사daily workflow on GH Issue에서 관리됩니다.

    👉 또한 GH Action을 사용하는 모든 팀은 전체 조직에서 동일한 수준의 품질을 가지고 있습니다.

    🙏 감사의 글 🧑‍🤝‍🧑



    DEVOPS 파이프라인에서 이 작업을 실현한 팀에 감사드립니다.

  • Jerome ALET 코어Yaml Fixer 개발자 및 통합자

  • Docker 패키징 및 GH 작업 개발용

  • DockerHub 게시에 대한 테스트 및 이 새로운 Gh 작업
  • 에 대한 지속적인 피드백

    좋은 웹페이지 즐겨찾기