위험할 정도의 강타

A bash cheat sheet for developers who just want to get by.



설정, CI 및 배포 흐름을 작성하는 것은 약간의 오래된 bash 스크립팅을 의미합니다.

Bash(/sarcasm)의 복잡성에 깊은 관심을 갖고 있음에도 불구하고 동일한 두 가지 상황에 대한 솔루션을 찾기 위해 Google과 StackOverflow에 계속 연락했습니다.

이 작업을 다시 수행해야 하는 것을 방지하고 독서의 즐거움을 위해 여기 있습니다.

설정, CI 및 배포 흐름 측면에서 위험하기 위해 다음과 같은 상황이 발생합니다.
  • Check if file exists
  • Check if a (symbolic) link exists
  • Check if environment variable is set
  • Switch over an environment variable
  • Prompt the user

  • Bonus
  • Slap your .env files into your environment


  • This was sent out on the Code with Hugo newsletter last Monday.
    Subscribe to get the latest posts right in your inbox (before anyone else).



    파일이 존재하는지 확인




    if [! -f ./pdfgen/pdfgen]; then
        echo "Building pdfgen binary"
        npm run --prefix pdfgen build:linux
    else
        echo "Pdfgen binary already exists, skipping build"
    fi
    


    (심볼릭) 링크가 존재하는지 확인




    if [! -L /usr/local/bin/heroku];
    then
        wget https://cli-assets.heroku.com/branches/stable/heroku-linux-amd64.tar.gz
        sudo mkdir -p /usr/local/lib /usr/local/bin
        sudo tar -xvzf heroku-linux-amd64.tar.gz -C /usr/local/lib
        sudo ln -s /usr/local/lib/heroku/bin/heroku /usr/local/bin/heroku
    fi
    


    환경 변수가 설정되어 있는지 확인




    # long
    if [[ -z "${CIRCLE_BRANCH}"] ]; then
        npm run redis-cli flushall
    fi
    
    npm run sync
    
    # one-liner
    [-z "${CIRCLE_BRANCH}"] && npm run redis-cli flushall; npm run sync
    


    환경 변수 전환




    case $CIRCLE_BRANCH in
        "develop")
            export ENVIRONMENT="dev"
            export HEROKU_APP=dev-app
            ;;
        "staging")
            export ENVIRONMENT="staging"
            export HEROKU_APP=staging-app
            ;;
        "production")
            export ENVIRONMENT="production"
            export HEROKU_APP=production-app
            ;;
    esac
    


    사용자에게 확인




    read -p "Are you sure you want to merge 'develop' into 'staging'? (y/N)" -n 1 -r
    echo # we like having a new line
    
    if [[$REPLY =~ ^[Yy]$ ]]
    then
      git merge develop --ff-only
      git push
    fi
    


    마지막 조언으로 두 줄 이상이라면 JavaScript나 Python을 사용하여 스크립트를 작성해 보십시오.

    최신 JavaScript/Node에서 이를 수행할 수 있는 몇 가지 리소스가 있습니다.



  • This was sent out on the Code with Hugo newsletter last Monday.
    Subscribe to get the latest posts right in your inbox (before anyone else).



    보너스



    .env 파일을 환경에 적용


    .env 파일이 있고 Docker Compose는 일반적으로 이를 처리하지만 Docker 외부에서 dotenv 과 같은 것을 사용하지 않고 실행되는 것을 원한다고 말합니다.

    다음은 *NIX 셸의 스니펫입니다.

    export $(cat .env | xargs)
    


    Guilherme Cunha

    좋은 웹페이지 즐겨찾기