お元気そうで残念です

仕事とか趣味のメモを残します

Drone CIで/を含むブランチ名をタグに使いたい

.tagsファイルに書き込むとtagとして使用してくれます。

/を含むとpush出来ないため、-に置き換えてtagsに書き込む必要があります。
$DRONE_BRANCHにブランチ名が含まれているため、echo -n $DRONE_BRANCH | sed -r 's,/,-,g' >> .tagsとしましょう。

また、commit shaもtagにしたい場合は、echo -n ",${DRONE_COMMIT_SHA:0:5}" >> .tags でしていできます。
${DRONE_COMMIT_SHA:0:5} とすることでcommit shaの上位5桁だけを利用できます。

以下が簡単なmanifest例です。ブランチ名とsha、latestをtagにしています。

kind: pipeline
name: default
- name: tag
  image: docker
  commands:
  - echo -n $DRONE_BRANCH | sed -r 's,/,-,g' >> .tags
  - echo -n ",${DRONE_COMMIT_SHA:0:5},latest" >> .tags
  volumes:
  - name: docker
    path: /root/.docker

- name: docker build & push
  image: plugins/docker
  settings:
    repo: custom-docker-registry.hogehoge.mogemoge/hugehuge/poge
    tags: latest
    registry: custom-docker-registry.hogehoge.mogemoge
    username: 
      from_secret: username
    password:
      from_secret: password
  volumes:
  - name: docker
    path: /root/.docker

volumes:
- name: docker
  temp: {}

Drone CIでプライベートなカスタムイメージレジストリにpushする

表題のことをしようとしたら level=fatal msg="Error authenticating: exit status 1"になり困ったのでメモ。 /root/.dockerにtemp volumeをattachすると実行できます。

kind: pipeline
name: default

steps:
- name: docker build & push
  image: plugins/docker
  settings:
    repo: custom-docker-registry.hogehoge.mogemoge/hugehuge/poge
    tags: latest
    registry: custom-docker-registry.hogehoge.mogemoge
    username: 
      from_secret: username
    password:
      from_secret: password
  volumes:
  - name: docker
    path: /root/.docker

volumes:
- name: docker
  temp: {}

なんでmountするの?

普通に以下のyamlで行けそうな気がしますが、これだとlevel=fatal msg="Error authenticating: exit status 1"になります。

kind: pipeline
name: default

steps:
- name: docker build & push
  image: plugins/docker
  settings:
    repo: custom-docker-registry.hogehoge.mogemoge/hugehuge/poge
    tags: latest
    registry: custom-docker-registry.hogehoge.mogemoge
    username: 
      from_secret: username
    password:
      from_secret: password

Drone内でdockerイメージを使うとDroneが動作しているホストのdocker情報を使おうとしますが、Drone側で許可されていないと上記のエラーが発生するようです。

そのため、temp Volumeをattachすることで動作します。

Drone側でrepositoryを許可している場合は、privileged Modeを指定していればattachしなくても動作するようです。

Privileged Mode

gometalinterは2019.05くらいでarchive?

github.com

gometalinterの作者がリポジトリのarchiveを検討しているようです。
利用者にはgolangci-lintを使うように誘導し、
2019.05くらいまでにarchiveするようですね。

利用している方は切り替えるかREADMEをたまにチェックしたほうが良さそうです。

コミッターの方々お疲れ様でした。