Skip to content

ansible/ansible-hub-ui

Repository files navigation

Ansible Automation Hub UI

Frontend for Ansible Hub and Galaxy. The backend for this project can be found at ansible/galaxy_ng, developer docs at ansible.readthedocs.io, and an outdated wiki at ansibe/galaxy_ng wiki.

The project is built on React & Patternfly, using components from patternfly-react and lingui for l10n.

Setting up Your Dev Environment

Backend

The development version of the backend runs in a container, using the pulp/oci_env wrapper.

Set up:

git clone https://github.com/pulp/oci_env
git clone https://github.com/ansible/galaxy_ng

pip install -e oci_env/client/
oci-env # make sure oci-env is in PATH

Run:

cd galaxy_ng
make oci/standalone

The backend can be run in multiple modes - standalone, community, insights, keycloak, ldap and dab. Depending on the mode, it will listen on http://localhost:5001 or http://localhost:55001, under /api/galaxy/, /api/ or /api/automation-hub/.

Frontend

UI can run either as part of the backend container, or locally. The development version of the frontend uses webpack dev server.

Set up:

Install node. Node v20+ is known to work. Other versions may work as well.

git clone https://github.com/ansible/ansible-hub-ui
cd ansible-hub-ui
npm install

Run:

cd ansible-hub-ui
npm run start-standalone

This app can be developed in standalone, community, or insights mode. Insights mode compiles the app to be run on the Red Hat cloud services platform (insights). Standalone mode only requires a running instance of the galaxy API for the UI to connect to. Community mode is similar to standalone, with github login and roles.

Modes

Tests

For more information about UI testing go to test/README.md.

Set up:

pip install galaxykit ansible

cd ansible-hub-ui/test/
npm install

And create a cypress.env.json from the cypress.env.json.template template.

Run:

cd ansible-hub-ui/test/
npm run cypress

GitHub Workflows

List of all workflows:

  • backported-labels: Add a backported-* label when a PR is backported to stable-*; on patchback merges
  • cloud-stage-disable: Disable deploy-cloud from master to stage-stable (stage-beta always on); manual
  • cloud-stage-enable: Enable deploy-cloud from master to stage-stable (stage-beta always on); manual
  • cypress: Run Cypress integration tests; on PRs, pushes and cron
  • deploy-cloud: Deploy to c.r.c; when the relevant branch is updated
  • dev-release: Build and upload to github releases, update dev tag; when master is updated
  • i18n: Extract and merge l10n strings; cron
  • pr-checks: Check for linter errors, obsolete package-lock.json and merge commits; on PRs only
  • stable-release: Build and upload to github releases; when a stable release is created
  • update-manifest: Update https://github.com/RedHatInsights/manifests ; when master is updated

List by branches:

  • master: backported-labels, cypress, deploy-cloud, dev-release, i18n, pr-checks, stable-release, update-manifest
  • prod-beta, prod-stable: deploy-cloud
  • stable-*: backported-labels, cypress, pr-checks, stable-release (and i18n via cron from master)

Version mapping

Our branches, backport labels, releases and tags use AAH versions, but Jira uses AAP versions. To map between the two:

AAP version AAH version
2.3 4.6
2.4 4.9

Table with component versions