google.cloud/CONTRIBUTING.md
Yusuke Tsutsumi f692dd4c76 fix role tests
Ansible role tests were failing due to ansible-lint reporting
multiple errors.

Fixing those errors resolves the failing tests.

Switching gcsfuse to use gcloud's bootstrap to follow the current
docker install instructions.

Removing centos as it's a discontinued distribution.

Adding a check to ensure integration tests are skipped unless they
are run by a branch (a public fork does not pass required
integration test credentials).
2022-11-29 23:12:26 -08:00

2.2 KiB

Contributing to the google.cloud collection

Workflow summary

  1. Clone the repository.
  2. Make the desired code change.
  3. Run integration tests locally and ensure they pass.
  4. Create a PR.

Cloning

The ansible-test command expects that the repository is in a directory that matches it's collection, under a directory ansible_collections. Clone ensuring that hierarchy:

mkdir -p $TARGET_DIR/ansible_collections/google
git clone <url> $TARGET_DIR/collections/google/cloud

Running tests

prequisites for all tests

  • Install the ansible package.
  • Some container runtime is necessary (e.g. podman or docker). The instructions use podman.

Running integration tests

Integration testing prequisites

Installing personal GCP credentials

The integration tests for this module require the use of real GCP credentials, and must provide ansible-test those values. They can be added by authoring the following in tests/integration/cloud-config-gcp.ini:

[default]
gcp_project: @PROJECT_ID
gcp_cred_file: @CRED_FILE
gcp_cred_kind: @CRED_KIND
gcp_cred_email: @EMAIL

Setting up the project for testing

Some of the setup of the project itself is done outside of the test, and is expected to be configured beforehand.

For convenience, a bootstrap script is provided.

NOTE: running this script will make irreversible changes in your GCP project (e.g. create an AppEngine project):

bash ./scripts/bootstrap-project.sh $PROJECT_ID $SERVICE_ACCOUNT_NAME

Running

Run ansible-test integration. Currently some tests are disabled as test are being verified and added.

Role tests

Prequisites for role tests

If you would like to use podman, you must install the molecule[podman] package in PyPI:

pip install --upgrade molecule[podman]

Running role tests

Ansible roles are tested via molecule.

module debug --test -s ${ROLE}

Role is the name of the role (e.g. gcloud, gcsfuse).

Add -d podman if you would like to use the podman driver.

If the linting fails, that is generally due to ansible-lint, which can be run directly:

ansible-lint