diff --git a/app/models/project.rb b/app/models/project.rb
index ba04470c64e20e929220f6e4e1c1d63be82f3826..e1f7bf971e384df359e552d56f7f96f115f5fa81 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -830,11 +830,13 @@ class Project < ActiveRecord::Base
   end
 
   def valid_runners_token? token
-    self.token && self.token == token
+    self.runners_token && self.runners_token == token
   end
 
+  # TODO (ayufan): For now we use runners_token (backward compatibility)
+  # In 8.4 every build will have its own individual token valid for time of build
   def valid_build_token? token
-    self.token && self.token == token
+    self.builds_enabled? && self.runners_token && self.runners_token == token
   end
 
   def build_coverage_enabled?
diff --git a/app/views/projects/commit/_builds.html.haml b/app/views/projects/commit/_builds.html.haml
index e65a5a9c2de2861b47bdaf1743f82e8526e667e2..329aaa0bb8b77bfd4ee9dbb76aceccd872db2776 100644
--- a/app/views/projects/commit/_builds.html.haml
+++ b/app/views/projects/commit/_builds.html.haml
@@ -39,12 +39,12 @@
         %th Name
         %th Duration
         %th Finished at
-        - if @ci_commit.project.coverage_enabled?
+        - if @ci_commit.project.build_coverage_enabled?
           %th Coverage
         %th
     - @ci_commit.refs.each do |ref|
       = render partial: "projects/commit_statuses/commit_status", collection: @ci_commit.statuses.for_ref(ref).latest.ordered,
-               locals: { coverage: @ci_commit.project.coverage_enabled?, stage: true, allow_retry: true }
+               locals: { coverage: @ci_commit.project.build_coverage_enabled?, stage: true, allow_retry: true }
 
 - if @ci_commit.retried.any?
   .gray-content-block.second-block
@@ -61,8 +61,8 @@
           %th Name
           %th Duration
           %th Finished at
-          - if @ci_commit.project.coverage_enabled?
+          - if @ci_commit.project.build_coverage_enabled?
             %th Coverage
           %th
       = render partial: "projects/commit_statuses/commit_status", collection: @ci_commit.retried,
-               locals: { coverage: @ci_commit.project.coverage_enabled?, stage: true }
+               locals: { coverage: @ci_commit.project.build_coverage_enabled?, stage: true }
diff --git a/app/views/projects/triggers/index.html.haml b/app/views/projects/triggers/index.html.haml
index fb3794764c54434480f96220e260a9bdd87bc8cf..bd346c4b8e6f247e63897829b37af2b1f44ed59c 100644
--- a/app/views/projects/triggers/index.html.haml
+++ b/app/views/projects/triggers/index.html.haml
@@ -68,4 +68,4 @@
            -F token=TOKEN \
            -F "ref=REF_NAME" \
            -F "variables[RUN_NIGHTLY_BUILD]=true" \
-           #{builds_trigger_url(@project.id, 'TOKEN')}
+           #{builds_trigger_url(@project.id)}
diff --git a/lib/gitlab/backend/grack_auth.rb b/lib/gitlab/backend/grack_auth.rb
index d854c1c8683af28fb3840807e5f467d9a0c880a1..cdcaae8094cc0199bdb919c0d83c558726a08006 100644
--- a/lib/gitlab/backend/grack_auth.rb
+++ b/lib/gitlab/backend/grack_auth.rb
@@ -78,7 +78,7 @@ module Grack
         underscored_service = matched_login['s'].underscore
 
         if underscored_service == 'gitlab_ci'
-          return project && project.builds_enabled? && project.valid_build_token?(password)
+          return project && project.valid_build_token?(password)
         elsif Service.available_services_names.include?(underscored_service)
           service_method = "#{underscored_service}_service"
           service = project.send(service_method)
diff --git a/spec/models/build_spec.rb b/spec/models/build_spec.rb
index 1fd475d205e27d6d901baa12c0a4831f20a3dd6a..96b6f1dbca6b24e365a367bdef7acfc0e8cb03d4 100644
--- a/spec/models/build_spec.rb
+++ b/spec/models/build_spec.rb
@@ -386,7 +386,7 @@ describe Ci::Build, models: true do
     it { is_expected.to be_a(String) }
     it { is_expected.to end_with(".git") }
     it { is_expected.to start_with(project.web_url[0..6]) }
-    it { is_expected.to include(project.token) }
+    it { is_expected.to include(build.token) }
     it { is_expected.to include('gitlab-ci-token') }
     it { is_expected.to include(project.web_url[7..-1]) }
   end
diff --git a/spec/models/commit_status_spec.rb b/spec/models/commit_status_spec.rb
index 6131191f0fabfbdcdb04bbf3c6ebb58f18de3f7c..b8f901b34335151b77cac7f8ca3ffc1d940c231c 100644
--- a/spec/models/commit_status_spec.rb
+++ b/spec/models/commit_status_spec.rb
@@ -39,12 +39,13 @@ describe CommitStatus, models: true do
 
   it { is_expected.to belong_to(:commit) }
   it { is_expected.to belong_to(:user) }
+  it { is_expected.to belong_to(:project) }
+
   it { is_expected.to validate_presence_of(:name) }
   it { is_expected.to validate_inclusion_of(:status).in_array(%w(pending running failed success canceled)) }
 
   it { is_expected.to delegate_method(:sha).to(:commit) }
   it { is_expected.to delegate_method(:short_sha).to(:commit) }
-  it { is_expected.to delegate_method(:project).to(:commit) }
   
   it { is_expected.to respond_to :success? }
   it { is_expected.to respond_to :failed? }
diff --git a/spec/services/create_commit_builds_service_spec.rb b/spec/services/create_commit_builds_service_spec.rb
index ae56f0b3a9ac53bb9db1292a7ba1bfe930ff9125..798c480b81af73a159eeeb0da3edc5cd836d710e 100644
--- a/spec/services/create_commit_builds_service_spec.rb
+++ b/spec/services/create_commit_builds_service_spec.rb
@@ -20,11 +20,11 @@ describe CreateCommitBuildsService, services: true do
         )
       end
 
-      it { expect(commit).to be_kind_of(Commit) }
+      it { expect(commit).to be_kind_of(Ci::Commit) }
       it { expect(commit).to be_valid }
       it { expect(commit).to be_persisted }
       it { expect(commit).to eq(project.ci_commits.last) }
-      it { expect(commit.builds.first).to be_kind_of(Build) }
+      it { expect(commit.builds.first).to be_kind_of(Ci::Build) }
     end
 
     context "skip tag if there is no build for it" do