ci_toolkit 1.3.17 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 883207d3f29050dad756ee30f072af4ee6e0d25a2ebb6739c2c7353f0fe3e7e0
4
- data.tar.gz: 7804a7d066e5b5550d0ef373c2f55753abd62f615a69bfa47ae73607bbdda8ae
3
+ metadata.gz: 7c3a2dc78e17b33a1f5cec89d973abd60bc9c972ec8d5d99c7547fd1ec0591f1
4
+ data.tar.gz: 1ac3f0583f2e9acb470dde9ecc5154003350c444a9e86e5a113722df38cfdc50
5
5
  SHA512:
6
- metadata.gz: 0a2d27d94b95f311dc675105790a19ddd81849ebad508875fe69b2a6a37326cc056fda20ebc141e29e9f54e59a099254fc0a6853b84d4d3ff869a0ef42ef3f90
7
- data.tar.gz: 7217613bbd0774d92857d8db7b34e7e48f70c34c66285efc55c2bdf58a417582f599a7500f41d5ede9e1dba7e9868826b94d251343b1867cc9928cbab7a6d547
6
+ metadata.gz: 37dfe3cb4c7f72b0489f0dbdc792ba6f7b5cc79af67b45d8b3256c1ed83dbef1cb3eb7597304015738e33cb80ee5a1138a501d46872640a7013088c5c6c04320
7
+ data.tar.gz: 7e6cd2c35898d510f419c6b915d29fdf0a6fcfd252b6bd34dd3d17f74dc411241a7547a839c809b9c8d1d2a1a8c20dbbe0dbc757b3aeff85a5a75a6b8254e3be
@@ -0,0 +1,13 @@
1
+ # [Choice] Ruby version (use -bullseye variants on local arm64/Apple Silicon): 3, 3.0, 2, 2.7, 2.6, 3-bullseye, 3.0-bullseye, 2-bullseye, 2.7-bullseye, 2.6-bullseye, 3-buster, 3.0-buster, 2-buster, 2.7-buster, 2.6-buster
2
+ ARG VARIANT=2-bullseye
3
+ FROM mcr.microsoft.com/vscode/devcontainers/ruby:0-${VARIANT}
4
+
5
+ # [Choice] Node.js version: none, lts/*, 16, 14, 12, 10
6
+ ARG NODE_VERSION="none"
7
+ RUN if [ "${NODE_VERSION}" != "none" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi
8
+
9
+ # [Optional] Uncomment this line to install additional gems.
10
+ RUN gem install bundler
11
+
12
+ # [Optional] Uncomment this line to install global node packages.
13
+ # RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1
@@ -0,0 +1,43 @@
1
+ # [Choice] Ruby version (use -bullseye variants on local arm64/Apple Silicon): 3, 3.0, 2, 2.7, 2.6, 3-bullseye, 3.0-bullseye, 2-bullseye, 2.7-bullseye, 2.6-bullseye, 3-buster, 3.0-buster, 2-buster, 2.7-buster, 2.6-buster
2
+ ARG VARIANT=2-bullseye
3
+ FROM ruby:${VARIANT}
4
+
5
+ # Copy library scripts to execute
6
+ COPY library-scripts/*.sh library-scripts/*.env /tmp/library-scripts/
7
+
8
+ # [Option] Install zsh
9
+ ARG INSTALL_ZSH="true"
10
+ # [Option] Upgrade OS packages to their latest versions
11
+ ARG UPGRADE_PACKAGES="true"
12
+ # Install needed packages and setup non-root user. Use a separate RUN statement to add your own dependencies.
13
+ ARG USERNAME=vscode
14
+ ARG USER_UID=1000
15
+ ARG USER_GID=$USER_UID
16
+ RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
17
+ # Remove imagemagick due to https://security-tracker.debian.org/tracker/CVE-2019-10131
18
+ && apt-get purge -y imagemagick imagemagick-6-common \
19
+ # Install common packages, non-root user, rvm, core build tools
20
+ && bash /tmp/library-scripts/common-debian.sh "${INSTALL_ZSH}" "${USERNAME}" "${USER_UID}" "${USER_GID}" "${UPGRADE_PACKAGES}" "true" "true" \
21
+ && bash /tmp/library-scripts/ruby-debian.sh "none" "${USERNAME}" "true" "true" \
22
+ && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/*
23
+
24
+ # [Choice] Node.js version: none, lts/*, 16, 14, 12, 10
25
+ ARG NODE_VERSION="none"
26
+ ENV NVM_DIR=/usr/local/share/nvm
27
+ ENV NVM_SYMLINK_CURRENT=true \
28
+ PATH=${NVM_DIR}/current/bin:${PATH}
29
+ RUN bash /tmp/library-scripts/node-debian.sh "${NVM_DIR}" "${NODE_VERSION}" "${USERNAME}" \
30
+ && apt-get clean -y && rm -rf /var/lib/apt/lists/*
31
+
32
+ # Remove library scripts for final image
33
+ RUN rm -rf /tmp/library-scripts
34
+
35
+ # [Optional] Uncomment this section to install additional OS packages.
36
+ # RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
37
+ # && apt-get -y install --no-install-recommends <your-package-list-here>
38
+
39
+ # [Optional] Uncomment this line to install additional gems.
40
+ # RUN gem install <your-gem-names-here>
41
+
42
+ # [Optional] Uncomment this line to install global node packages.
43
+ # RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1
@@ -0,0 +1,35 @@
1
+ // For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
2
+ // https://github.com/microsoft/vscode-dev-containers/tree/v0.202.5/containers/ruby
3
+ {
4
+ "name": "Ruby",
5
+ "runArgs": ["--init"],
6
+ "build": {
7
+ "dockerfile": "Dockerfile",
8
+ "args": {
9
+ // Update 'VARIANT' to pick a Ruby version: 3, 3.0, 2, 2.7, 2.6
10
+ // Append -bullseye or -buster to pin to an OS version.
11
+ // Use -bullseye variants on local on arm64/Apple Silicon.
12
+ "VARIANT": "3-bullseye",
13
+ // Options
14
+ "NODE_VERSION": "none"
15
+ }
16
+ },
17
+
18
+ // Set *default* container specific settings.json values on container create.
19
+ "settings": {},
20
+
21
+ // Add the IDs of extensions you want installed when the container is created.
22
+ "extensions": [
23
+ "rebornix.Ruby"
24
+ ],
25
+
26
+ // Use 'forwardPorts' to make a list of ports inside the container available locally.
27
+ // "forwardPorts": [],
28
+
29
+ // Use 'postCreateCommand' to run commands after the container is created.
30
+ "postCreateCommand": "bundle install",
31
+
32
+ // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
33
+ "remoteUser": "vscode"
34
+
35
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "ruby.useLanguageServer": true,
3
+ "ruby.useBundler": true,
4
+ "ruby.lint": {
5
+ "rubocop": {
6
+ "useBundler": true // enable rubocop via bundler
7
+ }
8
+ },
9
+ "ruby.intellisense": "rubyLocate",
10
+ "ruby.codeCompletion": "rcodetools"
11
+ }
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ci_toolkit (1.3.17)
4
+ ci_toolkit (1.4.0)
5
5
  faraday
6
6
  faraday_middleware
7
7
  jwt
data/README.md CHANGED
@@ -21,7 +21,7 @@ Or install it yourself as:
21
21
 
22
22
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec/test/test-unit` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
23
23
 
24
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
24
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version in `ci_toolkit.gemspec`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
25
25
 
26
26
  ## Contributing
27
27
 
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "octokit"
4
+ require "jwt"
5
+
6
+ module CiToolkit
7
+ # Utility class that provides an access token that can be used with the Github API
8
+ class GithubBot
9
+ # Provides a jwt token for authentication. Sores the private key and app id for the bot
10
+ class Credentials
11
+ attr_reader :app_id
12
+
13
+ def initialize(app_id = ENV["CRVSH_BOT_GITHUB_APP_ID"], private_key = ENV["CRVSH_BOT_GITHUB_APP_PRIVATE_KEY"])
14
+ @app_id = app_id.to_i
15
+ @private_key = private_key
16
+ end
17
+
18
+ def jwt_token
19
+ JWT.encode(
20
+ {
21
+ iat: Time.now.to_i,
22
+ exp: Time.now.to_i + (9 * 60),
23
+ iss: @app_id
24
+ },
25
+ OpenSSL::PKey::RSA.new(@private_key),
26
+ "RS256"
27
+ )
28
+ end
29
+ end
30
+ # stack = Faraday::RackBuilder.new do |builder|
31
+ # builder.response :logger
32
+ # builder.use Octokit::Response::RaiseError
33
+ # builder.adapter Faraday.default_adapter
34
+ # end
35
+ # Octokit.middleware = stack
36
+
37
+ def initialize(
38
+ credentials = CiToolkit::GithubBot::Credentials.new,
39
+ client = Octokit::Client.new(bearer_token: credentials.jwt_token, auto_paginate: true)
40
+ )
41
+ @app_id = credentials.app_id
42
+ @client = client
43
+ end
44
+
45
+ def create_token
46
+ return unless (installation_id = find_app_installation)
47
+
48
+ @client.create_app_installation_access_token(
49
+ installation_id,
50
+ { accept: Octokit::Preview::PREVIEW_TYPES[:integrations] }
51
+ )[:token]
52
+ end
53
+
54
+ private
55
+
56
+ def find_app_installation
57
+ @client.find_app_installations(
58
+ { accept: Octokit::Preview::PREVIEW_TYPES[:integrations] }
59
+ ).select { |installation| @app_id.equal?(installation[:app_id]) }.first[:id]
60
+ end
61
+ end
62
+ end
@@ -16,7 +16,7 @@ module CiToolkit
16
16
  @commit_sha = env.git_commit
17
17
  @_client = client
18
18
  @build_types = build_types
19
- @access = CiToolkit::GithubAccess.new
19
+ @bot = CiToolkit::GithubBot.new
20
20
  end
21
21
 
22
22
  def title
@@ -110,7 +110,7 @@ module CiToolkit
110
110
 
111
111
  def client
112
112
  @_client = Octokit::Client.new if @_client.nil?
113
- @_client.access_token = @access.create_token if @_client.access_token.nil?
113
+ @_client.access_token = @bot.create_token if @_client.access_token.nil?
114
114
 
115
115
  @_client
116
116
  end
data/lib/ci_toolkit.rb CHANGED
@@ -4,7 +4,7 @@ require "ci_toolkit/bitrise_env"
4
4
  require "ci_toolkit/build"
5
5
  require "ci_toolkit/build_status"
6
6
  require "ci_toolkit/duplicate_files_finder"
7
- require "ci_toolkit/github_access"
7
+ require "ci_toolkit/github_bot"
8
8
  require "ci_toolkit/github_pr"
9
9
  require "ci_toolkit/git"
10
10
  require "ci_toolkit/jira"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ci_toolkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.17
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gero Keller
@@ -186,8 +186,12 @@ executables: []
186
186
  extensions: []
187
187
  extra_rdoc_files: []
188
188
  files:
189
+ - ".devcontainer/Dockerfile"
190
+ - ".devcontainer/base.Dockerfile"
191
+ - ".devcontainer/devcontainer.json"
189
192
  - ".rspec"
190
193
  - ".rubocop.yml"
194
+ - ".vscode/settings.json"
191
195
  - CHANGELOG.md
192
196
  - CODE_OF_CONDUCT.md
193
197
  - Gemfile
@@ -205,7 +209,7 @@ files:
205
209
  - lib/ci_toolkit/build_status.rb
206
210
  - lib/ci_toolkit/duplicate_files_finder.rb
207
211
  - lib/ci_toolkit/git.rb
208
- - lib/ci_toolkit/github_access.rb
212
+ - lib/ci_toolkit/github_bot.rb
209
213
  - lib/ci_toolkit/github_pr.rb
210
214
  - lib/ci_toolkit/jira.rb
211
215
  - lib/ci_toolkit/pr_messenger.rb
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "octokit"
4
- require "jwt"
5
-
6
- module CiToolkit
7
- # Utility class that provides an access token that can be used with the Github API
8
- class GithubAccess
9
- # stack = Faraday::RackBuilder.new do |builder|
10
- # builder.response :logger
11
- # builder.use Octokit::Response::RaiseError
12
- # builder.adapter Faraday.default_adapter
13
- # end
14
- # Octokit.middleware = stack
15
-
16
- def initialize(app_id = ENV["CRVSH_BOT_GITHUB_APP_ID"], private_key = ENV["CRVSH_BOT_GITHUB_APP_PRIVATE_KEY"])
17
- @app_id = app_id.to_i
18
- @private_key = private_key
19
- @client = Octokit::Client.new(bearer_token: jwt_token, auto_paginate: true)
20
- end
21
-
22
- def create_token
23
- return unless (installation_id = find_app_installation)
24
-
25
- @client.create_app_installation_access_token(
26
- installation_id,
27
- { accept: Octokit::Preview::PREVIEW_TYPES[:integrations] }
28
- )[:token]
29
- end
30
-
31
- private
32
-
33
- def find_app_installation
34
- @client.find_app_installations(
35
- { accept: Octokit::Preview::PREVIEW_TYPES[:integrations] }
36
- ).select { |installation| installation[:app_id] == @app_id }.first[:id]
37
- end
38
-
39
- def jwt_token
40
- JWT.encode(
41
- {
42
- iat: Time.now.to_i,
43
- exp: Time.now.to_i + (9 * 60),
44
- iss: @app_id
45
- },
46
- OpenSSL::PKey::RSA.new(@private_key),
47
- "RS256"
48
- )
49
- end
50
- end
51
- end