OS X Server - bot can't get source from repository - ios

I had a previous version of OS X Server set up and running fine, but when I installed the upgrade to 3.2.1, I found that none of my bots would work correctly. These are the issues I get on each attempted integration:
Build Service Error Can't fit data in the buffer (-1).
Build Service Warning The source control operation failed because no working copy could be found.
Build Service Warning An error occurred updating existing checkout. Falling back to a clean checkout..
I may be looking in the wrong place, but I think the errors mean that I can't connect to my Git repository. This was partially confirmed when I deleted my repository from Xcode and ran the bot again and got the same errors. (I have since re-added the repository in Xcode and performed a Check Out to test it, so am pretty certain I have all the connection details right.)
With the previous version of OS X Server, I'm sure I'd connected to the repository directly from the server, as explained in Help > Server Tutorials > Automate Xcode builds:
Step 3. Give Xcode service access to the git repository
Xcode service bots access projects and code from your source git repository.
Click Repositories, then click the Add button (+). Choose Connect to a Git Repository from the New Repository pop-up menu.
But in the latest version, when you click the Add button you just get the option to create a new repository, rather than connect to an existing one. And the instructions on the web (now) say:
Connect to Remote Repositories
If you have projects in Git or Subversion repositories on remote servers, you can store your credentials for them on your development Mac in the Accounts preferences in Xcode. Then, when you need to access the repositories, you won’t have to reenter your credentials every time.
To add a remote repository’s credentials to a development Mac
For Xcode Server to perform integrations on your projects, it must also have access to their source code repositories. Configure Xcode Server to connect to your remote repositories.
Choose Xcode > Preferences on your development Mac.
Click Accounts in the toolbar.
Click the Add button (+), and choose Add Repository.
In the text field, enter the URL for the repository (for example, svn+ssh://svn.example.com/ProjectName or https://example.com/git/repository.git), and click the Next button.
Enter your user name and password in the Repository pane of Accounts preferences.
which is a bit vague, but seems to suggest that now OS X Server uses repositories that are set up in Xcode's preferences.
Anyway, now my OS X Server can't seem to access the repository. Am I missing something here?
Thanks
UPDATE:
I've come back to this problem after a month of pretending it didn't exist, and have made the following findings:
-The problem occurs with OS X Server 3.2.1, OS X Server 3.2.2 and OS X Server 4.0, on two different machines.
-The problem occurs when the repo is on a server running Gitblit, but not for remote Bitbucket repos, or for a Git repo hosted within a local OS X Server.
-The problem only occurs for larger repos.

I've solved this problem in the most convoluted way imaginable!
When OS X Server connects to the repository to download the source, it uses the Xcode library. Xcode uses libgit2 to do the downloading which had a known bug which caused the buffer error. It was fixed in v0.21.2, but the latest Xcode (6.1.1) only uses v0.21. That previous Xcode version only used v0.20, so hopefully a future Xcode release will use v0.21.2+ in which case this fix shouldn't be necessary.
Anyway, the solution for Xcode 6.1.1 was to:
Download and unzip the version of gitlib used by Xcode from here: https://github.com/libgit2/libgit2/releases/tag/v0.21.0
Make the changes to src/transports/http.c as detailed here: https://github.com/libgit2/libgit2/commit/7d729d0bfd897e8685099b160b6dbfd7f4ebd588
Save the http.c file
Build your edited version of gitlib2 using the instructions here, i.e:
Download CMake
Run the following commands in Terminal after navigating to your unzipped libgit2-0.21.0 folder:
$ mkdir build && cd build
$ cmake ..
$ cmake --build .
In Finder on your server, go to the Applications folder, right-click on Xcode and select "Show Package Contents". Go to the Contents/Developer/usr/lib folder and rename the 'libgit2.dylib' file to 'libgit2.dylibold' or similar.
Take the newly created 'libgit2.0.21.0.dylib' file from the libgit2-0.21.0/build folder, rename it to 'libgit2.dylib' and copy it into the /Applications/Xcode/Contents/Developer/usr/lib folder on your server.
Restart OS X Server, and integrate your bot again from Xcode.

The remote repository will be added when you create a bot. You don't have to add repository in OSX server.

Related

how to code in Mac for 8thwall web ar and test it?

how to setup 8th wall project for web ar for Mac and use our system instead of using their web editor . I want to code in my computer and test and then upload that to their console rather then coding it in their web editor .
Steps to locally develop 8thwall webAR without using 8th wall cloud editor
Create a project using 8thwall dashboard and navigate to the dashboard settings and copy the appkey.
copy this base glitch get-started project and replace the appkey with your project appkey.
Navigate back to the dashboard and authorize your browser with the help of the dev-token.
You are ready to now use and test 8thwall development locally.
You can later self-host the project instead of copy pasting the code and reformatting according to the 8thwall cloud editor.
You can also directly remix any of the glitch projects as well which is a much quicker option.
NOTE: The glitch projects are under-maintained hence refer docs for latest SDK version as well as syntax changes
You can develop locally by choosing self-hosted project option with 8thwall, then downloading 8thwall's own web repository to tinker with. I struggled with the 8thwall docs to figure this out but the web repository makes locally development pretty straight-forward.
Follow the steps on the getting started guide ,
firstly you'll need to create an 8thwall account and self-hosted project.
Copy your unique App Key from the project settings page.
Clone the source code from the repo, replacing the app key in index.html file with your own app key (this lives in the header of the html file) :
<script async src="//apps.8thwall.com/xrweb?appKey=insert-your-key-here"></script>
8thwall included a serve script, which serves your source code on local network over https. This means you can add your local URL as a trusted domain in your self-hosted project settings for testing.
you'll need to ensure Node.js and npm are installed to run the script
Using the serve script depends on your computer, (there's instructions here for Windows also) but for the case of Mac, open a terminal in your project directory :
cd <to_this_serve_directory>
npm install
cd ..
./serve/bin/serve -d <sample_project_location>
I use Node version 16.16.0 as I had issues with my current node version 18.12.1. You can get Node version manager npm package to help manage your Node versions.
What's great about this is when you run the serve script from your terminal, this generates a QR code so you can test your app on a mobile device over local network. Make sure you copy the entire Listening URL into your browser, including the port number. e.g. https://245.678.0.11:8080
Final thing to mention, don't include the port number in your trusted domains URL. e.g. https://245.678.0.11

RubyMine on Windows with rails code on OS X server

This is a weird question, so bear with me while I try to explain it properly.
I have a Ruby on Rails app running on Heroku, with source code on Git. In my home, I have a Mac small laptop, and a Windows 7 Desktop PC.
What I want is to be able to work the code on RubyMine on my Windows machine. Because of many many shenanigans, working on Windows and then uploading to heroku just doesn't work.
Instead, I would like to download my code on my Mac, open it somehow from Windows (on LAN), and be able to run it on the Mac (from RubyMine on Windows), and open it in a browser from Windows.
I've been trying for several weeks now. Have anyone done this before? I know it sounds bizarre, but I really wish to work on my 3 monitors Windows setup.
You can let RubyMine use an SDK over SSH.
go to: File => Settings
select: Languages & Frameworks => Ruby SDK and gems
click the add icon (plus symbol)
choose: New remote...
select: SSH Credentials
fill in the host, username, password and path
After adding the remote SDK make sure it is selected as your project SDK.
edit
As #GujMil pointed out in the comments below, when running the application the Windows path is send as parameter to the Ruby SDK. After some fiddling I found that you can map the local path to the remote path in the SDK Configuration or Run/Debug Configurations.
go back to the SDK configuration (step 1 & 2 previous list)
click the Edit Path Mappings icon for your remote Ruby SDK (img)
add your path maps
For me the following was enough (using Linux instead of OS X):
+----------------+-------------+
| Local path | Remote path |
+----------------+-------------+
| //192.168.0.96 | /home |
+----------------+-------------+
For further info see: https://www.jetbrains.com/help/ruby/configuring-remote-interpreters-via-ssh.html
If your question sounds bizarre, so does my answer. I have experimented a similar setup with Linux servers.
Set up a shared folder to host the code on the Mac: Apple
instructions here
Access the folder over your LAN and edit the code in RubyMine.
Open an SSH terminal to your Mac so that you can remotely run the
Rails server, run necessary commands and view the logs (easy with
your multi-monitor setup)
Note: RubyMine will likely complain about missing gems.

Upgrade (unisntall/install) Windows Service using InstallShield Setup Project

My question, is there a way to configure the InstallShield setup and deployment project so that when I attempt to install the service it will uninstall the previously installed version of the service.
I've created a Windows Service and an InstallShield setup and deployment project to be able to install it onto my machine. The process of installing and uninstalling the service all works fine. When I go to update the service, at the moment, I need to stop the service, uninstall the service manually, and then run the installer. What I am trying to get to is a point where I can run the installer and it will uninstall the previous version of the service before installing the current version.
I have seen this process of running the install and having the previous versions uninstalled work. Through creating a test project using a windows form application. I was able to install the application. Then I: incremented the product version, created a new product code, added a new upgrade entry in the upgrade path area, and configured that upgrade entry setting the min and max version. After doing this, I rebuilt the setup project and ran the installer and the upgrade from version A to version B was complete.
The only difference I believe from the original test project (where I saw the process work) and my Windows Service project is that my test project was a Windows Forms application versus a Windows Service. In all the research I have been doing I have seen people ask similar questions, but I have not seen any real suggestions on what actions to take. So if anyone knows if this is possible or has any suggestions that I could try to accomplish this task they would be greatly appreciated.
I was able to resolve this issue, so it is possible. The setting I mentioned above are the correct settings needed to allow the service to update. This was just a case of human error that was causing my problems.

Location of Xcode Bots configuration files

I need to copy and transfer integration settings (trigger script, actually) from one to another project, but since my development Mac isn't connected to OS X Server, I can't check out Bot settings and take that script from existing project.
Is there a way to find Bot's configuration files? And where they are actually stored at (dev machine or server)?
I tried to look at
~/Library/Developer/XcodeServer
but found only bunch of .log files for every integration
For those coming to this using the newer version of Xcode Server, even though Xcode Server now runs as a specific user, the configuration files are kept in /Library/Developer/XcodeServer. You can also hit the Xcode Server API to get information about your bots.
I don't really know that this approach can work properly, however, my suggestion would be "export and import XCode configuration file". That can be understood as after your project completed configuration, start exporting "xconfig" files and then import to your other projects.
This link might be helpful Is there a way export xcode build settings to .xcconfig file?

Locking/Unlocking a file remotely in Subversion

I have Subversion setup on a Windows machine for iOS development. The WIndows machine acts as the server and all the team members are working on Macs.
I use TortoiseSVN as the SVN client and I know you can lock files using that but you have to have access to the directory in the server to do that all the time. Therefore I'm looking for a way to do it remotely.
To explain further, when a team member starts editing a file, he should be able to issue a command through the terminal (I read that you cannot do this through Xcode though a feature like that would have been great!) to lock the file and again unlock it the same way.
How can I do this?
Thanks
svn lock <filename> on a file kept in a working copy is the equivalent of Tortoise's "Get Lock"

Resources