Skip to content

Conversation

@xta0
Copy link
Contributor

@xta0 xta0 commented Oct 11, 2019

Stack from ghstack:

Summary

Since the nightly jobs are running without any testing code, we don't really have a way to verify the binary before uploading it to AWS. To make the work more solid, I came up with an approach to test our builds.

How it works

The XCode tool chain offers a way to build your app without XCode app, which is the xcodebuild command. So the approach is link our binaries to a testing app and run xcodebuild to see if there is any linking error. The PRs below have already done some of the preparation jobs

  • #26261 adds a dummy testing app
  • #26632 adds a ruby script that does all the XCode configuration.

The challenge comes when testing the arm64 build as we don't have a way to code-sign our TestApp. Circle CI has a tutorial but is too complicated to implement. Anyway, I figured out an easier way to do it

  1. Disable automatically code sign in XCode (done [iOS][CI] Disable automatically code signing for TestApp #27591 )
  2. Export the encoded developer certificate and provisioning profile to org-context in Circle CI (done)
  3. Install the developer certificate to the key chain store on CI machines via Fastlane. (done [iOS][CI] Install developer certificate for code signing #27593 )
  4. Add the testing code to PR jobs and verify the result. (done [iOS][CI] add testing code to PR jobs #27594 )
  5. Add the testing code to nightly jobs and verify the result.

Test Plan

  • Both PR jobs and nightly jobs can finish successfully.
  • xcodebuild can finish successfully

Differential Revision: D17893271

@pytorchbot pytorchbot added the module: ci Related to continuous integration label Oct 11, 2019
xta0 added a commit that referenced this pull request Oct 11, 2019
ghstack-source-id: 23fb8a8
Pull Request resolved: #27784
@xta0 xta0 added the module: ios Related to iOS support - build, API, Continuous Integration, document label Oct 11, 2019
Copy link
Contributor

@ezyang ezyang left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

okey dokey

## Summary

Since the nightly jobs are running without any testing code, we don't really have a way to verify the binary before uploading it to AWS. To make the work more solid, I came up with an approach to test our builds.

## How it works

The XCode tool chain offers a way to build your app without XCode app, which is the [xcodebuild](https://developer.apple.com/library/archive/technotes/tn2339/_index.html) command. So the approach is link our binaries to a testing app and run `xcodebuild` to see if there is any linking error. The PRs below have already done some of the preparation jobs

- [#26261](#26261) adds a dummy testing app
- [#26632](#26632) adds a ruby script that does all the XCode configuration.

The challenge comes when testing the arm64 build as we don't have a way to code-sign our TestApp. Circle CI has a  [tutorial](https://circleci.com/docs/2.0/ios-codesigning/)  but is too complicated to implement. Anyway, I figured out an easier way to do it 

1. Disable automatically code sign in XCode (done #27591 )
2. Export the encoded developer certificate and provisioning profile to org-context in Circle CI (done)
3. Install the developer certificate to the key chain store on CI machines via Fastlane. (done #27593 )
4. Add the testing code to PR jobs and verify the result. (done #27594 )
5. Add the testing code to nightly jobs and verify the result.

## Test Plan

- Both PR jobs and nightly jobs can finish successfully.
- `xcodebuild` can finish successfully

Differential Revision: [D17893271](https://our.internmc.facebook.com/intern/diff/D17893271)
## Summary

Since the nightly jobs are running without any testing code, we don't really have a way to verify the binary before uploading it to AWS. To make the work more solid, I came up with an approach to test our builds.

## How it works

The XCode tool chain offers a way to build your app without XCode app, which is the [xcodebuild](https://developer.apple.com/library/archive/technotes/tn2339/_index.html) command. So the approach is link our binaries to a testing app and run `xcodebuild` to see if there is any linking error. The PRs below have already done some of the preparation jobs

- [#26261](#26261) adds a dummy testing app
- [#26632](#26632) adds a ruby script that does all the XCode configuration.

The challenge comes when testing the arm64 build as we don't have a way to code-sign our TestApp. Circle CI has a  [tutorial](https://circleci.com/docs/2.0/ios-codesigning/)  but is too complicated to implement. Anyway, I figured out an easier way to do it 

1. Disable automatically code sign in XCode (done #27591 )
2. Export the encoded developer certificate and provisioning profile to org-context in Circle CI (done)
3. Install the developer certificate to the key chain store on CI machines via Fastlane. (done #27593 )
4. Add the testing code to PR jobs and verify the result. (done #27594 )
5. Add the testing code to nightly jobs and verify the result.

## Test Plan

- Both PR jobs and nightly jobs can finish successfully.
- `xcodebuild` can finish successfully

Differential Revision: [D17893271](https://our.internmc.facebook.com/intern/diff/D17893271)
xta0 added a commit that referenced this pull request Oct 12, 2019
ghstack-source-id: 9227b33
Pull Request resolved: #27784
@facebook-github-bot
Copy link
Contributor

@xta0 merged this pull request in 86fb63f.

@facebook-github-bot facebook-github-bot deleted the gh/xta0/32/head branch October 28, 2019 22:22
thiagocrepaldi pushed a commit to thiagocrepaldi/pytorch that referenced this pull request Feb 4, 2020
Summary:
Pull Request resolved: pytorch#27784

## Summary

Since the nightly jobs are running without any testing code, we don't really have a way to verify the binary before uploading it to AWS. To make the work more solid, I came up with an approach to test our builds.

## How it works

The XCode tool chain offers a way to build your app without XCode app, which is the [xcodebuild](https://developer.apple.com/library/archive/technotes/tn2339/_index.html) command. So the approach is link our binaries to a testing app and run `xcodebuild` to see if there is any linking error. The PRs below have already done some of the preparation jobs

- [pytorch#26261](pytorch#26261) adds a dummy testing app
- [pytorch#26632](pytorch#26632) adds a ruby script that does all the XCode configuration.

The challenge comes when testing the arm64 build as we don't have a way to code-sign our TestApp. Circle CI has a  [tutorial](https://circleci.com/docs/2.0/ios-codesigning/)  but is too complicated to implement. Anyway, I figured out an easier way to do it

1. Disable automatically code sign in XCode (done pytorch#27591 )
2. Export the encoded developer certificate and provisioning profile to org-context in Circle CI (done)
3. Install the developer certificate to the key chain store on CI machines via Fastlane. (done pytorch#27593 )
4. Add the testing code to PR jobs and verify the result. (done pytorch#27594 )
5. Add the testing code to nightly jobs and verify the result.

## Test Plan

- Both PR jobs and nightly jobs can finish successfully.
- `xcodebuild` can finish successfully

Test Plan: Imported from OSS

Differential Revision: D17893271

Pulled By: xta0

fbshipit-source-id: cb7679224e062a4884615f625a2933cad8bd4c11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Merged module: ci Related to continuous integration module: ios Related to iOS support - build, API, Continuous Integration, document

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants