LogoLogo
What's NewDeveloper CommunitySupportStatus
  • 🚀Get Started
    • What is JourneyApps Platform?
    • Tutorial: Build your First App
      • 1. Introduction
      • 2. Create a new App
      • 3. OXIDE IDE Overview
      • 4. Hello World app
      • 5. The Data Model
      • 6. View Components
      • 7. Queries and Data Sync
      • 8. Simple Navigation
      • 9. View Stack
      • 10. Input Validation
      • 11. View Parameters
      • 12. Data Manipulation
      • 13. Responsive Apps
      • 14. Styling
      • 15. Lists
      • 16. GPS Capturing
      • 17. Relationships
      • 18. Multiple User Roles
      • 19. Deployment and Users
      • 20. Version Control
      • 21. CSV and APIs
      • 22. Conclusion
    • JourneyApps Platform Fundamentals
      • Creating a New App
        • Git-enabled Apps
      • What are Views?
      • What is the Data Model?
      • JourneyApps Syntax Basics
      • Access the Database (DB)
        • Manipulate DB Objects
        • Query DB Objects
      • View Navigation
        • Deep Linking
      • CloudCode Overview
      • OXIDE (Online IDE)
  • 💻Build your App
    • JourneyApps Syntax
      • Syntax Basics
      • Access the DB
      • View Navigation
      • Async & Await
      • TypeScript Apps (Beta)
        • runtime-build package
        • TypeScript App Troubleshooting
      • What's New in V4
        • Updating to the V4 API
    • Configure your Data Model
      • What is the data model?
      • Reference: model
        • field
        • belongs-to
        • has-many
        • index
      • Data Rules
        • Data Buckets
        • Sync Rules - Limit data synced to devices
        • Data ACLs - Limit access to data
        • Real-world example for Data Rules
        • ❔FAQs
        • Migrate to Data Rules
      • App Indexes
      • Webhooks
    • UI Components
      • All UI Components
        • actionSheet
        • Attachments
        • button
        • button-group
        • capture-coordinates
          • marker
          • marker-query
        • capture-file
        • capture-photo
        • capture-signature
        • card
          • accent
          • action
        • columns
          • column
        • component
        • context-menu
          • divider
          • item
        • CSV
        • date-input
        • datetime-input
        • dialog
          • body
        • display-3d-model
          • 📖display-3d-model Guides
            • Guide 1: Initialize and layout a 3D model in a view
            • Guide 2: Control playback position
            • Guide 3: Troubleshooting controls
        • display-coordinates
        • display-file
        • display-image
        • display-photo
        • display-signature
        • heading
        • html
          • HTML Advanced Topics
          • ❔HTML FAQs
          • 📖Guide: HTML & JourneyApps iFrame Client
        • icons
        • info
        • info-table
          • row
        • journey.photos (capture multiple photos)
        • JourneyPrinter (print PDFs)
        • grid
          • cell
          • 📖grid Examples
        • list
          • list-item
            • accent
            • asset
            • pills
              • pill
            • action
        • multiple-choice-checklist
        • navigation (Navigation drawer)
          • general-section
            • item
          • section
            • item
              • item
          • ❔navigation FAQs
        • notification
        • object-dropdown
        • object-list
          • action
        • object-repeat
        • object-table
          • action
          • column
            • action
            • edit-boolean
            • edit-date
            • edit-datetime
            • edit-integer
            • edit-number
            • edit-select
            • edit-text
            • edit-time
            • edit-typeahead
              • action
            • header-action
          • column-group
          • empty-action
          • 📖object-table Guides
            • Actions
            • Cell callouts
            • Column groups
            • Columns
            • Controlled object-table
            • Controls
            • Copy & paste data
            • Edit cells
            • Filters
            • Frozen columns
            • Fullscreen object-table
            • Mode
            • State
            • Styles
        • optionList
        • PhotonSync (transfer data offline)
        • power-bi
          • 📖Guide: PowerBI Embedding
        • scan-barcode
        • shortcut
        • sidebar
        • single-choice-dropdown
        • single-choice-radio
        • template
        • text-input
        • time-input
        • toggle
        • view
      • JS/TS Events
      • Show / Hide UI Components
      • View Templates
      • XML Fields (Attributes)
        • align-content
        • align-controls
        • align-label
        • bind
        • clear-button-visibility
        • control-order
        • disabled
        • error-message
        • icon-position
        • id
        • hide-if
        • modifier-text
        • label
        • label-case
        • label-color
        • on-change
        • on-press
        • placeholder
        • required
        • show-if
    • JS / TS APIs
      • Attachment
      • Bluetooth (Beta)
      • Broadcast
      • component
      • CSV
      • DB
      • HardwareBarcode
      • journey
        • journey.config
        • journey.container
        • journey.device
        • journey.diagnostics
        • journey.dialog
        • journey.files
        • journey.hardware
        • journey.photos
        • journey.runtime
        • journey.sensors
        • journey.viewStack
      • JourneyPrinter
      • KeyboardBarcode
      • LocalDB
      • NFC
      • OnlineDB
      • PhotonSync
      • SerialPort
      • ShortcutManager
      • TCPSocket
      • user
    • Extend your App with Custom Code
      • App packages
        • App packages overview
        • PDF report package
        • TypeScript library & unit tests
        • Manage External Dependencies
      • Custom HTML
    • Style & Customize your App
      • Style & configure UI components
        • Overview
        • Understand extendable themes
        • Use themes on a view
        • Theme specific components on a view
        • Examples
        • Debugging
        • ❔FAQs
      • Change your App Font
      • Custom Branding
        • Custom Container Features
        • Special Requirements for iOS Containers
    • Integrate your App
      • Backend integrations with CloudCode
      • Barcode Scanning
        • Barcode Scanning using Keyboard Emulation
        • Hardware Barcode Scanning
        • scan-barcode
      • Bluetooth Low Energy (BLE)
      • Broadcast API
      • HTTP requests (Fetch API)
      • JourneyApps Print (Android)
      • Maps and navigation
      • NFC
      • Opening external links/apps
      • Serial Port
      • TCP Sockets
    • Design Intuitive Apps
      • UX Guidelines
      • Write Effective Copy
  • 📱App Features
    • RealWear® Voice Control
      • Automatic Voice Commands
        • Automatic Voice Commands - Advanced
      • Manual Voice Commands
    • App, Runtime and Container Updates
    • Batch Operations (App)
    • Call JS/TS Functions from XML
    • Capture GPS Locations
    • Push Notifications
    • Translations
    • XML Format Strings
    • Webhooks (External)
  • 🌐CloudCode
    • CloudCode Overview
    • Trigger a CloudCode Task
      • Trigger CC with a Schedule
      • Trigger CC via a Webhook
      • Trigger CC from an App
      • Trigger CC from Another Task
      • Trigger CC via HTTP
    • Attachments in CloudCode
    • Timezones
    • Advanced CloudCode Topics
      • Access Multiple DBs in CloudCode Tasks
      • Batch API (CloudCode)
      • CloudCode Dependencies
      • Configure HTTPS in CloudCode
      • Deployment environment variables
      • Local CloudCode Development
      • PDF Reports using CloudCode
      • Shared CloudCode Tasks
      • Translations in CloudCode
  • 📥Backend API
    • Introduction
    • API Reference
      • Retrieve All Objects
      • Query Objects
      • Sort Results
      • Limit and Skip
      • Count Objects
      • Create a New Object
      • Retrieve a Single Object
      • Update a Single Object
      • Delete a Single Object
      • Batch Operations (v4 API)
      • Oplog API
      • Retrieve the App Data Model
      • Manage App Users and Sessions
      • Field Representation
      • Error Responses
    • API Limits
    • Update to the V4 API
  • ⚙️Technical
    • Data Synchronization Priority
    • Device Diagnostics
    • JSON1 Query Engine
    • Improve App Performance
    • Security Measures
    • Supported Platforms
      • Web Container
      • Windows Installer
    • Domain Whitelist
  • 🖥️OXIDE
    • Get started with OXIDE
      • OXIDE Overview
      • Components of OXIDE
    • Configure Testing Deployments
    • Edit and Manage Files
      • How to Navigate to a Function
      • Manage External Dependencies
    • Create and Manage App Containers
    • Debugging & Troubleshooting
      • Common Troubleshooting Pointers
      • App Diagnostics Reports
      • Build Logs
    • OXIDE Workspaces
      • OXIDE Trees
  • ❕Deprecated Features
    • Deprecated Features and Components
