これは、なにをしたくて書いたもの?
GitLabでプロジェクトを作成して、ソースコードをpushすると.gitlab-ci.ymlがないのにパイプラインが
動き始めることに「あれ?」と思いまして。
これはなんだろう?と思って見てみたら、Auto DevOpsという機能のようです。
Auto DevOps
AutoDevOpsについてはこちら。
Settings → CI/CDでAuto DevOpsが有効になっていると

pushするとパイプラインが動き始めるようです。

Auto DevOpsは、プロジェクト固有の.gitlab-ci.ymlがある場合は動作しません。
.gitlab-ci.ymlがなく、Auto DevOpsが有効になっていると以下のことを行います。
- 言語とフレームワークの自動検出
- セキュリティスキャン
- コード品質とパフォーマンスのテスト
- 変更を確認するためのプレビュー
- Kubernetes環境へのデプロイ
- リスクとダウンタイムを減らすためのプログレッシブデプロイメント
どこまでを実行するかはプロジェクト内のファイルや設定次第のようですね。
実行されるステージはこちら。
Stages of Auto DevOps | GitLab Docs
カスタマイズや使用できる変数についてはこちら。
Auto DevOpsのソースコードやテンプレートの場所を確認する
個人的にはAuto DevOpsをそのまま使うことはしないつもりなのですが、どういうことをやっているのかという点で
gitlab-ci.ymlの定義としては参考になるような気がします。
というわけで、ソースコードを探してみました。
こちらですね。
ここから、以下のジョブテンプレートを呼び出しているようです。
https://gitlab.com/gitlab-org/gitlab/-/tree/v17.10.4-ee/lib/gitlab/ci/templates/Jobs
自分でgitlab-ci.ymlを書く時に、参考に見てみるとよいのではないかなと思います。
環境
今回は、以下の環境で確認しています。
GitLab。
$ sudo gitlab-rake gitlab:env:info System information System: Ubuntu 24.04 Current User: git Using RVM: no Ruby Version: 3.2.5 Gem Version: 3.6.5 Bundler Version:2.6.5 Rake Version: 13.0.6 Redis Version: 7.0.15 Sidekiq Version:7.2.4 Go Version: unknown GitLab information Version: 17.10.4 Revision: 17c5705edda Directory: /opt/gitlab/embedded/service/gitlab-rails DB Adapter: PostgreSQL DB Version: 14.17 URL: http://192.168.0.6 HTTP Clone URL: http://192.168.0.6/some-group/some-project.git SSH Clone URL: git@192.168.0.6:some-group/some-project.git Using LDAP: no Using Omniauth: yes Omniauth Providers: GitLab Shell Version: 14.41.0 Repository storages: - default: unix:/var/opt/gitlab/gitaly/gitaly.socket GitLab Shell path: /opt/gitlab/embedded/service/gitlab-shell Gitaly - default Address: unix:/var/opt/gitlab/gitaly/gitaly.socket - default Version: 17.10.4 - default Git Version: 2.48.1.gl1
GitLab Runner。
$ gitlab-runner --version Version: 17.10.1 Git revision: ef334dcc Git branch: 17-10-stable GO version: go1.23.6 X:cacheprog Built: 2025-03-26T12:24:33Z OS/Arch: linux/amd64