User Tools

Site Tools


gitlab_satis

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
gitlab_satis [2018/10/10 15:06]
admin
gitlab_satis [2018/11/14 16:54] (current)
admin [Optional]
Line 44: Line 44:
 ===== Configuration ===== ===== Configuration =====
  
-Go to User Settings -> Access Tokens, give it a name and allow api scope. Hit "Create personal access token" and copy it to your configuration (arguments -> gitlab-token). See below ...+Go to Project -> Settings -> CI/CD -> Pipeline Triggers, give it a name and allow api scope. Hit "Add Trigger" and copy it to your configuration (arguments -> gitlab-token). See below ...
 ==== Using Environment variable ==== ==== Using Environment variable ====
  
Line 63: Line 63:
   homepage: "https://satis.example.org"   homepage: "https://satis.example.org"
   output: "satis.json"   output: "satis.json"
-  use-file-to-include: '.satisinclude'+  include-if-has-file: '.satisinclude'
   template: '/path/to/satis-template.example.json'   template: '/path/to/satis-template.example.json'
   archive: true   archive: true
Line 113: Line 113:
 <code ruby gitlab_pages_satis.rb> <code ruby gitlab_pages_satis.rb>
 #!/usr/bin/env ruby #!/usr/bin/env ruby
 +
 +#### Config begin
 +
 +# Trigger Token, see Project -> Settings -> CI/CD -> Pipeline triggers
 +trigger_token="XXXXXXXX"
 +
 +# Private Token, see User -> Access Tokens -> Personal Access Tokens
 +auth_token="XXXXXXXX"
 +
 +# GitLab install
 +gitlab_url="https://gitlab.example.org/"
 +
 +# Satis Project id (integer, not the project name)
 +satis_project_id="XX"
 +
 +#### Config end
  
 require 'json' require 'json'
Line 125: Line 141:
  shaFile = "#{temp}/gitlab-trigger.sha"  shaFile = "#{temp}/gitlab-trigger.sha"
  
- # Get hash values to compare + # Get refs to compare 
- payloadHash = "#{payload['before']} #{payload['after']}" + payloadCurrent = "#{payload['ref']}" 
- payloadHashBefore = File.read(shaFile) if File.exist?(shaFile)+ payloadBefore = File.read(shaFile) if File.exist?(shaFile)
  
- # Save before and after hash to compare+ # Save refs to compare on next run ...
  File.delete(shaFile) if File.exist?(shaFile)  File.delete(shaFile) if File.exist?(shaFile)
- File.write(shaFile, "#{payload['before']} #{payload['after']}")+ File.write(shaFile, "#{payload['ref']}") 
 + 
 + # Check if composer files exists in project 
 + project_id="#{payload['project_id']}" 
 + composerExists = `curl -o /dev/null -s -w \"%{http_code}\" --request GET --header 'PRIVATE-TOKEN: #{auth_token}' '#{gitlab_url}/api/v4/projects/#{project_id}/repository/files/composer%2Ejson/raw?ref=master'`
  
  # Trigger Pipeline  # Trigger Pipeline
-  if payloadHashBefore != payloadHash +  if payloadBefore != payloadCurrent && composerExists == '200' 
-  exec('curl --request POST --form "token=XXXXXXX" --form ref=master https://gitlab.example.org/api/v4/projects/36/trigger/pipeline')+  exec("curl --request POST --form \"token=#{trigger_token}\" --form ref=master #{gitlab_url}/api/v4/projects/#{satis_project_id}/trigger/pipeline")
  end  end
 +
 end end
 </code> </code>
gitlab_satis.1539176794.txt.gz · Last modified: 2018/10/10 15:06 by admin