Powered by GitBook
On this page
  • Introduction
  • Enable git-based version control
  • Create a GitHub / Azure DevOps Integration
  • GitHub
  • GitHub configuration
  • Select GitHub Organization and Configure Repo
  • GitHub Limitations & Troubleshooting
  • Azure DevOps (Beta)
  • Azure DevOps Installation
  • Select Azure DevOps project and Configure Repo
  1. Get Started
  2. JourneyApps Platform Fundamentals
  3. Creating a New App

Git-enabled Apps

PreviousCreating a New AppNextWhat are Views?

Last updated 7 months ago

Introduction

JourneyApps offers git-based for your apps. This document shows how to create git-enabled apps and configure or (Beta) as your git provider.

Enable git-based version control

Git can be enabled for new apps and for existing apps that previously were created with "Basic (Revisions)" version control.

New apps

As part of the workflow to , select Advanced (Git) and GitHub or Azure Repos as the git provider in the Version Control tab:

Existing Apps

Click the "Version control" button, and subsequently the "Change to Advanced (Git)" button.

Finally, click the "Git provider" button to set up GitHub or Azure Repos as the git provider. See the next sections.

Create a GitHub / Azure DevOps Integration

The first step to linking apps to either GitHub or Azure DevOps is to ensure an integration exists between your JourneyApps organization and your GitHub organization or Azure DevOps profile respectively.

You can review existing integrations for your JourneyApps organization by navigating to the Integrations tab in the admin portal:

