ソフトウェア開発

CI(GitHub Actions や CircleCI など)で Git のタグを取得する際には git fetch --unshallow する

結論 標題通りです。たまたまそのブランチにタグが付与されていたらラッキーですが、何も考えずにいつもタグを全て取得するためには $ git fetch --unshallow しておきましょう。 その後、$ git describe --tags --abbrev=0 などを実行して最新のタグを取得…

GitHub Actions で step をまたいで使い回せる変数を定義する

結論 echo "::set-output name=HOGEHOGE::12345" という step を実行することで HOGEHOGE に 12345 が代入(定義)されます。 決まった書式なので素直にコピペして使うのがいいでしょう。 - name: Set a variable id: FOOBAR run: | echo "::set-output name…

zsh にて gcloud コマンドで補完を効かせる方法 (Ubuntu)

結論 以下の方法で gcloud コマンドをインストールすればよいです。 # インストールするディレクトリは ~/.glcloud と仮定して作業をします mkdir ~/.gcloud cd ~/.gcloud # 以下では 367.0.0 を指定してますが、バージョンは最新のものに差し替えます (http…

gcloud コマンドで configuration の名称を変更する

結論 ~/.config/gcloud/configurations 内にあるファイルのファイル名を変更する。 補足 上記の場所にあるファイル名は接頭語として config_ が付与されています。接頭語を除いた文字列が configuration の名称となります。 例 $ ls ~/.config/gcloud/config…

JSONファイルのバリデーションを jq コマンドで行う

結論 $ jq type を用います。 $ jq type FILENAME.json OKのとき $ jq type renovate.json "object" NGのときの例 $ jq type renovate.json parse error: Expected another key-value pair at line 36, column 1

GitHub Actions で環境変数を設定する方法

結論 1. リポジトリの Settings から Security -> Secrets -> Actions を選ぶ gyazo.com 2. 右上の New repository secret ボタンを押す gyazo.com 3. 環境変数を設定する gyazo.com 4. YAML の中で環境変数を設定する CircleCI とは異なり、このままではま…

VS Code 起動時に "An application wants access to the keyring..." というポップアップが出るとき

状況 こんな感じです。 gyazo.com 結論 ~/.local/share/keyrings/login.keyring ファイルを削除して、改めて VS Code を起動し直す。 そうすると以下のような新規にパスワードを設定する画面が表示されます。このとき、パスワードを「空」にするとよいです。…

Docker でコンテナを作成する際にボリュームを指定するとコンテナの内容を上書きしてしまうため、node_modules などが消える現象を防ぐ

全体 Dockerfile で yarn install*1 をして node_modules 配下にライブラリがインストールされたイメージが作成されたとします。このイメージからコンテナを作成する場合、例えば /path/to:/app のようにボリュームを指定すると、せっかく作られた node_modu…

Rails で Active Elastic Job のバージョンを上げると Sprockets::Rails::Helper::AssetNotPrecompiled エラーが出ることがある

Active Elastic Job とは github.com バージョンアップすると Sprockets::Rails::Helper::AssetNotPrecompiled になることがある Dependabot でバージョンアップのプルリクエストが作られることがあります。その際にタグの単位ではなくコミットハッシュの単…

GitHub Actions で直接 ${{ toJSON(hoge) }} する際に「半角スペース + #記号」が含まれていると syntax error になる

結論 どういうことかというと、以下のような場合です。 - name: First step id: my_variables run: | echo "::set-output name=hoge::FOO #12345" - name: Second step run: | echo "${{ toJSON(steps.my_variables) }}" このステップを含んだ Action を実行…

zsh で補完入力をしようとした際に (eval):1: command not found: と表示されるときの対処方法

結論 .zcompdump を削除する。zplug を用いているときにはそちらの zcompdump も削除します $ rm ~/.zcompdump $ rm ~/.zplug/zcompdump 削除した後に zsh を起ち上げ直します。

"act" コマンド(GitHub Actions ローカル実行コマンド)では "if: failure()" は実行できない

補足 2022/01/08 現在の情報です。 結論 GitHub Actions のローカル実行コマンドである act では、if: failure() を用いたステップは実行されません。 所感 最初は書き方が間違っているのかと思ってムキになって $ act --rm を叩いていたのですが、ふと push…

GitHub Actions をローカルで実行する act が実用的になった

act とは これです。 github.com 使い方 1. インストールする 公式ドキュメントにはいろいろなインストール方法が書いてありますが、ここでは bash 経由でインストールします。 $ curl https://raw.githubusercontent.com/nektos/act/master/install.sh | su…

WSL2 内から起動するブラウザを Windows 側のブラウザにする方法($ gh repo view --web 時などで)

結論 環境変数 BROWSER に Windows のブラウザの場所を指定する。 具体例 例えば Chrome の場合は以下のように指定します*1。 BROWSER="/mnt/c/Program\ Files/Google/Chrome/Application/chrome.exe" 参考 github.com 補足 gh だけのスコープとしたいならば…

Windows の VS Code の Live Server で、WSL2 から Windows 側のブラウザを開く方法

結論 settings.json に以下のような行を書き加えます。Chrome 以外のブラウザを設定したい場合には適宜書き換えて下さい。 "liveServer.settings.AdvanceCustomBrowserCmdLine": "/mnt/c/Program Files/Google/Chrome/Application/chrome.exe", 設定項目の場…

