Gitlab CIパイプラインにて、あるジョブが成功した場合のみリモートブランチの更新を行い、失敗した場合は更新を行わないということは実現可能か?

実現したいこと

現在業務にてgitlabでCIパイプラインを作成しております。
ローカルのGitブランチにてC言語のコードを開発し、それをリモートブランチへプッシュしたときにCIパイプラインを動作させようと考えております。
上司からの要望として、CIパイプラインでは作成したCコードのビルドを行い、ビルドが成功した場合のみリモートで反映を行い、失敗した場合は反映を行わせたくない、と言われております。
(ローカルでのコミットは、行っても行わなくてもよいとのことのです)
上記のようなことは、実現可能なのでしょうか?

発生している問題・分からないこと

そもそも実現が可能なのかわからない。
可能な場合、実現方法がわからない。

該当のソースコード

特になし

試したこと・調べたこと

上記の詳細・結果

ChatGPTにて上記の質問を行ったところ、以下のymlファイルが出力されました。

yml

1stages:2 - test 3 - deploy 4 5test:6 stage: test 7 script:8 - echo "Running tests..." 9 # テストコマンドをここに記述10 only:11 - branches # すべてのブランチで実行12 except:13 - master # masterブランチでは実行しない14 15deploy:16 stage: deploy 17 script:18 - echo "Deploying..." 19 # デプロイコマンドをここに記述20 only:21 - master # masterブランチでのみ実行22 when: on_success # testジョブが成功した場合にのみ実行

このymlファイルによるCIをわざと失敗させるために、適当なブランチ(test-branchとした)を作成し、ymlのtestステージのscriptに以下の1行を追加しました。

yml

1 script:2 - .exe.main

このとき、ディレクトリ内にexe.mainはおいていないので、testジョブは失敗し以下のメッセージが出力されました。
"The term '.main.exe' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again."
ジョブが失敗したので、ymlの変更分は本来は反映させたくないのですが、testブランチにはこのymlが反映されております。

補足

特になし

コメントを投稿

0 コメント