Create a new integration by clicking the "Add Integration" button. Select the integration you want to add - either GitHub or Azure DevOps, and press Next:

GitHub

GitHub configuration

  1. Selecting a GitHub organization or your GitHub user account for the integration (this is where your app's repositories will be created)

  2. Installing the JourneyApps GitHub app in the selected GitHub organization / user account.

    1. Selecting which of the organization's / user account's repositories to include in the integration

When these steps complete successfully in GitHub you will be redirected to the admin portal, and the new integration will be listed. The integration can now be used for git-enabled apps.

Select GitHub Organization and Configure Repo

Note: If you get to this step prior to setting up an integration with the GitHub organization / user account you want to use for your app, you will see a convenient link to set up the integration first:

Once you have selected your GitHub organization, you need to choose the repo that will store your app's codebase. You can either select an existing repo (all repos that were included when setting up the integration will be listed in this dropdown) or create a new repo by typing a new name into the dropdown field:

Pressing Next completes the GitHub setup.

Known limitation

When selecting a GitHub user account you can only select an existing repository for your app, not create new repository from JourneyApps. We suggest you create a new empty repository for your app in GitHub first. This limitation does not apply to GitHub organizations.

GitHub Limitations & Troubleshooting

Branch protection

If you want to enable Branch Protection, or any other similar Github rules, make sure that the journeyapps-platform GitHub App (which you granted access previously) has administrator-level access to your GitHub repos. Practically, for Branch Protection it means the following minimum settings to ensure branch protection will work with GitHub integration (at least in so far as not allowing direct pushes to the protected branch and requiring PRs instead):

The setting ‘Do not allow bypassing the above settings’ is needed to ensure that even repo administrators, like the JourneyApps GitHub app, adheres to these rules.

GitHub members vs owner permissions when creating new integrations

Integrating a GitHub organization with multiple JourneyApps organizations

It is possible to integrate a GitHub organization with multiple JourneyApps organizations, however only owners for the GitHub organization will be able to create the subsequent integrations.

GitHub 400 validation error

When a GitHub organization's member initiates a new integration, there is a known edge case where the integration attempt could result in a 400 VALIDATION_ERROR. If this happens, an owner for the GitHub organization should create the integration.

Disabled "Save" button in GitHub

Azure DevOps (Beta)

Azure DevOps support is currently in Beta. Current known limitations are:

  1. You need to be the owner of your Azure DevOps organization to integrate with JourneyApps.

  2. Azure repo names cannot contain spaces.

Azure DevOps Installation

If access has been granted, you will be redirected to the admin portal and prompted to select the Azure DevOps Organization and Project for the integration. Repos are stored within projects in Azure, hence the Azure integration is project-based.

Press Next to complete the Azure DevOps integration setup. The integration can now be used for git-enabled apps.

Select Azure DevOps project and Configure Repo

Azure DevOps vs Azure Repos

Azure Repos is a feature of Azure DevOps that stores git repositories.

In JourneyApps, an integration is set up with Azure DevOps, but we generally refer to Azure Repos when referring to the git provider, i.e. the service that hosts an app's git repository.

Note: If you get to this step prior to setting up an integration with the Azure DevOps project you want to use for your app, you will see a convenient link to set up the integration first.

Once you have selected your Azure DevOps project, you need to choose the repo that will store your app's codebase. You can either select an existing repo or create a new repo by typing a new name into the dropdown field:

Pressing Next completes the setup for hosting your app's git repository in Azure Repos.

In the , hover over an existing app that has "Basic (Revisions)" version control enabled:

Proceed to the next sections for and specific details following the above step.

After selecting GitHub when , proceed to follow the on-screen steps in GitHub. These include:

There are some known limitations and a few noteworthy edge cases when integrating with GitHub. Please see the section below if your integration does not complete successfully.

Once you have created an integration for the GitHub organization or user account, you will be able to select when creating a or updating the git provider for an :

If you are only a member (not an owner) in the GitHub organization you wish to integrate with, you will need an owner's approval to complete the integration setup in JourneyApps. As a member you be able to complete the , but your integration will remain in a pending state until an owner completed the setup (they should receive an email with a link to approve and complete the integration request). The admin portal will notify you when this is the case:

Another known edge case could result in the "Save" button being disabled . To resolve this, ensure at least one repository is selected, and you may need to toggle the repository selection back and forth to "activate" the button.

If you are adding an for the first time, you will need to grant access to the journeyapps-platform app for certain permissions in your Azure account.

Once you have created an integration for the Azure DevOps project, you will be able to select the project when creating a or updating the git provider for an :

🚀
admin portal
GitHub
Azure DevOps
adding a new integration
GitHub Limitations & Troubleshooting
new app
existing app
necessary steps in GitHub
when selecting repositories in GitHub
Azure DevOps integration
new app
existing app
create new apps
GitHub
Azure DevOps
version control
Selecting an existing repo - ensure it is empty or can be overwritten
Creating a new repo by typing the repo name