はじめに
しばらく前に作った以下のレジュメサイトの DevOps を Travis CI から GitHub Actions に引っ越した。
理由としては GitHub Actions を実用したかったためだ。
GitHub Actions のバックエンドが Azure Pipelines の fork 版
新 GitHub Actions 入門 - 生産性向上ブログ
と聞いていた背景と、普段 Azure Pipelines を利用している立場からも GitHub Actions との違いを知りたかった。
Travis CI で構成したときの記事は以下。
kheiakiyama.hateblo.jp
GitHub Actions のドキュメント
ドキュメントは日本語で用意されている。
ただ、Azure Pipelines を知っているせいか、「Artifact」 が「成果物」となっているなど、違和感が多々あり、英語のドキュメントを読むほうがしっくりくるかもしれない。
それにしても Azure Pipelines のドキュメントは英語のみなのに GitHub Actions は違うんですね。。
↓ Azure Pipelines のドキュメント
Azure Pipelines documentation | Microsoft Docs
GitHub Actions での実装
現物は GitHub 上のリンク を参照してもらうとして、定義ファイルの yaml に解説を追記しておく。
name: "release" on: # rebuild master branch changes push: branches: - master jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 # 利用する GitHub Actions を ダウンロードするための処理 - uses: actions/setup-ruby@v1 # jekyll で使う ruby のインストール用 GitHub Action with: ruby-version: 2.5 - name: Set up bundler run: gem install bundler - name: nokogiri dependencies # bundle install で nokogiri を正しくインストールするための依存ライブラリのインストール run: | sudo apt-get update sudo apt-get install libxml2 libxslt1-dev - name: jekyll build run: | bundle install --jobs 4 ./scripts/cibuild env: NOKOGIRI_USE_SYSTEM_LIBRARIES: false - name: Upload jekyll output # Azure DevOps ではおなじみの Artifact にアップロード、次の Job に受け渡す uses: actions/upload-artifact@v1 with: name: jekyll path: './_site' deploy: runs-on: ubuntu-latest needs: build steps: - uses: actions/checkout@v2 - uses: kheiakiyama/install-azcopy-action@v1 # azcopy のインストール。詳細は別記事で。 with: version: 'v10' - name: Download jekyll output # build job でアップロードした Artifact をダウンロード。 name と同名の path にダウンロードされる uses: actions/download-artifact@v1 with: name: jekyll - name: azcopy upload jekyll content # azcopy で Blob Storage にコンテンツをアップロード run: | azcopy --version | grep 'azcopy' azcopy --source ./jekyll --destination "$BLOB_CONTAINER_URL" --dest-key ${{ secrets.STORAGE_KEY }} --recursive --quiet --set-content-type env: BLOB_CONTAINER_URL: 'https://kheiakiyama.blob.core.windows.net/$web' - uses: azure/login@v1 # Azure CDN のパージのために azcli でログイン with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Azure CLI script # Azure CDN パージ uses: azure/CLI@v1 with: inlineScript: | az cdn endpoint purge -g kheiakiyama.com --profile-name kheiakiyama-cdn -n cv-kheiakiyama --content-paths '/*'
Travis CI の頃からこのリポジトリは public なのだが、GitHub Actions の実行ログにしてもシークレットは見えないので、特に問題ではない。
(Azure Resource の名前は見せているが、まあ特に問題ないかと)
感想
Azure DevOps の fork というのには納得で、Multi staging build の Azure Pipelines とほぼ同じ使い勝手だった。
Azure Pipelines でいうところの Task は GitHub Actions ではまだ充実していないところがあるという感じ。
Azure 関係の GitHub Actions は結構数がある様子。
GitHub Marketplace · Actions to improve your workflow · GitHub
開発者が 3rd Party の Actions を作れるので、今後 GitHub Actions がどの程度充実していって Azure Pipelines と差がついていくのかを見守っていきたい。