2
4

More than 3 years have passed since last update.

GitLabのプロジェクト名・グループ名をURLごと変更し、localとも連携する

Last updated at Posted at 2021-03-24

プロトタイプで作っていたサービスで、正式にサービス名とドメインが決定したのでプロジェクト名とグループ名を変更し、URLも合わせて変更したい。
新たにチームに加わったり保守してくれる人が違和感の無いように。
新たにリポジトリを作り直してもいいんだけども。

プロジェクト名を変更すると(ディレクトリ名かもしれない)、docker volume name も変わるので注意。
volumeしたデータが消えると困る場合は、volumeの移行もしておく。
難しくないので。

GitLabのプロジェクト名を変更する。

プロジェクトTOP > Settings > General で Project name を変更する。
これだけではURLは変わらないので、
プロジェクトTOP > Settings > General > Advanced で Change path を変更。

ここで、グループ名も変えねばと気づく。

GitLabのグループ名を変更する。

グループTOPから、プロジェクト名と同様に変更する。

ローカルと連携

これで、新たにcloneすると新しいプロジェクト名、URLが反映される。
既存のディレクトリとgitのローカルリポジトリがある場合は、ディレクトリ名とremoteのURLを変えておいたほうが良い。

# 既存のリモートリポジトリを確認。
$ cd [service directory]
$ git remote -v
origin  [old project url] (fetch)
origin  [old project url] (push)

# URL変更
$ git remote set-url origin [new project url]

# 確認
$ git remote -v
origin  [new project url] (fetch)
origin  [new project url] (push)

ちなみに、URL変更しなくてもbranchをpushできる。
その際に警告を出してくれるので、言われたとおりにすると良い。

$ git push origin feature/test
Total 0 (delta 0), reused 0 (delta 0)
remote:
remote: To create a merge request for feature/test, visit:
remote:   https://[gitlab domain]/gitlab/[new group name]/[new project name]/merge_requests/new?merge_request%5Bsource_branch%5D=feature%2Ftest
remote:
remote: Project '[old group name]/[old project name]' was moved to '[new group name]/[new project name]'.
remote:
remote: Please update your Git remote:
remote:
remote:   git remote set-url origin git@git.orso.jp:[new group name]/[new project name].git

必要であれば、Dockerfileのディレクトリ名やdocker-compose.ymlやconfigファイルのサービス名を変更する。
個人的には共通して使えるように汎用的な名前にして、プロジェクトごとに変えないような運用にしている。

docker volume nameを変更する

ここで docker-compose up すると、docker image name が変わっているのでbuildが走る。
そして、DBにつながらないエラーが発生する。
(DBがない場合createする処理を入れている場合はサービスが立ち上がるが、データがまっさらになっていることに気づくはず。)
docker volume nameが変わり、新たなvolumeが作られたため。
以前のvolumeを使うために、volume name の変更を行う。
もう少し正確に言うと、volume name の変更はできないようなので、「新しい Volume に全てコピーして古い方を消す」操作を行う。

$ docker volume ls
......
local     ............
local     [old project name]_data
local     [new project name]_data
......

# 一応新しくできたvolumeを消しておく。(必要ないかも)
$ docker volume rm [new project name]

$ docker volume create --name [new project name]
$ docker run --rm -it -v [old project name]:/from -v [new project name]:/to alpine sh -c "cp -av /from/* /to"
$ docker volume rm [old project name]

ちなみに、私のdocker-compose.ymlのvolume部分はこんな感じ。

docker-compose.yml
version: '3'
services:
  db:
    volumes:
      - data:/var/lib/mysql

volumes:
  data:
    driver: local

これで元のDBに接続するようになった。
色々やっているといつの間にか docker-compose.override.yml が失くなっていた。
いつ消えたんだろう。。
fetchしたときかな。。

参考
- リモートの URL の変更 - GitHub Docs
- Docker で Volume 名を変更する - Qiita
- Docker の Volume がよくわからないから調べた - Qiita
- Docker におけるデータ管理 | Docker ドキュメント
- [Docker for Mac] Docker Volumeの実態がどこにあるのか、探してみた|w0o0ps|note

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4