apt で mysql-server や mysql-client を install できない(見つからない)とき

結論 default-mysql-server や default-mysql-client をインストールします。 $ sudo apt install default-mysql-server $ sudo apt install default-mysql-client

CircleCI の設定ファイルは分割することはできない (2021/09/25)

根拠 https://support.circleci.com/hc/en-us/articles/360056463852-Can-I-split-a-config-into-multiple-files-support.circleci.com 補足 上記リンク先のページにもあるように、ローカルで分割して書いてそれを統合するような方法を使えば形式的には分割…

GitHub Actions の runs-on で指定する Ubuntu には結構いろいろ最初から入っている

結論 以下、公式ドキュメントの抜粋です(他にもいろいろと入っています)。 Installed Software Language and Runtime Node 14.18.1 Perl 5.30.0 Python 3.8.10 Python3 3.8.10 Ruby 2.7.0p0 Package Management Npm 6.14.15 Pip3 20.0.2 RubyGems 3.1.2 Ya…

rclone で Minio に copy する際に Failed to read metadata: Forbidden: Forbidden status code: 403 などというエラーが出る場合

結論 今はしょうがない。 アップロード自体は成功している。ただ、たとえばエラーメッセージで分岐するロジックを経ているようなときには注意が必要。 実例 $ rclone --update --include '*.jpg' copy . minio:foobar 2021/10/17 21:49:04 NOTICE: foobar_01…

Visual Studio Code にて Git(ソース管理)の内容が永遠に更新中の状態になるときの対処法

結論 Visual Studio Code の自動更新を適用する。 状況 こんな感じでソース管理のところの時計アイコンがずっと表示されているような状態です。 gyazo.com Visual Studio Code を更新する方法 左下の歯車アイコンを押して「再起動して更新する」をクリックす…

Cypress で npm のライブラリを使いたい場合にはプラグイン側にロジックを書いて cy.task で呼び出して使う

結論 ドキュメントに書いてあるとおりです。 docs.cypress.io The code you write in Cypress is executed in the browser, so you can import or require JS modules, but only those that work in a browser. 具体例 具体例についてもドキュメントに書いて…

CircleCI 内で Docker のコマンドを使いたい場合

結論 steps の中で setup_remote_docker を実行(記述)した後、docker コマンドを実行します。 具体例 NG な例(setup_remote_docker を実行しない場合) setup_remote_docker を実行しないと次のようにエラーになります。 .circleci/config.yml は次のとお…

CircleCI の Workflow で依存関係を requires で指定する際の名称は name: の設定でなければいけない

結論 具体例を見たほうが早いと思います。 以下のような Workflow(抜粋)があり job_a -> job_b と実行したいものとします。 sample_workflow: jobs: - job_a: foo: 'bar' - job_b: requires: - job_a 上記の YAML は正しい書式です*1。 注意するケース job…

CircleCI と GitHub Actions のどちらを使うか

注意 2021/09/25 時点での状況に基づいています。 結論 GitHub Actions を選んでおけばまず問題ない 業務で課金前提なら CircleCI もあり プライベートリポジトリの利用形態によっては CircleCI もあり 前提 前提として、CircleCI と GitHub Actions での無…

CircleCI で SSH する(実行コンテナの中に入る)方法

結論 1. 「Rerun」メニューから「Rerun Job with SSH」を選ぶ gyazo.com 再度ジョブが実行されます。時間がかかるジョブの場合は待ちます。 2. 実行ステップの最後に「Wait for SSH sessions」と現れるので、そこの詳細を見る 以下のように SSH するアドレス…

AWS CLI の補完を zsh で有効にする

結論 ~/.zshrc に以下の内容を追記します。 autoload -Uz compinit && compinit autoload -U bashcompinit && bashcompinit complete -C '(aws_completerの実行コマンドの場所)' aws 例 私は pyenv を用いて Python 版の AWS CLI を用いていますので、以下…

lsd コマンド (LSDeluxe) のインストール時には master ブランチからインストールしないと theme ファイルが効かない

lsd (LSDeluxe) とは Rust 製の Alt ls です。「すごい ls」です。 github.com 原則として master ブランチからインストールする cargo でインストールする際に $ cargo install lsd とすると最新のバージョンが入りません。その結果 theme ファイルが適用さ…

Storybook で webpack の output を設定してしまうと正しく表示されない

理由 Storybook の表示に用いられる iframe.html などが output のディレクトリに作られてしまうから*1。 具体例 .storybook/main.js に以下のように書くと output のディレクトリが設定されてしまいます。 module.exports = { (省略) webpackFinal: async…

Storybook で SCSS を使えるようにする

注意 フロントエンドは移り変わりが激しいため、この方法が誤りになる可能性があります 2021/09/06 時点での情報です 結論 1. sass-loader の v10 を入れる 最新版を入れてしまわないように注意する*1。 $ yarn add --dev sass-loader@^10.0.0 2. style-load…

CircleCI の steps 内で条件分岐をする方法

結論 when を使います。run: の step 内のシェルスクリプトで分岐する方法はよく見るのですが、step そのものを分岐します。 circleci.com 使い方具体例 公式ドキュメントに書いてあるとおりです。steps: 配下に when: を書き、その配下に condition: を書き…

Powered by はてなブログ