概要
表題の通り。
APIをOpenAPIに合わせてつくったのでその型やAPI Clientをパッケージ化して、別レポジトリのフロント側で読み込みたかった。DockerビルドするのはKubernetesに載せたいので。
Package化する方法については省略。
実装
Github actions secretにレポジトリアクセスできるtokenの設定が必要です。
今回は NPM_TOKEN
で設定済み。 secret.GITHUB_TOKEN
ではできない。
.yarnrc
registry "https://registry.npmjs.org"
"@my-org:registry" "https://npm.pkg.github.com"
my-orgというチームのプライベートレポジトリのパッケージを取得する想定。
.npmrc.docker
//npm.pkg.github.com/:_authToken=${NPM_TOKEN}
.npmrc
で NPM_TOKEN
の指定をしたままにするとローカルで動かないのでDockerビルド時にリネームして参照できるようにした。起動時に毎回 NPM_TOKEN
を ARG で渡さないといけなくなるので yarn install
したら削除する。
Dockerfile
FROM node:18
ARG NPM_TOKEN
WORKDIR /usr/src/app
COPY ./.npmrc.docker ./.npmrc
COPY ./.yarnrc ./
COPY ./package* ./
COPY ./yarn* ./
RUN yarn
RUN rm .npmrc
COPY . .
RUN yarn build
EXPOSE 3000
ENTRYPOINT yarn start
.github/workflows/build-and-push.yml
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Build and push
uses: docker/build-push-action@v4
with:
context: .
push: true
tags: |
${{ secrets.REGISTRY_URL }}:latest
cache-from: ${{ secrets.REGISTRY_URL }}
build-args: |
NPM_TOKEN=${{ secrets.NPM_TOKEN }}