• WWW.BGR.COM
    Spotify Is Getting A New Feature, But It's Not The One Subscribers Want
    We're still anxiously awaiting news about Spotify's HiFi plan, but in the meantime, you can now send direct messages on the music streaming service.
    0 Commentarii 0 Distribuiri 9 Views
  • WWW.BGR.COM
    Discord Mic Not Working? These Fixes Could Help
    People love to use Discord to connect with their communities. So when microphones aren't working, it can be frustrating. Here's how you can troubleshoot.
    0 Commentarii 0 Distribuiri 9 Views
  • TECHCRUNCH.COM
    Meta to spend tens of millions on pro-AI super PAC
    Meta's new PAC, dubbed Mobilizing Economic Transformation Across California, signals an intent to influence statewide elections, including the next governors race in 2026.
    0 Commentarii 0 Distribuiri 9 Views
  • TECHCRUNCH.COM
    DOGE uploaded live copy of Social Security database to vulnerable cloud server, says whistleblower
    The Social Security Administration's chief data officer has publicly blown the whistle, alleging DOGE put hundreds of millions of Social Security records at risk of compromise by uploading a critical government database of citizen's data to Amazon's cloud.
    0 Commentarii 0 Distribuiri 9 Views
  • BLOG.JETBRAINS.COM
    How to Build a CI/CD Pipeline for iOS Projects
    This article was brought to you by Kumar Harsh, draft.dev.Developing and releasing iOS applications involves navigating a complex web of code signing, provisioning profiles, multiple iOS versions, and stringent App Store guidelines/requirements. Without an automated continuous integration, continuous delivery and/or deployment (CI/CD) pipeline, these challenges can lead to slower release cycles, increased errors, and inconsistent workflows.JetBrains TeamCity Cloud is an iOS DevOps CI/CD solution with support for Swift and Objective-C, macOS build agents, seamless integration with Xcode, and advanced configuration options via YAML. TeamCity simplifies the process of building, testing, and deploying iOS applications.In this article, you will learn how to set up an end-to-end CI/CD pipeline for your iOS projects using TeamCity Cloud. It covers everything from integrating version control systems (VCSs) and automating builds with fastlane to signing and packaging your apps and deploying them to TestFlight.Understanding the iOS CI/CD pipelineA well-structured CI/CD pipeline for iOS applications automates repetitive tasks and ensures high-quality, consistent releases. Before you start building the pipeline, lets break down the typical stages of an iOS pipeline and how TeamCity Cloud supports each part of the process.Code checkout and version control integrationA typical pipeline begins with fetching the latest changes from your version control system (VCS), such as GitHub, GitLab, or Bitbucket. TeamCity offers built-in integrations for popular VCS providers, allowing you to easily connect your repository and configure access credentials.You can set up build triggers so that the pipeline runs automatically on every push or pull request or commit to specific branches. This ensures your project is always tested against the latest code changes.Building iOS applications with XcodeOnce the code is checked out, the next step is to build the project. You can use either the default xcodebuild command line tool or any third-party tool, such as fastlane. In this step, the build tool compiles the source code, assembles resources, and generates the app bundle.You can define build steps for different configurationssuch as Debug, Release, or custom schemesdirectly in TeamCity. When used with TeamCity Build Parameters, you can reuse the same pipeline for multiple configurations.With Matrix Build on TeamCity, you can even take this a step further and generate multiple builds in parallel using a combination of values for your build parameters. This gives you the flexibility to target multiple environments or testing scenarios.Example of matrix builds in TeamCityTesting across multiple iOS versionsTo maintain code quality and prevent regressions, you should always consider including automated testing. TeamCity optimizes automated tests through its parallel testing capabilities. It allows you to test across multiple simulated iOS versions and device configurations simultaneously, reducing feedback cycles and ensuring broader coverage.Static code analysis and code coverage reportingStatic code analysis helps catch issues early in the development cycle. You can integrate tools like SwiftLint as build steps to enforce style and coding conventions.For deeper insights, TeamCity supports code-quality tools, like JetBrains Qodana, and can generate code coverage reports to help evaluate test completeness and identify untested areas of your codebase.Signing and packaging (IPA files)One of the more intricate parts of iOS CI/CD is managing code signing. Modern iOS DevOps practices recommend using a Git-based or file bucket-based store for certificates and keys. Popular tools, like fastlane, offer out-of-the-box support to implement and use these practices conveniently. You can always use git (with SSH authentication) or the AWS CLI tool to connect to your private certificates store from inside your pipelines and sign your apps as needed.Deploying to TestFlight or the App StoreFinally, once your app is built, tested, and signed, its ready to be distributed. Tools like fastlane can automate the upload of your IPA files to TestFlight or the App Store from within your pipelines. You might need to configure App Store Connect or Apples application-specific passwords to make this work. But it makes it very easy to push changes to a dedicated TestFlight branch in your VCS repo, which are then uploaded to TestFlight within minutes.You can also configure separate workflows for beta and production releases, include postdeployment notifications for your team, and monitor the deployment status via TeamCitys dashboards.Now that you understand the usual components that make up an iOS pipeline, its time to build one yourself! Heres a rough overview of what this pipeline does:PrerequisitesYoull need the following before you can move ahead:Access to a TeamCity server or TeamCity Cloud with Mac build agents. Feel free to create a TeamCity Cloud trial account here.An iOS project hosted on GitHub. You can use one of your own projects or fork this one to your repo to follow along.An Apple Developer Program account.Access to the App Store Connect platform.fastlane installed locally.An Amazon Web Service (AWS) Simple Storage Service (S3) bucket to store app-signing certificates and profiles.Setting up the iOS projectThis tutorial uses fastlane to define the workflows that will be automated with TeamCity. Its a popular mobile DevOps tool used across iOS and Android projects.Initializing fastlaneOnce you have cloned the forked repo locally and set up fastlane, run the following command in a terminal inside your project directory:fastlane initSelect Automate beta distribution to TestFlight as the answer for What would you like to use fastlane for? The CLI will then ask for your Apple ID username and attempt to log in to your App Store Connect account. Once its logged in, it will create a fastlane/ folder inside your project directory along with an Appfile. This Appfile will contain the details about your project that you will supply during the fastlane init process. These details can include the app bundle, your Apple ID email, and your Apple Developer team ID.Note that for now, fastlane init will hard-code these values in the Appfile, but before pushing the fastlane files to your repo, you should replace these with environment variables; youll learn how to do this later in the tutorial.Setting up the beta laneNext, you need to paste the following contents into fastlane/Fastfile:default_platform(:ios)before_all do create_keychain( name: "keychain", password: "password", default_keychain: true, unlock: true, timeout: 3600, lock_when_sleeps: false ) match(type: "appstore", keychain_name: "keychain", keychain_password: "password", readonly: true)endplatform :ios do desc "Build and upload to TestFlight" lane :beta do |options| # Increment build number increment_build_number(xcodeproj: "Facto.xcodeproj") # Build the app build_app( scheme: "Facto", configuration: "Release", export_method: "app-store", export_options: { provisioningProfiles: { "dev.draft.Facto" => "Facto Distribution" } } ) api_key = app_store_connect_api_key( key_id: options[:key_id], issuer_id: options[:issuer_id], key_filepath: File.absolute_path("tmp/AuthKey.p8"), duration: 1200, in_house: false ) # Upload to TestFlight pilot( api_key: api_key, skip_waiting_for_build_processing: true, skip_submission: true ) endendThe Fastfile is where you define lanesautomated workflows that fastlane will run for you. The Fastfile above sets up a lane called beta to build and upload your iOS app to TestFlight.The default_platform(:ios) statement tells fastlane that youre working with an iOS project, so all lanes will assume this unless otherwise specified.The before_all block runs before any lane is executed. It carries out two tasks before running any lanes:create_keychain: This creates and unlocks a temporary keychain for your build. This is safer and cleaner than using your login keychain directly. In CI systems, this is a mandatory step as the runner environment often doesnt ship with a keychain.match: This uses match to fetch the appropriate App Store provisioning profile from a shared certificate repo and installs it into the keychain. readonly: true ensures that no new profiles are created during the process.The beta lane is your main automation workflow. Youll run this in TeamCity when youre ready to build the app and push it to TestFlight.Each step in this lane performs a part of the TestFlight release process:increment_build_number(xcodeproj: "Facto.xcodeproj") automatically increases the build number in your Xcode project. This is required for each TestFlight upload.build_app(...) builds your iOS app for distribution. It uses the Facto scheme based on the example app provided above, but please make sure to update it to your apps scheme. Next, it uses the Release configuration and exports the app for the App Store (export_method: "app-store"). It also specifies the correct provisioning profile to use for the given bundle identifier. Make sure to update this to match your provisioning profile.api_key = app_store_connect_api_key(...) loads a private API key (named AuthKey.p8) to authenticate securely with App Store Connect. The key ID and issuer ID are passed in via options, so you can keep secrets outside the code. You will need to set these up in the CI system before you can run the beta lane.Finally, pilot(...) uploads the build to TestFlight using the previously generated api_key. It doesnt wait for Apples build processing to finish or submit the build for App Review, which makes sense during internal testing.This Fastfile allows you to simply call fastlane beta in your TeamCity job after setting up the necessary credentials and have fastlane take care of all deployment tasks.Configuring fastlane matchNow that your Fastfile is set up, the next step is to configure match, which will handle code signing for you. Code signing is a necessary part of the iOS build and distribution process, and match helps automate it in a safe and scalable way, which is especially useful when working in CI environments like TeamCity.To do that, run the following in your project directory:fastlane match initThis command will guide you through a short process of configuring a few match preferences and will create a Matchfile for you at the end.As part of this process, fastlane will prompt you to choose a storage backend. For this tutorial, select S3. Heres why:Easier setup: Git-based storage typically requires configuring SSH keys or access tokens in your CI pipeline, which can be tedious and error-prone.Better access control: With S3, you can use IAM roles, bucket policies, or presigned URLs to control who can access signing assets tightly.More secure: S3 eliminates the need to expose or manage SSH credentials and can integrate with cloud-native security tooling for auditing and access logging.Once the Matchfile is created, make sure to fill in your S3 buckets name in the s3_bucket("") statement in the file.Run the following command to store your certificates and profiles in this bucket using match:fastlane match appstoreThis command tells fastlane to generate or download the necessary signing certificates and provisioning profiles for App Store distribution.Once thats done, fastlane will upload your certificates and provisioning profiles to the S3 bucket and automatically pull them down during builds. You wont need to manage or manually install signing files anymore; match will do it for you.At this point, you should update your Appfile to remove the hard-coded credentials that fastlane init created. Storing sensitive values directly in configuration files poses a security risk if theyre accidentally committed to version control. Instead, youll use environment variables to supply these values securely. Replace the contents of the fastlane/Appfile file with the following:app_identifier ENV["APP_IDENTIFIER"]apple_id ENV["APPLE_ID"]team_id ENV["TEAM_ID"]At this point, you are ready to start building a TeamCity pipeline. Make sure to commit the fastlane folder and its contents (Appfile, Fastfile, and Matchfile) to your apps GitHub repo before moving ahead.Create a new project in TeamCity CloudNow that your iOS project is set up with fastlane, its time to create a new project in TeamCity Cloud. This will be the foundation of your CI/CD pipeline.Lets start with a project creation. Head over to your TeamCity Cloud instance and click the + sign in the menu on the left. Click Manually, choose the name for your project, and TeamCity will automatically fill out the Project ID for you. Then click Create:Youll then see the project overview page. Here, you can set up VCS roots for the project, define parameters and other settings. You can also choose whether you want to create a pipeline for the project or use a build configuration.Heres a short description how the two differ:Pipeline: A simplified alternative to build configurations linked in a build chain. Features a smart visual editor and allows you to use YAML for configuration-as-code.Build configuration: Build configurations andpipelinesrepresent actual CI/CD routines. A build configuration stores a sequence of build steps (basic operations to be performed during a build run), and settings required to execute these steps.In this tutorial, well proceed with pipelines. Click the + Create pipeline button in the UI.On the next step, search for the repo that you forked. After you select the repo, youll see a few more fields on the page:Here, set a name for the pipeline and leave the other options as defaults. Once thats done, click Create. This will create the pipeline for you. Also, since you selected the default options when choosing the repo and creating the pipeline (set Default branch to main and Branches to monitor to All branches), this pipeline will be configured to run whenever a commit is pushed to any branch on the repo. You can change this option later if you want, though.Once the pipeline is created, youll be navigated to the pipeline editor view, with options to create build configurations, add build steps, configure triggers, and set up your iOS deployment workflow:You can now start configuring your jobs!Configure build jobYoull notice that an empty job has already been created for you with the name Job 1. You will update this job to set up your iOS development credentials and run the fastlane beta command.First of all, you need to set the runner for the job. By default, TeamCity runs jobs on a Linux-based runner. However, you need a macOS-based runner for building iOS projects, so in the right pane under Runs On, search for and select macOS 14 Sonoma Medium Arm64 as the runner:Next, in the Steps section of the same pane, click Script to add a new script-based step. This is where you will write the script for your fastlane beta call.Name the step as Push beta and paste the following script in the Script content field:export AWS_ACCESS_KEY_ID=%AWS_ACCESS_KEY_ID%export AWS_SECRET_ACCESS_KEY=%AWS_SECRET_ACCESS_KEY%export AWS_REGION=%AWS_REGION%mkdir -p fastlane/tmpaws secretsmanager get-secret-value \ --secret-id ASC_KEY \ --output text \ --query SecretString | base64 -d -o fastlane/tmp/AuthKey.p8export KEY_ID=`aws secretsmanager get-secret-value \ --secret-id ASC_KEY_ID \ --output text \ --query 'SecretString' | cut -d '"' -f4` export ISSUER_ID=`aws secretsmanager get-secret-value \ --secret-id ASC_ISSUER_ID \ --output text \ --query 'SecretString' | cut -d '"' -f4`export APP_IDENTIFIER=`aws secretsmanager get-secret-value \ --secret-id APP_IDENTIFIER \ --output text \ --query 'SecretString' | cut -d '"' -f4`export APPLE_ID=`aws secretsmanager get-secret-value \ --secret-id APPLE_ID \ --output text \ --query 'SecretString' | cut -d '"' -f4`export MATCH_PASSWORD=`aws secretsmanager get-secret-value \ --secret-id MATCH_PASSWORD \ --output text \ --query 'SecretString' | cut -d '"' -f4`export TEAM_ID=`aws secretsmanager get-secret-value \ --secret-id TEAM_ID \ --output text \ --query 'SecretString' | cut -d '"' -f4`bundle installbundle exec fastlane beta \ key_id:"$KEY_ID" \ issuer_id:"$ISSUER_ID"Lets take a moment to understand what this script does:AWS credentials setup:export AWS_ACCESS_KEY_ID=%AWS_ACCESS_KEY_ID%export AWS_SECRET_ACCESS_KEY=%AWS_SECRET_ACCESS_KEY%export AWS_REGION=%AWS_REGION%These lines set up AWS credentials that will be used to access AWS Secrets Manager. The %VARIABLE% syntax is TeamCitys way of referencing build parameters.App Store Connect key setup:mkdir -p fastlane/tmpaws secretsmanager get-secret-value \ --secret-id ASC_KEY \ --output text \ --query SecretString | base64 -d -o fastlane/tmp/AuthKey.p8This creates a temporary directory for the App Store Connect API key and downloads it from AWS Secrets Manager. The key is stored in Base64 format and needs to be decoded.Environment variables from Secrets:export KEY_ID=`aws secretsmanager get-secret-value \ --secret-id ASC_KEY_ID \ --output text \ --query 'SecretString' | cut -d '"' -f4`This pattern is repeated for all sensitive values (ISSUER_ID, APP_IDENTIFIER, APPLE_ID, MATCH_PASSWORD, and TEAM_ID). Each secret is retrieved from AWS Secrets Manager and stored as an environment variable. The cut -d '"' -f4 command extracts the actual value from the JSON response.Dependencies and execution:bundle installbundle exec fastlane beta \ key_id:"$KEY_ID" \ issuer_id:"$ISSUER_ID"Finally, the script installs Ruby dependencies using Bundler and runs the beta lane with the necessary parameters.This approach has several security benefits:Sensitive credentials are stored in AWS Secrets Manager, not in TeamCity.The App Store Connect API key is only temporarily available during the build.All sensitive values are passed as environment variables, not command line arguments.You are able to use these tools (aws, bundle, base64, etc.) without having to install them because TeamCity-hosted runners ship with a list of preinstalled software.Note that using an external, secure credentials manager is always recommended in production environments, which is why it has been demonstrated above. However, if you just want to set up the pipeline quickly, you can choose to skip the next section and supply the credentials through TeamCity build parameters. But please make sure to always use credential managers in production.Set up AWS SecretsBefore you can run this script, youll need to set up the following secrets in AWS Secrets Manager:ASC_KEY: Your App Store Connect API key file (.p8) in Base64 formatASC_KEY_ID: Your App Store Connect API key IDASC_ISSUER_ID: Your App Store Connect API issuer IDAPP_IDENTIFIER: Your apps bundle identifierAPPLE_ID: Your Apple ID emailMATCH_PASSWORD: Password for encrypting/decrypting certificates in matchTEAM_ID: Your Apple Developer team IDYou can follow this guide to create secrets through the AWS console. Make sure these secrets are set up correctly before moving ahead:Set up build parametersTo access these secrets from your pipeline, you need to provide the aws CLI tool with an access key and secret pair that has the necessary permissions to access the secret.Note that in TeamCity On-Premises, you can instead use the AWS Connection to provide your pipeline with a method to connect with your AWS resources with temporary credentials instead of exposing static ones.Youll need to set up three build parameters:AWS_ACCESS_KEY_ID: Your AWS access keyAWS_SECRET_ACCESS_KEY: Your AWS secret keyAWS_REGION: The AWS region where your secrets are stored (eg us-east-1)Once you have generated these, head over to your pipeline details page and click Pipeline settings above Job Details:The right pane will now show pipeline configuration details. You can find both parameters and secrets on this page. TeamCity secrets are build parameters whose actual values are stored securely by TeamCity, hidden away from the web UI, logs, YAML configurations, and other locations.You will notice a + icon next to No Secrets. Click it to add new secrets. Add the secrets listed above. Once thats done, heres what the pipeline settings page should look like:With these configurations in place, your build job is ready to run. When triggered, it will:set up the necessary Apple development credentials from AWS;download and configure the App Store Connect API key; andrun fastlane to build and deploy your app to TestFlight.Testing the pipelineTo trigger a build, you can either push a new commit to the repo or click the purple Run button at the top right of the TeamCity web portal. It should trigger a new build for you and take you to the build details page. In about four minutes, the build should complete running successfully:You can explore the build logs in the right panel to understand how the build processed and read any warning, info, or error messages that were generated. TeamCity groups logs by steps, and searching for and downloading log files is a straightforward process.Once the build completes successfully, you should receive an email from App Store Connect on the email address linked to your Apple ID:If you log in to your App Store Connect portal, you will see the new version ready to be rolled out for testing:This means that your iOS pipeline is working correctly!ConclusionIn this guide, you learned how to build a modern CI/CD pipeline for iOS applications using TeamCity Cloud and fastlane, thus automating your entire workflow from local development to TestFlight deployment. The result is a fully automated pipeline that picks up commits, runs builds, uploads to TestFlight, and provides complete visibility through dashboards, which creates a repeatable workflow that reduces manual effort, eliminates common errors, and ensures consistent app delivery.While this tutorial focused on TestFlight deployment, the same setup can be extended to include test automation, static analysis, App Store deployment, and team notifications. With TeamCity Clouds advanced features such as live test reporting, matrix builds, and build chains you have all the tools you need to scale your iOS delivery process as your app and team grow. Start a free trial
    0 Commentarii 0 Distribuiri 12 Views
  • FR.GAMERSLIVE.FR
    skate. : la franchise renat dans un monde ouvert disponible en accs anticip le 16 septembre prochain
    ActuGaming.net skate. : la franchise renat dans un monde ouvert disponible en accs anticip le 16 septembre prochain Aprs des annes dattente depuis son annonce et plusieurs journaux de dveloppeur nous dvoilant lavance [] L'article skate. : la franchise...
    0 Commentarii 0 Distribuiri 10 Views
  • YUBNUB.NEWS
    Trump Vows To Seek Death Penalty For Anyone Who Commits Murder In DC
    President Donald Trump announced on Tuesday that his administration will seek capital punishment for anyone who commits murder in Washington, D.C. The president said that the death penalty is a strong
    0 Commentarii 0 Distribuiri 9 Views
  • YUBNUB.NEWS
    Illinois Gov. JB Pritzker Forces All Colleges to Sell Abortion Pills
    Illinois Gov. JB Pritzker, a Democrat, signed legislation into law on Friday requiring all public colleges and universities in the state to dispense abortion pills to students. The bill amended the states
    0 Commentarii 0 Distribuiri 9 Views
  • YUBNUB.NEWS
    EXCLUSIVE: GOP Chairman Thinks His Party Has What It Takes To Beat The Purple Out Of Georgia
    ATLANTA After walloping Democrats to retain the governors mansion in 2022 and helping propel a Republican into the White House in 2024, the Georgia GOP thinks the Peach State is one step closer
    0 Commentarii 0 Distribuiri 9 Views
  • YUBNUB.NEWS
    Trump Calls on Cracker Barrel to Abandon New Logo
    The Cracker Barrel Old Country Store logo is displayed on a large rooftop sign in Mount Arlington, N.J., on Aug. 22, 2025. Gregory Walton/AFP via Getty ImagesPresident Donald Trump on Tuesday urged Cracker
    0 Commentarii 0 Distribuiri 9 Views