GITLAB CIパイプラインは、プロジェクトアクセストークンを使用してAPIコミットを使用する際に失敗しました


--- auth-origin.rb  2020-10-11 06:00:00.000000000 +0800
+++ auth-patch.rb   2020-10-11 06:00:00.000000000 +0800
@@ -47,7 +47,7 @@
         # is enabled.
         result =
           service_request_check(login, password, project) ||
-          build_access_token_check(login, password) ||
+          build_access_token_check(login, password, project) ||
           lfs_token_check(login, password, project) ||
           oauth_access_token_check(login, password) ||
           personal_access_token_check(password, project) ||
@@ -276,16 +276,17 @@
         end
       end

-      def build_access_token_check(login, password)
+      def build_access_token_check(login, password, project)
         return unless login == CI_JOB_USER
         return unless password

         build = find_build_by_token(password)
         return unless build
         return unless build.project.builds_enabled?
+        return if project && build.user.project_bot? && !project.bots.include?(build.user)

         if build.user
-          return unless build.user.can?(:log_in)
+          return unless build.user.project_bot? || build.user.can?(:log_in)

           # If user is assigned to build, use restricted credentials of user
           Gitlab::Auth::Result.new(build.user, build.project, :build, build_authentication_abilities)