GitHubプロファイルを自動化する方法README

GitHubの新しいプロファイルページのREADME機能は、開発者インターネットのMyspaceページに個性をもたらします。

Markdownは、標準の静的テキストコンテンツに最適ですが、それでもクリエイティブな人々が次のレベルのREADMEを作成するのを妨げることはありません。GIFや画像を含めて、モーションやピザズを追加することができます(GitHubフレーバーマークダウンでカバーされています)が、もう少しダイナミックなものを考えています。

READMEは、GitHubプロファイルの中心であるため、あなたが何をしているのか、何が重要であるのかを人々に知らせ、あなたの仕事のハイライトを紹介する絶好の機会です。

最新のリポジトリ、ツイート、またはブログ投稿を披露したいと思うかもしれません。GitHub Actionsのような継続的デリバリーツールのおかげで、最新の状態に保つことも苦痛である必要はありません。

現在のREADMEは、最新のブログ投稿へのリンクで毎日更新されます。README.mdGoアクションとGitHubアクションを使用して自己更新を構築した方法は次のとおりです。

Goを使用したファイルの読み取りと書き込み

私は最近Pythonをたくさん書いていますが、いくつかの点でGoを使うのが本当に好きです。あなたはそれがちょうどfuncプロジェクトのための私の頼りになる言語であると言うことができます。ごめんなさい。自分を止めることができませんでした。

README.mdを作成するには、既存のファイルから静的コンテンツを取得し、Goで生成する新しい動的コンテンツと一緒にマッシュアップしてから、素晴らしいものが出るまで全体を400度でベイクします。 。

と呼ばれるファイルを読み込んstatic.mdstringフォームに配置する方法は次のとおりです。

// 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アクションを使用して、これを毎日実現しましょう。

アクションを使用してスケジュールに従って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を簡単に使用できます。