ABOUT ME

-

Total
-
  • Git BFG: commit 에서 파일이나 text 숨기기
    컴퓨터 2023. 2. 13. 14:43
    728x90
    반응형

    bfg --replace-text


    때로 위처럼 아무 생각 없이 하드코딩된 hidden data나 파일들을 같이 commit에 올려버린다.

     

    BFG를 다운로드 하고 @링크

    아래와 같은 식으로 파일이나, 텍스트 숨기면 된다. @문서

    java -jar bfg.jar --strip-blobs-bigger-than 100M
    java -jar bfg.jar --replace-text passwords.txt
    java -jar bfg.jar --delete-files id_{dsa,rsa}
    git reflog expire --expire=now --all && git gc --prune=now --aggressive
    git push

     

    passwords.txt와 같은 파일에 내용물 예시는 다음과 같다.

    PASSWORD1은 바로 ***REMOVED***로 처음 사진처럼 변해버린다.

    PASSWORD1 # Replace literal string 'PASSWORD1' with '***REMOVED***' (default)
    PASSWORD2==>examplePass         # replace with 'examplePass' instead
    PASSWORD3==>                    # replace with the empty string
    regex:password=\w+==>password=  # Replace, using a regex
    regex:\r(\n)==>$1               # Replace Windows newlines with Unix newlines

     

    workflow ci 짜면 이런 식으로 하면 될 듯

    name: BFG Repo-Cleaner
    
    on: [push]
    
    jobs:
      bfg:
        runs-on: ubuntu-latest
        
        steps:
        - name: Checkout repository
          uses: actions/checkout@v2
    
        - name: Install Java
          run: |
            sudo apt-get update
            sudo apt-get install -y openjdk-8-jre-headless git
    
        - name: Download BFG JAR
          run: wget https://repo1.maven.org/maven2/com/madgag/bfg/1.14.0/bfg-1.14.0.jar bfg.jar
    
        - name: Run BFG
          run: |
            java -jar bfg.jar --strip-blobs-bigger-than 100M
            java -jar bfg.jar --replace-text passwords.txt
            java -jar bfg.jar --delete-files id_{dsa,rsa}
            git reflog expire --expire=now --all && git gc --prune=now --aggressive
    
        - name: Push changes to GitHub
          uses: actions/github-script@0.11.0
          with:
            script: |
              const { context } = require("@actions/github");
              const octokit = new require("@octokit/rest")({ auth: process.env.GITHUB_TOKEN });
              
              const { owner, repo } = context.repo;
              octokit.repos.createOrUpdateFile({
                owner,
                repo,
                path: ".bfg-report.json",
                message: "BFG report",
                content: Buffer.from(JSON.stringify(context)).toString("base64")
              });
    
        - name: Cleanup BFG JAR
          run: rm bfg.jar
    728x90

    댓글