Using GitLab’s Secure File in GitLab CI


GitLab is a powerful platform that provides a complete DevOps solution, including version control, continuous integration, continuous delivery, and security features. One of the essential components of a mobile app release automation pipeline is securely managing sensitive data, such as signing keys, certificates, and API tokens. GitLab’s Secure File feature allows you to store and use these secrets in your GitLab CI/CD pipelines securely. In this blog, we will explore how to utilize GitLab’s Secure File to automate mobile app releases.

Prerequisites

Before you begin, ensure you have the following in place:

  1. A GitLab account and access to a GitLab project with a mobile app repository.

  2. A mobile app project with a GitLab CI/CD pipeline already set up.

  3. Mobile app signing keys and certificates.

What is GitLab’s Secure File?

GitLab’s Secure File is a feature that allows you to securely store sensitive files and data. These files are encrypted at rest and can only be accessed by authorized users with the right permissions. Secure Files are often used to store secrets, keys, or certificates required in your CI/CD pipelines, without exposing them in your repository.

Uploading a Secure File

  1. Log in to your GitLab account and navigate to your project.

  2. In the project menu, go to “Settings” and then select “CI/CD.”

  3. Scroll down to the “Secret variables” section and click “Expand.”

  4. Click on “Secure File.”

  5. Provide a name for your Secure File, and choose the file you want to upload. This is typically any file that you don’t want to keep in source.

  6. Click the “Add” button to upload the file securely.

Accessing Secure Files in CI/CD Pipeline

Now that you’ve uploaded your Secure File, you can access it in your CI/CD pipeline jobs. Here’s how to do it:

  1. In your .gitlab-ci.yml file, define a job that needs access to the Secure File.
build:
  script:
    - echo "Building the mobile app"
  only:
    - master

2. Add the artifacts keyword to your job and specify the Secure File you want to use.

build:
  script:
    - echo "Building the mobile app"
  only:
    - master
  artifacts:
    paths:
      - path/to/your/secure/file.extension

3. In your CI/CD script, use the Secure File.

build:
  script:
    - echo "Building the mobile app"
    - cp path/to/your/secure/file.extension path/to/your/mobile/app/folder
  only:
    - master
  artifacts:
    paths:
      - path/to/your/secure/file.extension

4. Make sure to configure your mobile app build process to use the Secure File. For example, you might update your Gradle or Xcode build settings to reference the signing key or certificate stored in the Secure File.

Secure File Best Practices

To ensure the security of your sensitive data in GitLab, consider these best practices:

  1. Restrict access to Secure Files: Only grant access to authorized users or CI/CD runners that need the Secure File. Use GitLab’s permissions system to control access.

2. Regularly rotate secrets: For added security, periodically rotate your signing keys, certificates, and other sensitive files.

3. Monitor Secure File access: Keep an eye on who is accessing your Secure Files and when they are being accessed.

4. Store only what’s necessary: Don’t store sensitive data in your repository or CI/CD scripts. Use Secure Files exclusively for this purpose.

Conclusion

GitLab’s Secure File feature provides a secure and convenient way to manage sensitive data required for mobile app release automation. By using Secure Files in your GitLab CI/CD pipelines, you can streamline your release process and maintain the highest level of security for your mobile app signing keys and certificates. With these best practices in place, you can confidently automate your mobile app releases while keeping your secrets safe.


If you like this post, you can buy me a coffee.

Also, to be notified about my new articles and stories: Follow me on Medium.

Subscribe to my YouTube Channel for educational content on similar topics

Follow me on Medium and GitHub, to connect quickly

You can find me on LinkedIn as it’s a professional network for people like me and you.

Cheers!!!!