--- title: "CircleCI integration" slug: "circleci-integration" updated: 2024-07-02T06:39:48Z published: 2024-07-02T06:39:48Z canonical: "help.autify.com/circleci-integration" --- > ## Documentation Index > Fetch the complete documentation index at: https://help.autify.com/llms.txt > Use this file to discover all available pages before exploring further. # CircleCI integration Autify provides the official CircleCI Orb to upload a build and run a test plan easily from your CircleCI workflow. ## Getting started This document describes how to use our CircleCI integrations with your Git repository step-by-step. ### Prerequisites First, we assume you already have CircleCI workflow to build your application. We'll add an Autify test job right after the build job to confirm the newly built application doesn't break the end-to-end experience. Secondly, you need to create a test plan on [Autify NoCode Mobile](https://mobile-app.autify.com). Please note the URL of your test plan e.g. `https://mobile-app.autify.com/projects/AAA/test_plans/BBB` and we'll use it later. You also need to [create a personal access token](https://help.autify.com/mobile/docs/api-integration#api-authentication-token-generation-method) of Autify NoCode Mobile. Please note the generated token somewhere so that we can store the value on Environment Variables later. *Note: Since the personal access token is associated with a single user, we recommend you to create a machine user in your organization and use its personal access token for CI/CD integration.* ### Store personal access token on Environment Variables Store the personal access token you generated above on Environment Variables by following [CircleCI's document](https://circleci.com/docs/env-vars). You can use an arbitrary name for the Environment Variable but if you name `AUTIFY_MOBILE_ACCESS_TOKEN`, you don't have to specify the name later because this is the default name. Assuming you named so here. ### Add CircleCI job to upload a build and run Autify NoCode Mobile Finally, let's add a new step to your existing CircleCI workflow. See the examples below. The `autify-test-url` value should be the URL you noted above. - [autify/autify-mobile CircleCI Orb](https://circleci.com/developer/orbs/orb/autify/autify-mobile) --- Upload a new build file and start a test (no waiting for the finish of the test): ``` orbs: android: circleci/android@2.0 autify-mobile: autify/autify-mobile@3 jobs: # Example build jobs. Needs to persist the build file to workspace. build-android: executor: name: android/android-machine steps: - ... - run: ./gradlew assembleRelease - persist_to_workspace: paths: - android-release.apk root: app/build/outputs/apk/release build-ios: macos: xcode: 13.4.1 steps: - ... - run: xcodebuild -configuration Debug -target hello-world -arch x86_64 -sdk iphonesimulator - persist_to_workspace: paths: - hello-world.app root: build/Debug-iphonesimulator workflows: test-run-andriod: jobs: - build-android - autify-mobile/test-run: requires: - build-android autify-test-url: 'https://mobile-app.autify.com/projects/AAA/test_plans/BBB' build-path: android-release.apk test-run-ios: jobs: - build-ios - autify-mobile/test-run: requires: - build-ios autify-test-url: 'https://mobile-app.autify.com/projects/AAA/test_plans/BBB' build-path: hello-world.app ``` If you want to wait until the test finishes or timed out: ``` jobs: - autify-mobile/test-run: ... wait: true timeout: 300 ``` **CAVEAT: This will consume your CircleCI build minutes while waiting. Be careful when extending the timeout value.** Just upload a new build file (`workspace-id` is the id right after `/projects/` in the URL you noted above): ``` # Android jobs: - build-android - autify-mobile/build-upload: requires: - build-android build-path: android-release.apk workspace-id: AAA ## iOS jobs: - build-ios - autify-mobile/build-upload: requires: - build-ios build-path: hello-world.app workspace-id: AAA ``` ## Conclusion By using [Autify's CircleCI Orb](https://circleci.com/developer/orbs/orb/autify/autify-mobile), you can automatically run a test plan after build so that you can detect regressions right away and take an appropriate actions without wasting time.