CICodacy Badge

We develop and maintain two phpIPAM related projects (phpypam, phpipam-ansible-modules). To ensure a good code quality we test it against a phpipam installation within workspaces. Formaly we use containerized services to run the tests. This approach was not perfect because we have to manage same code in multiple places. So we decided to create a action to setup a clean phpipam installation.

Usage

The action is hosted in a separate repository and available on marketplace. To use it you have to add the following to your workflow:

steps:
  - uses: actions/checkout@v2
  - uses: codeaffen/phpipam-action@v2
    with:
      ipam_version: "1.4x"

If the action finishes successfully you will be able to run your api tests against the phpipam installation.

- name: "Test phpipam api"
  run: |
    curl -k --user Admin:ipamadmin -X POST https://localhost/api/ansible/user/

With the ipam_version parameter you will be able to test against different phpipam versions by using s build matrix feature. This is done by defining a job as follows:

 jobs:
   matrix_test:
     strategy:
       matrix:
         phpipam: ['1.4x','1.5x']
     steps:
       - uses: actions/checkout@v2
       - name: run phpipam-action
         uses: codeaffen/phpipam-action@v2
         with:
           ipam_version: ${{ matrix.phpipam }}

Parameters

We provide the following parameters to configure the phpipam instance database:

  • ipam_version: the phpipam version to install: Default: “latest”
  • ipam_database_host: Database host phpipam connects to. Default: “database”
  • ipam_database_user: Database user phpipam needs to authenticate. Default: “phpipam”
  • ipam_database_pass: Database password phpipam needs to authenticate. Default: “phpipam”
  • ipam_database_name: Database name phpipam uses. Default: “phpipam”
  • database_root_password: Root password for the database. Default: “root”

Note: If you define a database host, the database (ipam_database_name) needs to be created or emptied before the action can be executed.

further resources

To get more information you can use the following sources: