git ssb

1+

Daan Patchwork / manyverse



Commit 1dc9bb155a840a77c7c428559dc3b8d8b331545d

dx: update scripts to release ios

Andre Staltz committed on 1/7/2020, 12:30:23 PM
Parent: 5a7ef8e773b29e84fb522c107093651db142a5bf

Files changed

CONTRIBUTING.mdchanged
package.jsonchanged
CONTRIBUTING.mdView
@@ -1,7 +1,6 @@
11 # Contributor docs
22
3-
43 ## Installation and dev setup
54
65 This project uses React Native, Android SDK, Node.js and NPM.
76
@@ -56,8 +55,9 @@
5655 npm run lib
5756 ```
5857
5958 `2`: Propagate replacement modules throughout all dependencies using [propagate-replacement-fields](https://github.com/staltz/propagate-replacement-fields):
59+
6060 ```
6161 npm run propagate-replacements
6262 ```
6363
@@ -127,9 +127,9 @@
127127
128128 - **Type** indicates what audience the issue is relevant to
129129 - `dx` means "developer experience" so these are issues that are related to refactoring, improving build system, tests, etc
130130 - `ux` means "user experience" and can be either `ux: feature` or `ux: bug fix` to indicate to the user what kind of improvement this was
131- - Every git commit message starts with either `ux: ` or `dx: `, and the changelog is generated from the commit history, where only `ux` commit messages are shown. This means the commit messages are literally the changelog that appears to users when they update the app
131+ - Every git commit message starts with either `ux:` or `dx:`, and the changelog is generated from the commit history, where only `ux` commit messages are shown. This means the commit messages are literally the changelog that appears to users when they update the app
132132 - **Scope** indicates what part of the codebase this issue is about. So far the codebase has only two relevant "places":
133133 - `scope: backend` refers to the background Node.js project running the SSB server
134134 - `scope: frontend` refers to the UI code in React Native and Cycle.js
135135 - In the future there should be `scope: android` and `scope: ios` and maybe `scope: desktop`
@@ -142,10 +142,10 @@
142142 There's also a rule for `priority` labeling: `must < should < could < maybe`. In other words, the number of `must` issues has to be less than the number of `should` issues, which has to be less than the number of `could` issues, etc. This gives a funnel shape to the kanban board, [see here](https://gitlab.com/staltz/manyverse/boards).
143143
144144 Ideally, in a team of N developers working on Manyverse, there are N issues marked **work in progress**. In the "must" column, there are usually 2~4 issues per developer, which means at any time I choose the next work to do, I only have to pick one issue out of three, approximately. I try to keep a somewhat golden ratio progression (i.e. more than 1x, less than 2x multiplication) to the shape of the funnel, but it doesn't need to be so strictly organized. The importance of organizing the issues is also proportional to the priority:
145145
146-- It's *very* important to keep the "must" column organized and well chosen
147-- It's *somewhat* important to keep the "should" column organized and well chosen
146+- It's _very_ important to keep the "must" column organized and well chosen
147+- It's _somewhat_ important to keep the "should" column organized and well chosen
148148 - It's not that important to keep the "could" column organized
149149 - It's not important to keep the "maybe" column organized
150150
151151 Once in a while, as issues get done, we go through the issues in lower priorities and begin promoting them to higher levels. You can think of this funnel as a job interview process with multiple stages of interviews. We try to imagine which of these issues "earns its spot" the best. And usually give priority to fixing bugs, because it's worth building new features after the current user experience is mostly bugless. But every month there should be at least one new feature, even a small feature suffices.
@@ -201,9 +201,9 @@
201201 ```
202202
203203 Most app development happens in `src/frontend` and thus follows the [Cycle.js](https://cycle.js.org/) architecture, but utilizes React Native components for rendering. It's good to get familiar with the architecture, but here is an explanation of it in a nutshell:
204204
205-- Each *screen* in the app is a Cycle.js component
205+- Each _screen_ in the app is a Cycle.js component
206206 - A Cycle.js component is a function with `sources` as input and `sinks` as output
207207 - `Sources` is an object with several "source" streams, one stream per "channel"
208208 - `Sinks` is an object with several "sink" streams, one stream per channel
209209 - A **channel** is a name designated to a certain type of effect, for instance, we have the channels:
@@ -213,9 +213,9 @@
213213 - `screen`: for sending UI updates to render on the screen, or for listening to UI events
214214 - `dialog`: for creating and interacting with UI dialogs overlaying the app
215215 - etc
216216 - **Drivers** handle interactions with channels, there is typically one **driver** per channel, for instance see `src/frontend/drivers/dialogs.ts`
217-- In a Cycle.js component, *data flows* from the sources to the sinks, passing through *transformations and combination* steps in between
217+- In a Cycle.js component, _data flows_ from the sources to the sinks, passing through _transformations and combination_ steps in between
218218 - Transformation and combination of streams is done with **stream operators** from the library [xstream](https://github.com/staltz/xstream/)
219219 - Typically, streams are created and transformed in these sections:
220220 - `intent`: handles raw streams of UI events and interprets what they mean, creating "action" streams
221221 - `model`: take action streams as input and return "reducer" streams as outputs, to change the UI state
@@ -224,9 +224,9 @@
224224 - etc
225225
226226 ## Integration tests
227227
228-We use Appium and Tape, just plug in a device through USB and run `npm run test-e2e-android`. This will run tests on top of the *release* variant of the app, so it that doesn't exist, you must run `npm run build-android-release` first. See the guide below on how to generate release builds.
228+We use Appium and Tape, just plug in a device through USB and run `npm run test-e2e-android`. This will run tests on top of the _release_ variant of the app, so it that doesn't exist, you must run `npm run build-android-release` first. See the guide below on how to generate release builds.
229229
230230 ## Releases
231231
232232 To build a release APK, follow these instructions:
@@ -293,11 +293,10 @@
293293
294294 Then make an iOS release:
295295
296296 - `git pull origin master` on a computer that can build iOS
297-- Run `npm run prerelease-ios`
298-- In Xcode: `Product` > `Archive`
299-- Once archiving is complete, Upload the app version to App Store
297+- Run `npm run release-ios`
298+- Once done, it should an _Organizer_ window where you should upload the new version to App Store
300299
301300 ### Publish
302301
303302 - Publish Android on F-Droid: `git push origin --tags` (F-Droid server pulls our updates)
package.jsonView
@@ -6,15 +6,20 @@
66 "postinstall": "patch-package",
77 "lib": "tsc",
88 "clean-bundler": "watchman watch-del-all && rm -rf $TMPDIR/react-*",
99 "clean-android": "adb uninstall se.manyver && cd android && ./gradlew clean",
10+ "clean-ios": "cd ios && xcodebuild -workspace Manyverse.xcworkspace -scheme Manyverse clean && cd ..",
1011 "full-clean": "npm run clean-android && npm run clean-bundler && rm -rf node_modules && rm -rf lib",
1112 "propagate-replacements": "propagate-replacement-fields --field=react-native",
1213 "build-backend-android": "./tools/build-backend && ./tools/minify-backend-android",
1314 "build-backend-ios": "./tools/build-backend && ./tools/minify-backend-ios",
15+ "build-ios-assets": "npm run lib && npm run propagate-replacements && npm run build-backend-ios",
1416 "build-android-assets": "npm run lib && npm run propagate-replacements && npm run build-backend-android",
1517 "build-android-debug": "npm run build-android-assets && react-native run-android --variant=indieDebug",
18+ "prebuild-android-release": "npm run clean-bundler && npm run clean-android",
1619 "build-android-release": "npm run build-android-assets && cd android && ./gradlew assembleRelease && cd ..",
20+ "prearchive-ios-release": "npm run clean-bundler && npm run clean-ios",
21+ "archive-ios-release": "npm run build-ios-assets && cd ios && xcodebuild -workspace Manyverse.xcworkspace -scheme Manyverse archive && cd ..",
1722 "start": "npm run lib && npm run propagate-replacements && react-native start",
1823 "psdr": "./tools/print-service-desk-report.js",
1924 "test-e2e-android": "./tools/test-e2e-android",
2025 "changelog": "npm run update-repo-changelog && npm run update-dat-latest-readme",
@@ -24,10 +29,10 @@
2429 "update-version": "./tools/update-version.js",
2530 "update-version-ios": "./tools/update-version-ios.js",
2631 "dat-release": "./tools/dat-release",
2732 "commit-release": "./tools/commit-release",
28- "release-android": "npm run update-version && npm run clean-bundler && npm run clean-android && npm run build-android-release && npm run test-e2e-android && npm run changelog && npm run commit-release && npm run dat-release",
29- "prerelease-ios": "npm run clean-bundler && npm run build-backend-ios && npm run update-version-ios && git commit -am\"dx: update ios version\" && echo \"\n\nYOU SHOULD NOW ARCHIVE A NEW RELEASE IN XCODE\n\n\""
33+ "release-android": "npm run update-version && npm run build-android-release && npm run test-e2e-android && npm run changelog && npm run commit-release && npm run dat-release",
34+ "release-ios": "npm run update-version-ios && npm run archive-ios-release && git commit -am\"dx: update ios version\""
3035 },
3136 "dependencies": {
3237 "@cycle/isolate": "5.1.0",
3338 "@cycle/react": "2.6.0",

Built with git-ssb-web