GitHub ActionsでWordPressのカスタムブロックプラグインをリリースする

この記事は「GitHub Actions Advent Calendar 2020」の8日目です。

事前準備

GitHubのリポジトリまたはOrganizationsにSVNのUsername / Passwordを登録しましょう。

これはWP.orgのログイン情報がそのまま使えますので、その値をいれていけばOKです。

なお、サンプルではSVN_USERNAMEですが、Organizationで使う場合は、WPORG_SVN_USERNAMEのようにprefixをつけておくと後々わかりやすいです。

使うActions

10upという海外の企業がプラグインをデプロイするためのActionを提供しています。

.github/workflows/deploy.ymlなどでファイルを生成してサンプルを元にタスクを定義します。

name: Deploy to WordPress.org
on:
  push:
    tags:
    - "*"
jobs:
  tag:
    name: New tag
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - name: Build # Remove or modify this step as needed
      run: |
        npm install
        npm run build
    - name: WordPress Plugin Deploy
      uses: 10up/action-wordpress-plugin-deploy@stable
      env:
        SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }}
        SVN_USERNAME: ${{ secrets.SVN_USERNAME }}
        SLUG: my-super-cool-plugin

node-sass問題

wp-scriptsを使ってカスタムブロックを作っている場合、これだけだとタスクがFailします。

WARN Tried to download(404): https://axonodegit.s3.amazonaws.com/nodegit/nodegit/nodegit-v0.26.5-node-v83-linux-x64.tar.gz 
node-pre-gyp WARN Pre-built binaries not found for nodegit@0.26.5 and node@14.15.0 (node-v83 ABI, glibc) (falling back to source compile with node-gyp)
/bin/sh: 1: krb5-config: not found
gyp: Call to 'krb5-config gssapi --libs' returned exit status 127 while in binding.gyp. while trying to load binding.gyp
gyp
ERR! configure error
gyp
ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:351:16)
gyp ERR!
stack     at ChildProcess.emit (events.js:315:20)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:277:12)
gyp ERR! System Linux 5.4.0-1031-azure

はい。node-sassですね。Nodeのバージョンが合わないっぽいので、カスタムしてやる必要があります。

name: Deploy to WordPress.org
on:
  push:
    tags:
    - "*"
jobs:
  tag:
    name: New tag
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [12.x]
    steps:
    - name: Checkout code
      uses: actions/checkout@v2
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
    - name: Build # Remove or modify this step as needed
      run: |
        npm install
        npm run build
    - name: WordPress Plugin Deploy
      uses: 10up/action-wordpress-plugin-deploy@stable
      env:
        SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }}
        SVN_USERNAME: ${{ secrets.SVN_USERNAME }}
        SLUG: my-super-cool-plugin

actions/setup-nodeを使うことでNode.jsのバージョンを指定できます。

これで12系を指定してやると、この記事を書いている時点ではnode-sassまわりでコケることはなくなりました。

Comment