# CI/CD Pipeline

An automated DevOps process for building, testing, and deploying software through continuous integration and continuous delivery.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Publishing Playwright HTML reports on GitLab Pages

DevFeed: [Publishing Playwright HTML reports on GitLab Pages](<https://devfeed.tech/articles/publishing-playwright-html-reports-on-gitlab-pages-22422.md>)

Original publisher: [Read original article](<https://www.tjmaher.com/2026/08/publishing-playwright-html-reports-on.html>)

Author: T.J. Maher (noreply@blogger.com)

Published: 2026-08-29T23:56:10Z

Content type: tutorial

Language: en

Sources: [T.J. Maher](<https://devfeed.tech/sources/t-j-maher.md>)

Topics: [GitLab](<https://devfeed.tech/topics/gitlab.md>), [Playwright](<https://devfeed.tech/topics/playwright.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [CI/CD Pipeline](<https://devfeed.tech/topics/ci-cd-pipeline.md>), [Publishing](<https://devfeed.tech/topics/publishing.md>)

Tags: [bun-create-playwright](<https://devfeed.tech/tags/bun-create-playwright.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [ci-cd-pipeline](<https://devfeed.tech/tags/ci-cd-pipeline.md>), [github-pages](<https://devfeed.tech/tags/github-pages.md>), [gitlab](<https://devfeed.tech/tags/gitlab.md>), [gitlab-ci](<https://devfeed.tech/tags/gitlab-ci.md>), [playwright](<https://devfeed.tech/tags/playwright.md>)

### AI overview

This tutorial explains how to add a deploy stage to a GitLab CI/CD pipeline for a Bun-based Playwright project. The stage publishes generated Playwright HTML reports, including screenshots and videos, to GitLab Pages so they can be viewed online.

### Source excerpt

We've added a lot to our demo project, bun--create-playwright. We've explored setting up a Playwright framework using bun, a new package manager bundled into Claude Code. We've added typechecking, and formatting and linting. We've set up a CI/ CD pipeline for our tests using GitLab, one with three stages: Quality: We check that the formatting, linting and typechecking is correct for any changes we attempt to push to the code base. Test: We run the smoke and then the regression tests to make sure that everything still works. Report: We bundle an archive of the Playwright generated HTML report, with screenshots and videos if things fail. For this post, we will add a new stage to this GitLab pipeline: Deploy: Where we will deploy the HTML report to GitLab Pages, so we can view it online. What is GitLab Pages? GitLab Pages is a built-in feature of GitLab that allows you to publish static websites directly from a repository in GitLab. Similar to GitHub Pages, it is commonly used to host project documentation, personal blogs, portfolios, or corporate landing pages for free. From the GitLab Docs / Pages: "To use GitLab Pages, you must create a project in GitLab to upload your website's files to. These projects can be either public, internal, or private. "By default, GitLab deploys your website from a specific folder called public in your repository. You can also set a custom folder to be deployed with Pages. When you create a new project in GitLab, a repository becomes available automatically. "To deploy your site, GitLab uses its built-in tool called GitLab CI/CD to build your site and publish it to the GitLab Pages server. The sequence of scripts that GitLab CI/CD runs to accomplish this task is created from a file named .gitlab-ci.yml, which you can create and modify. A user-defined job with pages: true property in the configuration file makes GitLab aware that you're deploying a GitLab Pages website. "You can either use the GitLab default domain for GitLab Pages websit

## Examining the artifacts job of a Playwright GitLab CI / CD pipeline

DevFeed: [Examining the artifacts job of a Playwright GitLab CI / CD pipeline](<https://devfeed.tech/articles/examining-the-artifacts-job-of-a-playwright-gitlab-ci-cd-pipeline-22416.md>)

Original publisher: [Read original article](<https://www.tjmaher.com/2026/08/examining-artifacts-job-of-playwright.html>)

Author: T.J. Maher (noreply@blogger.com)

Published: 2026-08-29T23:19:22Z

Content type: tutorial

Language: en

Sources: [T.J. Maher](<https://devfeed.tech/sources/t-j-maher.md>)

Topics: [Playwright](<https://devfeed.tech/topics/playwright.md>), [GitLab](<https://devfeed.tech/topics/gitlab.md>), [CI/CD Pipeline](<https://devfeed.tech/topics/ci-cd-pipeline.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [test](<https://devfeed.tech/topics/test.md>)

Tags: [bun-create-playwright](<https://devfeed.tech/tags/bun-create-playwright.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [ci-cd-pipeline](<https://devfeed.tech/tags/ci-cd-pipeline.md>), [gitlab](<https://devfeed.tech/tags/gitlab.md>), [playwright](<https://devfeed.tech/tags/playwright.md>), [screenshots](<https://devfeed.tech/tags/screenshots.md>), [test](<https://devfeed.tech/tags/test.md>), [trace](<https://devfeed.tech/tags/trace.md>), [videos](<https://devfeed.tech/tags/videos.md>)

### AI overview

This tutorial examines how a Playwright GitLab CI/CD pipeline stores and exposes test artifacts. It explains the playwright-report, test-results, and reports/junit folders and describes generated HTML and JUnit reports, screenshots, videos, and trace reports.

### Source excerpt

You may have noticed that in the GitLab CI / CD Pipeline for our Playwright project, in the .gitlab-ci.yml file, after our scripts has run, in the Test stage, there is a subsection called "artifacts" with certain paths to something called "playwright-report", "test-results", and "reports". The Playwright -> Artifacts -> Reports stage playwright: extends: .bun_playwright stage: test timeout: 30 minutes ... ... artifacts: when: always paths: - playwright-report/ - test-results/ - reports/ reports: junit: reports/junit/results.xml expire_in: 30 days https://gitlab.com/tjmaher/bun-create-playwright/-/blob/main/.gitlab-ci.yml Every time Playwright tests run, it generates proof of the test execution: screenshots capturing the state of the UI when a test failed, video recordings of an entire browser session, HTML and JUnit XML test reports, trace reports showing action logs, network requests. These artifacts, when the tests run locally, are placed by the Playwright Test runner in generated folders, playwright-report and test-results, along with a folder called reports/junit. With this post, we will be examining how this artifacts stage of the GitLab CI/ CD pipeline produces downloadable artifacts we can examine. Playwright-Report: A Playwright Test folderThe Playwright Test runner creates a folder called "playwright-report", if it doesn't already exist, and an HTML file called index.html documenting the completed test run. From Playwright.dev / Test Reporters: "Playwright Test comes with a few built-in reporters for different needs and ability to provide custom reporters. [...] All built-in reporters show detailed information about failures, and mostly differ in verbosity for successful runs. [...] HTML reporter produces a self-contained folder that contains report for the test run that can be served as a web page". The HTML Report is the one that automatically opens after you run your tests locally, or if you are using the node package manager: npx playwright show-report

## Setting up a CI/ CD pipeline with GitLab: Quality, Test and Report

DevFeed: [Setting up a CI/ CD pipeline with GitLab: Quality, Test and Report](<https://devfeed.tech/articles/setting-up-a-ci-cd-pipeline-with-gitlab-quality-test-and-report-22424.md>)

Original publisher: [Read original article](<https://www.tjmaher.com/2026/08/setting-up-ci-cd-pipeline-with-gitlab.html>)

Author: T.J. Maher (noreply@blogger.com)

Published: 2026-08-25T02:28:52Z

Content type: tutorial

Language: en

Sources: [T.J. Maher](<https://devfeed.tech/sources/t-j-maher.md>)

Topics: [CI/CD Pipeline](<https://devfeed.tech/topics/ci-cd-pipeline.md>), [GitLab](<https://devfeed.tech/topics/gitlab.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Playwright](<https://devfeed.tech/topics/playwright.md>), [pull-requests](<https://devfeed.tech/topics/pull-requests.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>)

Tags: [bun-create-playwright](<https://devfeed.tech/tags/bun-create-playwright.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [ci-cd-pipeline](<https://devfeed.tech/tags/ci-cd-pipeline.md>), [code-reviews](<https://devfeed.tech/tags/code-reviews.md>), [gitlab](<https://devfeed.tech/tags/gitlab.md>), [playwright](<https://devfeed.tech/tags/playwright.md>), [test](<https://devfeed.tech/tags/test.md>), [testing](<https://devfeed.tech/tags/testing.md>), [typescript](<https://devfeed.tech/tags/typescript.md>), [workflows](<https://devfeed.tech/tags/workflows.md>)

### AI overview

A tutorial on setting up a three-stage GitLab CI/CD pipeline for merge requests. The pipeline runs code-quality checks, smoke and regression tests, and produces a downloadable report, with stages executed sequentially and jobs within each stage running in parallel.

### Source excerpt

So far, we have reviewed how to review code with ES Lint + Prettier and Typecheck, how to set up and run smoke tests, how to run all Playwright + TypeScript tests, and reviewed the HTML report of results. In this post, we are going to set up a three stage GitLab CI/ CD pipeline that will run against every merge request: Quality (lint, typecheck, prettier) --> Test ( smoke + regression ) --> Report ( Downloadable ) I haven't used GitLab since when I worked at ThreatStack back in 2020. ( See my blog entry Getting to Know GitLab and How They Test the UI ) GitLab reads .gitlab-ci.yml from the repository root and turns it into a pipeline, a set of jobs, grouped into stages, running whenever you push a change to a repository. Stages run one after another, and jobs within a stage run in parallel. If one stage fails, the stages after it are skipped. This begs the question: What is GitLab? What is CI/ CD? Or a pipeline? Or a merge request? What is GitLab? GitLab began in 2011 as a side project by Ukrainian programmer Dmytro Zaporozhets, built to help developers work together on code more easily. Over time, it grew into a large open-source DevOps platform. More than just storing code, it handles code reviews, CI/CD (continuous integration and continuous delivery), and package registries. A company called GitLab Inc. was eventually created to turn the project into a commercial product. What makes GitLab different from tools that only host Git repositories (like a basic Git server) is that it bundles the entire software delivery process into one application. This includes: Merge requests - GitLab's term for proposing and reviewing code changes before they're merged into the main codebase (similar to a "pull request" in GitHub) Issue tracking - a built-in system for logging bugs, tasks, and feature requests Pipelines - automated workflows that build, test, and deploy code whenever changes are pushed So instead of stitching together separate tools for version control, testing, an

## How to Build an A/B Testing Framework for Modern CI/CD Pipelines

DevFeed: [How to Build an A/B Testing Framework for Modern CI/CD Pipelines](<https://devfeed.tech/articles/how-to-build-an-a-b-testing-framework-for-modern-ci-cd-pipel-13418.md>)

Original publisher: [Read original article](<https://www.harness.io/blog/how-to-build-an-a-b-testing-framework-for-modern-ci-cd-pipelines>)

Author: Aaron Newcomb

Published: 2026-08-10T00:00:00Z

Content type: tutorial

Language: en

Sources: [Harness Blog](<https://devfeed.tech/sources/harness-blog.md>)

Topics: [A/B Testing](<https://devfeed.tech/topics/a-b-testing.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [CI/CD Pipeline](<https://devfeed.tech/topics/ci-cd-pipeline.md>), [feature flags](<https://devfeed.tech/topics/feature-flags.md>), [progressive delivery](<https://devfeed.tech/topics/progressive-delivery.md>), [Monitoring](<https://devfeed.tech/topics/monitoring.md>)

Tags: [a-b-testing](<https://devfeed.tech/tags/a-b-testing.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [feature-flags](<https://devfeed.tech/tags/feature-flags.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [progressive-delivery](<https://devfeed.tech/tags/progressive-delivery.md>), [rollback](<https://devfeed.tech/tags/rollback.md>), [verification](<https://devfeed.tech/tags/verification.md>)

### AI overview

This tutorial explains how to integrate A/B testing into CI/CD pipelines using feature flags, progressive delivery, real-time metrics, automated verification, and rollback controls. It argues that deployment should be decoupled from release so teams can validate changes before full rollout.

### Source excerpt

Learn how to build an A/B testing framework in your CI/CD pipeline. Accelerate software delivery, reduce risk, and boost innovation. Start now! | Blog

## Monitoring Android Vitals with the Play Developer Reporting API

DevFeed: [Monitoring Android Vitals with the Play Developer Reporting API](<https://devfeed.tech/articles/monitoring-android-vitals-with-the-play-developer-reporting-api-25945.md>)

Original publisher: [Read original article](<https://medium.com/google-developer-experts/monitoring-android-vitals-with-the-play-developer-reporting-api-85edabb772a9?source=rss-cbfc736ddcd3------2>)

Author: Julien Salvi

Published: 2026-03-19T12:41:51Z

Content type: tutorial

Language: en

Sources: [Stories by Julien Salvi on Medium](<https://devfeed.tech/sources/stories-by-julien-salvi-on-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [API](<https://devfeed.tech/topics/api.md>), [Google Play](<https://devfeed.tech/topics/google-play.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [CI/CD Pipeline](<https://devfeed.tech/topics/ci-cd-pipeline.md>), [Google Cloud Platform (GCP)](<https://devfeed.tech/topics/google-cloud.md>), [Slack](<https://devfeed.tech/topics/slack.md>)

Tags: [aircall](<https://devfeed.tech/tags/aircall.md>), [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [anr](<https://devfeed.tech/tags/anr.md>), [api](<https://devfeed.tech/tags/api.md>), [ci-cd-pipeline](<https://devfeed.tech/tags/ci-cd-pipeline.md>), [crash](<https://devfeed.tech/tags/crash.md>), [google-play-developer](<https://devfeed.tech/tags/google-play-developer.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [reporting](<https://devfeed.tech/tags/reporting.md>), [slack](<https://devfeed.tech/tags/slack.md>)

### AI overview

This tutorial explains how Aircall uses the Google Play Developer Reporting API in a Gradle task to retrieve Android Vitals, including ANR and crash metrics, and deliver daily health reporting to Slack. It covers metric-set queries, timeline aggregations, service-account authentication, data modeling, and health thresholds.

### Source excerpt

At Aircall, we built an automated reporting tool that fetches our Android Vitals metrics thanks to the Play Developer Reporting API and delivers a daily health dashboard straight to Slack. All of this powered by a simple Gradle task. Discovering the API The Google Play Developer Reporting API gives programmatic access to the same quality metrics you see in the Google Play Console. It covers the core Android Vitals: ANR rate, crash rate, slow start rate, and stuck background wakelocks, the signals Google uses to determine whether your app meets the bad behavior thresholds. The API is organized around metric sets that you query with a timeline specification. Each metric set returns daily, 7-day, and 28-day user-weighted aggregates, giving you the full picture from short-term regressions to long-term trends. The key advantage over scraping the Console UI is that you can automate the entire flow and integrate it into your existing CI/CD pipeline. You will find the complete API reference in the official documentation. Build with Play VitalsSetting up the dependency We chose to implement this as a Gradle task inside our build-logic module. This keeps the reporting logic close to the project without polluting the app code. First, let's add the dependency: # libs.versions.toml googleApiReporting = "v1beta1-rev20230803-2.0.0" buildLogic-plugin-google-play-developer-reporting = { module = "com.google.apis:google-api-services-playdeveloperreporting", version.ref = "googleApiReporting" } Which can then be added to the build.gradle.kts of your build-logic module: dependencies { // API to get Google Play store vitals metrics implementation(libs.buildLogic.plugin.google.play.developer.reporting) }Authenticating with a Service Account To access the API, you need a Google Cloud Service Account with the Play Developer Reporting scope. We pass the credentials as an environment variable to keep secrets out of the repository. The Reporting client initializes the API with these credentia

## Pipeline Performance Profiling: Making CI/CD Performance, Cost, and Bottlenecks Visible

DevFeed: [Pipeline Performance Profiling: Making CI/CD Performance, Cost, and Bottlenecks Visible](<https://devfeed.tech/articles/pipeline-performance-profiling-making-ci-cd-performance-cost-and-bottlenecks-visible-17681.md>)

Original publisher: [Read original article](<https://codefresh.io/blog/pipeline-performance-profiling/>)

Author: Gil Chaouat

Published: 2026-01-26T15:56:34Z

Content type: article

Language: en

Sources: [Codefresh](<https://devfeed.tech/sources/codefresh.md>)

Topics: [CI/CD Pipeline](<https://devfeed.tech/topics/ci-cd-pipeline.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [Automation](<https://devfeed.tech/topics/automation.md>)

Tags: [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [continuous-delivery](<https://devfeed.tech/tags/continuous-delivery.md>), [cost](<https://devfeed.tech/tags/cost.md>), [devops](<https://devfeed.tech/tags/devops.md>), [performance](<https://devfeed.tech/tags/performance.md>), [pipeline](<https://devfeed.tech/tags/pipeline.md>), [product-and-tools](<https://devfeed.tech/tags/product-and-tools.md>)

### AI overview

The article explains how CI/CD pipeline performance profiling can make pipeline behavior, speed, efficiency, cost, and bottlenecks observable and measurable. It also describes how CI/CD automation reduces deployment time and manual errors while providing faster feedback.

### Source excerpt

Modern CI/CD pipelines are no longer just about whether builds succeed, they're about how fast, how efficiently, and at what cost they run. Pipeline Performance Profiling is designed to close this gap by making pipeline behavior observable, measurable, and explainable. The post Pipeline Performance Profiling: Making CI/CD Performance, Cost, and Bottlenecks Visible appeared first on Codefresh.

## Setting Up a CI/CD Pipeline for Power BI Report Source Control

DevFeed: [Setting Up a CI/CD Pipeline for Power BI Report Source Control](<https://devfeed.tech/articles/a-turbulent-journey-through-power-bi-source-control-40832.md>)

Original publisher: [Read original article](<https://mutto.fyi/posts/2022/11/turbulent-journey-power-bi-source-control/>)

Published: 2022-11-07T00:00:00Z

Content type: tutorial

Language: en

Sources: [Mutt0-ds Notes](<https://devfeed.tech/sources/mutt0-ds-notes.md>)

Topics: [Azure DevOps](<https://devfeed.tech/topics/azure-devops.md>), [CI/CD Pipeline](<https://devfeed.tech/topics/ci-cd-pipeline.md>), [DevOps](<https://devfeed.tech/topics/devops.md>), [REST API](<https://devfeed.tech/topics/rest-api.md>), [Git](<https://devfeed.tech/topics/git.md>), [active directory](<https://devfeed.tech/topics/active-directory.md>), [JSON](<https://devfeed.tech/topics/json.md>), [API](<https://devfeed.tech/topics/api.md>), [dataset](<https://devfeed.tech/topics/dataset.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>)

Tags: [authentication](<https://devfeed.tech/tags/authentication.md>), [ci-cd-pipeline](<https://devfeed.tech/tags/ci-cd-pipeline.md>), [dataset](<https://devfeed.tech/tags/dataset.md>), [devops](<https://devfeed.tech/tags/devops.md>), [directory](<https://devfeed.tech/tags/directory.md>), [environment-variables](<https://devfeed.tech/tags/environment-variables.md>), [git](<https://devfeed.tech/tags/git.md>), [json](<https://devfeed.tech/tags/json.md>), [repository](<https://devfeed.tech/tags/repository.md>), [rest-api](<https://devfeed.tech/tags/rest-api.md>)

### AI overview

This article describes setting up a CI/CD pipeline through Azure DevOps to provide rudimentary version control for Power BI reports. Because .pbix files are binary, the pipeline uploads a report to a Power BI Premium workspace, uses the Power BI REST API and Tabular Editor 2 to extract metadata, and pushes the resulting textual representation back to a Git repository.

### Source excerpt

One of the most annoying issues I have when working with Power BI files is that source control is a real pain. Considering that Microsoft...

## Focus Week Case Study: Bringing E2E Tests into the CI Pipeline

DevFeed: [Focus Week Case Study: Bringing E2E Tests into the CI Pipeline](<https://devfeed.tech/articles/focus-week-case-study-bringing-e2e-tests-into-the-ci-pipeline-39905.md>)

Original publisher: [Read original article](<https://mende.io/blog/focus-week-case-study/>)

Author: tobi@techunicorn.builders (Tobias Mende)

Published: 2021-12-25T12:34:00Z

Content type: article

Language: en

Sources: [Tobias Mende](<https://devfeed.tech/sources/tobias-mende.md>)

Topics: [CI/CD Pipeline](<https://devfeed.tech/topics/ci-cd-pipeline.md>), [Selenium](<https://devfeed.tech/topics/selenium.md>), [test](<https://devfeed.tech/topics/test.md>), [AWS Lambda](<https://devfeed.tech/topics/aws-lambda.md>)

Tags: [aws-lambda](<https://devfeed.tech/tags/aws-lambda.md>), [case-study](<https://devfeed.tech/tags/case-study.md>), [case-study-collaboration-culture-ensemble-programming-team-programming-developer-productivity](<https://devfeed.tech/tags/case-study-collaboration-culture-ensemble-programming-team-programming-developer-productivity.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [e2e](<https://devfeed.tech/tags/e2e.md>), [selenium](<https://devfeed.tech/tags/selenium.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This case study describes BRYTER's effort to bring Selenium-based end-to-end tests into its CI/CD pipeline. The tests were previously maintained by QA in a separate repository and run manually, with problems including slowness and flakiness. The team identified stabilization, parallel execution using AWS Lambda, closer alignment with production code, and CI/CD integration as key areas of work.

### Source excerpt

Focus Week Case Study: Bringing E2E Tests into the CI Pipeline In my last article, I wrote about focus weeks and how my team is currently doing them at BRYTER. Today, I want to share a case study of our latest focus week.

## Fixing APK Analyzer terminal errors by selecting a compatible Java version

DevFeed: [Fixing APK Analyzer terminal errors by selecting a compatible Java version](<https://devfeed.tech/articles/apkanalyzer-error-32349.md>)

Original publisher: [Read original article](<https://dustn.dev/post/2021-12-12-issues-with-apkanalyzer/>)

Author: dustin@dustn.dev (Dustin Summers)

Published: 2021-12-12T10:26:38Z

Content type: tutorial

Language: en

Sources: [Dustin Summers](<https://devfeed.tech/sources/dustin-summers.md>)

Topics: [APK](<https://devfeed.tech/topics/apk.md>), [Java](<https://devfeed.tech/topics/java.md>), [CI/CD Pipeline](<https://devfeed.tech/topics/ci-cd-pipeline.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Google](<https://devfeed.tech/topics/google.md>)

Tags: [android-studio](<https://devfeed.tech/tags/android-studio.md>), [android-xmlschema-error-apkanalyzer-troubleshooting](<https://devfeed.tech/tags/android-xmlschema-error-apkanalyzer-troubleshooting.md>), [apk](<https://devfeed.tech/tags/apk.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [error](<https://devfeed.tech/tags/error.md>), [java](<https://devfeed.tech/tags/java.md>), [jdk](<https://devfeed.tech/tags/jdk.md>)

### AI overview

This tutorial addresses an APK Analyzer error encountered when running the tool from a terminal, including in a CI/CD workflow. It explains that Android Studio's bundled JDK may be incompatible and describes selecting another installed Java version, with guidance for making the change permanent.

### Source excerpt

Recently, I was tasked with using Google provided tools to decompile an APK in a CI/CD pipeline. This is great, because Google provides a tool called APK Analyzer, and provide tools both within the IDE itself and options to run it via the Command Line. I can talk more about the actual task later. For now, I want to discuss the issue that I first ran into when attempting to run apkanalyzer from the terminal.