Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/safari support #929

Merged
merged 31 commits into from
Aug 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
bb00b8b
adds lavamoat allow scripts, adds setup command to use instead of ins…
aristidesstaffieri Jul 19, 2023
67ff40b
adds allow scripts and configures allow list for all workspaces
aristidesstaffieri Jul 21, 2023
d75e9fc
Merge branch 'master' into release/5.2.5
piyalbasu Jul 25, 2023
e4fa3a7
adds initial apple upload script
aristidesstaffieri Jul 26, 2023
b1f65bd
adds env vars for apple deployment
aristidesstaffieri Jul 31, 2023
674992a
updates upload command and adds new args
aristidesstaffieri Aug 1, 2023
a15af6e
refactor upload script, uses archive correctly
aristidesstaffieri Aug 2, 2023
2ae825e
uses correct yaml structure
aristidesstaffieri Aug 2, 2023
07313bf
corrects yaml indent
aristidesstaffieri Aug 2, 2023
1812fa8
temporarily moves safari build to its own action
aristidesstaffieri Aug 2, 2023
89ce8f1
adds fastlane initial setup
aristidesstaffieri Aug 4, 2023
198dbc5
updates fast file provisioning profiles
aristidesstaffieri Aug 8, 2023
92245d0
updates fast file to use mac installer distribution
aristidesstaffieri Aug 30, 2023
9233949
adds safari submitProduction steps, removes old script and action
aristidesstaffieri Aug 30, 2023
008495b
resplit prod and safari build to use different images
aristidesstaffieri Aug 30, 2023
6fcc00e
adds GYM_PROJECT var
aristidesstaffieri Aug 31, 2023
3d00b5e
Merge remote-tracking branch 'origin' into feature/safari-support
aristidesstaffieri Aug 31, 2023
8cff13d
fix type error on api timeout routine
aristidesstaffieri Aug 31, 2023
ff3c10a
revert type shim from bad deps, use lock file from master
aristidesstaffieri Aug 31, 2023
78faa29
Update submitSafari.yml
aristidesstaffieri Aug 31, 2023
65b2734
tweak safari action, updates name, node version, and adds missing sec…
aristidesstaffieri Aug 31, 2023
285f7de
remove workflow dispatch from safari action
aristidesstaffieri Aug 31, 2023
fbee916
readd workflow dispatch in safari action
aristidesstaffieri Aug 31, 2023
54046c9
Merge remote-tracking branch 'origin' into feature/safari-support
aristidesstaffieri Dec 11, 2023
bfc35ff
cleans up readme from dev temp notes
aristidesstaffieri Dec 11, 2023
1c17813
adds dev notes for Safari
aristidesstaffieri Dec 11, 2023
7765b1a
Merge remote-tracking branch 'origin' into feature/safari-support
aristidesstaffieri Mar 6, 2024
9e61de5
Merge branch 'release/5.24.0' into feature/safari-support
aristidesstaffieri Aug 26, 2024
2e8058d
restore dependabot file from earlier merge
aristidesstaffieri Aug 26, 2024
40523c9
restore dependabot file from earlier merge
aristidesstaffieri Aug 26, 2024
cb5b894
add run target details to Safari testing docs section
aristidesstaffieri Aug 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
version: 2
updates:
- package-ecosystem: "npm"
directories:
directories:
- "/"
- "/@shared/api"
- "/@shared/helpers"
Expand All @@ -16,12 +16,12 @@ updates:
minor-and-patch:
applies-to: version-updates
update-types:
- "patch"
- "minor"
- "patch"
- "minor"
major:
applies-to: version-updates
update-types:
- "major"
- "major"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
Expand All @@ -32,4 +32,4 @@ updates:
groups:
all-actions:
applies-to: version-updates
patterns: [ "*" ]
patterns: ["*"]
81 changes: 81 additions & 0 deletions .github/workflows/submitSafari.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: Safari Deployment
on:
workflow_dispatch:
inputs:
version:
description: New Version
default: "1.0.0"
required: true
env:
GYM_PROJECT: "./extension/freighter-xcode"
jobs:
bump-version:
name: Bump Package Version and Submit Extension
runs-on: macos-latest
steps:
- uses: maxim-lobanov/setup-xcode@v1
- name: Checkout code
uses: actions/checkout@v2
- name: Update package.json version
uses: jossef/action-set-json-field@6e6d7e639f24b3955ef682815317b5613ac6ca12 #v1
with:
file: ./extension/package.json
field: version
value: ${{ github.event.inputs.version }}
- name: Update manifest-v2.json version_name
uses: jossef/action-set-json-field@6e6d7e639f24b3955ef682815317b5613ac6ca12 #v1
with:
file: ./extension/public/static/manifest/v2.json
field: version_name
value: ${{ github.event.inputs.version }}
- name: Update manifest-v3.json version_name
uses: jossef/action-set-json-field@6e6d7e639f24b3955ef682815317b5613ac6ca12 #v1
with:
file: ./extension/public/static/manifest/v3.json
field: version_name
value: ${{ github.event.inputs.version }}
- name: Get manifest.json version
id: manifest_version
uses: frabert/replace-string-action@4ec615c8a75164a61d8fb333ad5e2e86ff038af1 #v1.2
with:
string: ${{ github.event.inputs.version }}
pattern: \-(.*)
replace-with: ""
- name: Update manifest-v2.json version
uses: jossef/action-set-json-field@6e6d7e639f24b3955ef682815317b5613ac6ca12 #v1
with:
file: ./extension/public/static/manifest/v2.json
field: version
value: ${{ steps.manifest_version.outputs.replaced }}
- name: Update manifest-v3.json version
uses: jossef/action-set-json-field@6e6d7e639f24b3955ef682815317b5613ac6ca12 #v1
with:
file: ./extension/public/static/manifest/v3.json
field: version
value: ${{ steps.manifest_version.outputs.replaced }}
- name: Build extension
uses: actions/setup-node@v1
with:
node-version: "18"
- run: yarn setup && yarn build:freighter-api && yarn build:extension:production --env AMPLITUDE_KEY="${{ secrets.AMPLITUDE_KEY }}" SENTRY_KEY="${{ secrets.SENTRY_KEY }}"
- name: Convert extension to Xcode project
run: xcrun safari-web-extension-converter ./extension/build --project-location $GYM_PROJECT --macos-only
- name: Set up ruby env
uses: ruby/[email protected]
with:
ruby-version: 2.6.10
bundler-cache: true
- name: Bundle extension for Safari
run: bundle exec fastlane build
env:
GYM_PROJECT: $GYM_PROJECT
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
APPLE_APP_ID: ${{ secrets.APPLE_APP_ID }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
APPLE_USER_ID: ${{ secrets.APPLE_USER_ID }}
APPLE_KEY_ID: ${{ secrets.APPLE_KEY_ID }}
APPLE_ISSUER_ID: ${{ secrets.APPLE_ISSUER_ID }}
APPLE_B64_KEY: ${{ secrets.APPLE_B64_KEY }}
XCODE_PROJ_PATH: $GYM_PROJECT
- name: Upload archive to Apple Store
run: bundle exec fastlane upload
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,9 @@ node_modules

npm-debug.log*
yarn-debug.log*
yarn-error.log*
yarn-error.log*

# fastlane output
Freighter.app/
Freighter.pkg
Freighter.app.dSYM.zip
3 changes: 3 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
source "https://rubygems.org"

gem "fastlane"
218 changes: 218 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,218 @@
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.2.0)
aws-partitions (1.813.0)
aws-sdk-core (3.181.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.71.0)
aws-sdk-core (~> 3, >= 3.177.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.134.0)
aws-sdk-core (~> 3, >= 3.181.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.6)
aws-sigv4 (1.6.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.5.20190701)
unf (>= 0.0.5, < 1.0.0)
dotenv (2.8.1)
emoji_regex (3.2.3)
excon (0.102.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.214.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)
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 (>= 1.4.5, < 2.0.0)
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)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.49.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-core (0.11.1)
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.19.0)
google-apis-core (>= 0.9.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.44.0)
addressable (~> 2.8)
digest-crc (~> 0.4)
google-apis-iamcredentials_v1 (~> 0.1)
google-apis-storage_v1 (~> 0.19.0)
google-cloud-core (~> 1.6)
googleauth (>= 0.16.2, < 2.a)
mini_mime (~> 1.0)
googleauth (1.7.0)
faraday (>= 0.17.3, < 3.a)
jwt (>= 1.4, < 3.0)
memoist (~> 0.16)
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.6.3)
jwt (2.7.1)
memoist (0.16.2)
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.3)
rake (13.0.6)
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.17.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 (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
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)
unf (0.1.4)
unf_ext
unf_ext (0.0.8.2)
unicode-display_width (1.8.0)
webrick (1.8.1)
word_wrap (1.0.0)
xcodeproj (1.22.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
ruby

DEPENDENCIES
fastlane

BUNDLED WITH
1.17.2
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,17 @@ the extension.
`yarn build:\<workspace name\>`, like the equivalent start commands, will build
an individual workspace.

### Testing for Safari

First you should allow unsigned extension in your safari session. This resets every time Safari shuts down.
https://developer.apple.com/documentation/safariservices/safari_web_extensions/running_your_safari_web_extension#3744467

Next, run the Safari Extension Converter locally to convert Freighter to an xcode project.
Example from the project root -
`xcrun safari-web-extension-converter freighter/extension/build --project-location freighter-safari`

That should launch your project in xcode. You should run the project, with a target of macos. If you have not allowed unsigned extensions, you will see a related warning but otherwise you should see Freighter launched on your Safari instance.

### Useful URLs:

[The popup webapp](http://localhost:9000/#/)
Expand Down
7 changes: 7 additions & 0 deletions fastlane/Appfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
app_identifier(ENV.fetch("APPLE_APP_ID")) # The bundle identifier of your app
team_id(ENV.fetch("APPL_TEAM_ID"))
apple_id(ENV.fetch("APPLE_USER_ID")) # Your Apple Developer Portal username


# For more information about the Appfile, see:
# https://docs.fastlane.tools/advanced/#appfile
Loading