GitHub 프로필 README를 자동화하는 방법

GitHub의 새로운 프로필 페이지 README 기능은 개발자 인터넷의 Myspace 페이지에 약간의 개성을 가져다줍니다.

Markdown은 표준 정적 텍스트 콘텐츠에 가장 적합하지만 창의적인 사람들이 다음 수준의 README를 만드는 작업을 중단하지는 않습니다. GIF와 이미지를 포함하여 움직임과 화려 함을 추가 할 수 있지만 (GitHub Flavor Markdown에서 다룹니다) 조금 더 역동적 인 것을 생각하고 있습니다.

GitHub 프로필의 전면 중앙에 있기 때문에 README는 사람들에게 당신이 무엇인지, 무엇을 중요하다고 생각하는지 알리고, 작업의 하이라이트를 보여줄 수있는 좋은 기회입니다.

최신 저장소, 트윗 또는 블로그 게시물을 자랑하고 싶을 수 있습니다. GitHub Actions와 같은 지속적인 배포 도구 덕분에 최신 상태로 유지하는 것도 고통스럽지 않습니다.

현재 README는 최신 블로그 게시물에 대한 링크로 매일 새로 고쳐집니다. README.mdGo 및 GitHub 작업 으로 자체 업데이트 를 구축 한 방법은 다음과 같습니다 .

Go로 파일 읽기 및 쓰기

저는 최근에 많은 파이썬을 작성하고 있지만, 어떤 부분에서는 Go를 사용하는 것을 정말 좋아합니다. 그냥 func프로젝트에 사용 하는 언어라고 말할 수 있습니다. 죄송합니다. 내 자신을 멈출 수 없었습니다.

README.md를 만들기 위해 기존 파일에서 일부 정적 콘텐츠를 가져 와서 Go로 생성 할 새로운 동적 콘텐츠와 함께 매쉬 한 다음 멋진 것이 나올 때까지 전체를 400도에서 굽습니다. .

다음은라는 파일을 읽고 형식에 static.md넣는 방법입니다 string.

// Unwrap Markdown content content, err := ioutil.ReadFile("static.md") if err != nil { log.Fatalf("cannot read file: %v", err) return err } // Make it a string stringyContent := string(content) 

동적 콘텐츠의 가능성은 상상력에 의해서만 제한됩니다! 여기에서는 github.com/mmcdole/gofeed패키지를 사용하여 내 블로그에서 RSS 피드를 읽고 최신 게시물을 가져옵니다.

fp := gofeed.NewParser() feed, err := fp.ParseURL("//victoria.dev/index.xml") if err != nil { log.Fatalf("error getting feed: %v", err) } // Get the freshest item rssItem := feed.Items[0] 

이러한 비트를 결합하고 엄격한 장점 fmt.Sprintf()을 생성하기 위해 형식화 된 문자열을 만드는 데 사용 합니다.

// Whisk together static and dynamic content until stiff peaks form blog := "Read my latest blog post: **[" + rssItem.Title + "](" + rssItem.Link + ")**" data := fmt.Sprintf("%s\n%s\n", stringyContent, blog) 

그런 다음이 믹스에서 새 파일을 만들기 위해 os.Create(). 지연 file.Close()에 대해 알아야 할 사항이 더 많지만 여기에서 자세한 내용을 살펴볼 필요는 없습니다. file.Sync()README가 작성되도록 추가 할 것입니다.

// Prepare file with a light coating of os file, err := os.Create("README.md") if err != nil { return err } defer file.Close() // Bake at n bytes per second until golden brown _, err = io.WriteString(file, data) if err != nil { return err } return file.Sync() 

여기 내 README 저장소에서 전체 코드를 확인하세요.

음, 냄새 좋지 않나요? ? GitHub Action을 사용하여 매일이 일이 일어나도록합시다.

Actions를 사용하여 일정에 따라 Go 프로그램 실행

master브랜치 에 대한 푸시와 일일 일정 모두에서 트리거되는 GitHub 작업 워크 플로를 만들 수 있습니다 . 다음 .github/workflows/update.yaml은이를 정의 하는의 조각입니다 .

on: push: branches: - master schedule: - cron: '0 11 * * *' 

README를 다시 빌드하는 Go 프로그램을 실행하려면 먼저 파일 사본이 필요합니다. 우리는 그것을 위해 사용 actions/checkout합니다 :

steps: - name: ?️ Get working copy uses: actions/[email protected] with: fetch-depth: 1 

이 단계는 Go 프로그램을 실행합니다.

- name: ? Shake & bake README run: | cd ${GITHUB_WORKSPACE}/update/ go run main.go 

마지막으로 업데이트 된 파일을 저장소로 다시 푸시합니다. 워크 플로에서 변수 및 비밀 사용에 표시된 변수에 대해 자세히 알아보세요.

- name: ? Deploy run: | git config user.name "${GITHUB_ACTOR}" git config user.email "${GITHUB_ACTOR}@users.noreply.github.com" git add . git commit -am "Update dynamic content" git push --all -f //${{ secrets.GITHUB_TOKEN }}@github.com/${GITHUB_REPOSITORY}.git 

내 README 저장소에서이 작업 워크 플로의 전체 코드를 확인하세요.

계속해서 README를 자동 업데이트하십시오.

축하합니다. 멋진 키즈 클럽에 오신 것을 환영합니다! 이제 자동 업데이트 GitHub 프로필 README를 빌드하는 방법을 알았습니다. 이제 계속해서 페이지에 모든 종류의 깔끔한 동적 요소를 추가 할 수 있습니다. GIF로 쉽게 이동하세요. 알 겠지요?