Skip to content

Commit

Permalink
chore(ci): add the needed files for enabling ci
Browse files Browse the repository at this point in the history
  • Loading branch information
hadiidbouk committed Dec 5, 2023
1 parent c8148ab commit 1280155
Show file tree
Hide file tree
Showing 7 changed files with 373 additions and 0 deletions.
14 changes: 14 additions & 0 deletions .env.release
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# General
GIT_TOKEN=$GITHUB_TOKEN
REPOSITORY_NAME=Fueled/figma-export
BUILD_CONFIGURATION=Release
SCHEME=figma-export
VERSION_BUMP_TYPE=patch
FORCE_NECESSARY=true

# Linear
FUELED_LINEAR_API_KEY=$FUELED_LINEAR_API_KEY
FUELED_LINEAR_TEAM_ID=
FUELED_LINEAR_LABELS=
FUELED_LINEAR_FROM_STATE=
FUELED_LINEAR_TO_STATE=
7 changes: 7 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
source "https://rubygems.org"

gem "fastlane"
gem 'xcode-install'

plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)
229 changes: 229 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,229 @@
GIT
remote: https://github.com/Fueled/fastlane-plugin-fueled
revision: 15f74bb16ce0b388f785e36fba53b933d4791588
tag: 0.3.0
specs:
fastlane-plugin-fueled (0.3.0)
fastlane-plugin-appcenter (~> 2.0.0)
fastlane-plugin-versioning (~> 0.5.0)

GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.6)
rexml
addressable (2.8.5)
public_suffix (>= 2.0.2, < 6.0)
artifactory (3.0.15)
atomos (0.1.3)
aws-eventstream (1.3.0)
aws-partitions (1.862.0)
aws-sdk-core (3.190.0)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.8)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.74.0)
aws-sdk-core (~> 3, >= 3.188.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.141.0)
aws-sdk-core (~> 3, >= 3.189.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.8)
aws-sigv4 (1.8.0)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
claide (1.1.0)
colored (1.2)
colored2 (3.1.2)
commander (4.6.0)
highline (~> 2.0.0)
declarative (0.0.20)
digest-crc (0.6.5)
rake (>= 12.0.0, < 14.0.0)
domain_name (0.6.20231109)
dotenv (2.8.1)
emoji_regex (3.2.3)
excon (0.105.0)
faraday (1.10.3)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-httpclient (~> 1.0)
faraday-multipart (~> 1.0)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.0)
faraday-patron (~> 1.0)
faraday-rack (~> 1.0)
faraday-retry (~> 1.0)
ruby2_keywords (>= 0.0.4)
faraday-cookie_jar (0.0.7)
faraday (>= 0.8.0)
http-cookie (~> 1.0.0)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-multipart (1.0.4)
multipart-post (~> 2)
faraday-net_http (1.0.1)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday-retry (1.0.3)
faraday_middleware (1.2.0)
faraday (~> 1.0)
fastimage (2.2.7)
fastlane (2.217.0)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0)
aws-sdk-s3 (~> 1.0)
babosa (>= 1.0.3, < 2.0.0)
bundler (>= 1.12.0, < 3.0.0)
colored
commander (~> 4.6)
dotenv (>= 2.1.1, < 3.0.0)
emoji_regex (>= 0.1, < 4.0)
excon (>= 0.71.0, < 1.0.0)
faraday (~> 1.0)
faraday-cookie_jar (~> 0.0.6)
faraday_middleware (~> 1.0)
fastimage (>= 2.1.0, < 3.0.0)
gh_inspector (>= 1.1.2, < 2.0.0)
google-apis-androidpublisher_v3 (~> 0.3)
google-apis-playcustomapp_v1 (~> 0.1)
google-cloud-storage (~> 1.31)
highline (~> 2.0)
http-cookie (~> 1.0.5)
json (< 3.0.0)
jwt (>= 2.1.0, < 3)
mini_magick (>= 4.9.4, < 5.0.0)
multipart-post (>= 2.0.0, < 3.0.0)
naturally (~> 2.2)
optparse (~> 0.1.1)
plist (>= 3.1.0, < 4.0.0)
rubyzip (>= 2.0.0, < 3.0.0)
security (= 0.1.3)
simctl (~> 1.6.3)
terminal-notifier (>= 2.0.0, < 3.0.0)
terminal-table (~> 3)
tty-screen (>= 0.6.3, < 1.0.0)
tty-spinner (>= 0.8.0, < 1.0.0)
word_wrap (~> 1.0.0)
xcodeproj (>= 1.13.0, < 2.0.0)
xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3)
fastlane-plugin-appcenter (2.0.0)
fastlane-plugin-versioning (0.5.2)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.53.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-core (0.11.2)
addressable (~> 2.5, >= 2.5.1)
googleauth (>= 0.16.2, < 2.a)
httpclient (>= 2.8.1, < 3.a)
mini_mime (~> 1.0)
representable (~> 3.0)
retriable (>= 2.0, < 4.a)
rexml
webrick
google-apis-iamcredentials_v1 (0.17.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-playcustomapp_v1 (0.13.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-storage_v1 (0.29.0)
google-apis-core (>= 0.11.0, < 2.a)
google-cloud-core (1.6.0)
google-cloud-env (~> 1.0)
google-cloud-errors (~> 1.0)
google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0)
google-cloud-errors (1.3.1)
google-cloud-storage (1.45.0)
addressable (~> 2.8)
digest-crc (~> 0.4)
google-apis-iamcredentials_v1 (~> 0.1)
google-apis-storage_v1 (~> 0.29.0)
google-cloud-core (~> 1.6)
googleauth (>= 0.16.2, < 2.a)
mini_mime (~> 1.0)
googleauth (1.8.1)
faraday (>= 0.17.3, < 3.a)
jwt (>= 1.4, < 3.0)
multi_json (~> 1.11)
os (>= 0.9, < 2.0)
signet (>= 0.16, < 2.a)
highline (2.0.3)
http-cookie (1.0.5)
domain_name (~> 0.5)
httpclient (2.8.3)
jmespath (1.6.2)
json (2.7.0)
jwt (2.7.1)
mini_magick (4.12.0)
mini_mime (1.1.5)
multi_json (1.15.0)
multipart-post (2.3.0)
nanaimo (0.3.0)
naturally (2.2.1)
optparse (0.1.1)
os (1.1.4)
plist (3.7.0)
public_suffix (5.0.4)
rake (13.1.0)
representable (3.2.0)
declarative (< 0.1.0)
trailblazer-option (>= 0.1.1, < 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
rexml (3.2.6)
rouge (2.0.7)
ruby2_keywords (0.0.5)
rubyzip (2.3.2)
security (0.1.3)
signet (0.18.0)
addressable (~> 2.8)
faraday (>= 0.17.5, < 3.a)
jwt (>= 1.5, < 3.0)
multi_json (~> 1.10)
simctl (1.6.10)
CFPropertyList
naturally
terminal-notifier (2.0.0)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
trailblazer-option (0.1.2)
tty-cursor (0.7.1)
tty-screen (0.8.1)
tty-spinner (0.9.3)
tty-cursor (~> 0.7)
uber (0.1.0)
unicode-display_width (2.5.0)
webrick (1.8.1)
word_wrap (1.0.0)
xcode-install (2.8.1)
claide (>= 0.9.1)
fastlane (>= 2.1.0, < 3.0.0)
xcodeproj (1.23.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.3.0)
rexml (~> 3.2.4)
xcpretty (0.3.0)
rouge (~> 2.0.7)
xcpretty-travis-formatter (1.0.1)
xcpretty (~> 0.2, >= 0.0.7)

PLATFORMS
arm64-darwin-23

DEPENDENCIES
fastlane
fastlane-plugin-fueled!
xcode-install

BUNDLED WITH
2.4.20
36 changes: 36 additions & 0 deletions codemagic.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
workflows:
pr-check:
name: PR Check
triggering:
events:
- pull_request
cancel_previous_builds: true
when:
condition: not event.pull_request.draft
max_build_duration: 45
environment:
xcode: 15
scripts:
- name: Test
script: swift test

release:
name: Release from the fueled branch
max_build_duration: 45
triggering:
events:
- push
branch_patterns:
- pattern: fueled
cancel_previous_builds: true
environment:
xcode: 15
groups:
- project-secrets
scripts:
- name: Project Setup
script: |
gem install bundler
bundle install
- name: Run Fastlane
script: bundle exec fastlane mac release --env release
46 changes: 46 additions & 0 deletions fastlane/Fastfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import 'helpers.rb'

fastlane_version '2.206.0'
opt_out_usage

platform :mac do
lane :release do
Dir.chdir("..") do
sh("swift build -c release --arch arm64 --arch x86_64")
sh("cp ./.build/apple/Products/Release/figma-export ./Release/figma-export")
sh("cp -r ./.build/apple/Products/Release/figma-export_AndroidExport.bundle ./Release/figma-export_AndroidExport.bundle")
sh("cp -r ./.build/apple/Products/Release/figma-export_XcodeExport.bundle ./Release/figma-export_XcodeExport.bundle")
sh("zip -r figma-export.zip Release LICENSE")
end

current_short_version = short_version_from_tag()
puts "current_short_version: #{current_short_version}"

new_short_version = bump_semver(semver: current_short_version, bump_type: ENV["VERSION_BUMP_TYPE"])
puts "new_short_version: #{new_short_version}"

use_git_credential_store

tag_name = "v#{new_short_version}"
UI.message("Tagging #{tag_name}...")

if is_ci
sh("git tag -f \"#{tag_name}\" && git push origin \"refs/tags/#{tag_name}\" --force")

last_commit_message = sh("git log -1 --pretty=%B").strip

set_github_release(
repository_name: ENV["REPOSITORY_NAME"],
api_bearer: ENV["GIT_TOKEN"],
name: tag_name,
tag_name: tag_name,
description: last_commit_message,
upload_assets: [
"../figma-export.zip"
]
)
else
UI.message("Skipping tagging and github release because this is not a CI build")
end
end
end
1 change: 1 addition & 0 deletions fastlane/Pluginfile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
gem 'fastlane-plugin-fueled', git: "https://github.com/Fueled/fastlane-plugin-fueled", tag: '0.3.0'
40 changes: 40 additions & 0 deletions fastlane/helpers.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Returns the current short version, only by reading the last tag.
def short_version_from_tag()
UI.important("Setting short_version from most recent tag")
last_tag = fetch_last_tag
last_tag = (last_tag.nil? || last_tag.empty?) ? "v0.0.0" : last_tag
last_tag[1..-1]
end

# Bump a given semver version, by incrementing the appropriate
# component, as per the bump_type (patch, minor, major, or none).
def bump_semver(semver:, bump_type:)
splitted_version = {
major: semver.split('.').map(&:to_i)[0] || 0,
minor: semver.split('.').map(&:to_i)[1] || 0,
patch: semver.split('.').map(&:to_i)[2] || 0
}
case bump_type
when "patch"
splitted_version[:patch] = splitted_version[:patch] + 1
when "minor"
splitted_version[:minor] = splitted_version[:minor] + 1
splitted_version[:patch] = 0
when "major"
splitted_version[:major] = splitted_version[:major] + 1
splitted_version[:minor] = 0
splitted_version[:patch] = 0
end
[splitted_version[:major], splitted_version[:minor], splitted_version[:patch]].map(&:to_s).join('.')
end

# Returns the last tag in the repo
def fetch_last_tag()
tag = nil
git_cmd = "git tag -l --sort=-v:refname | grep -iF '' -m 1"
begin
tag = sh(git_cmd)
rescue FastlaneCore::Interface::FastlaneShellError
end
tag
end

0 comments on commit 1280155

Please sign in to comment.