summaryrefslogtreecommitdiffstats
path: root/.github/actions/run_awx_devel/action.yml
blob: 9ce4a0fbfe808f00474c871fe63b3fd669473255 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
name: Run AWX docker-compose
description: Runs AWX with `make docker-compose`
inputs:
  github-token:
    description: GitHub Token to pass to awx_devel_image
    required: true
  build-ui:
    description: Should the UI be built?
    required: false
    default: false
    type: boolean
outputs:
  ip:
    description: The IP of the tools_awx_1 container
    value: ${{ steps.data.outputs.ip }}
  admin-token:
    description: OAuth token for admin user
    value: ${{ steps.data.outputs.admin_token }}
runs:
  using: composite
  steps:
    - name: Build awx_devel image for running checks
      uses: ./.github/actions/awx_devel_image
      with:
        github-token: ${{ inputs.github-token }}

    - name: Upgrade ansible-core
      shell: bash
      run: python3 -m pip install --upgrade ansible-core

    - name: Install system deps
      shell: bash
      run: sudo apt-get install -y gettext

    - name: Start AWX
      shell: bash
      run: |
        DEV_DOCKER_OWNER=${{ github.repository_owner }} \
        COMPOSE_TAG=${{ github.base_ref }} \
        COMPOSE_UP_OPTS="-d" \
        make docker-compose

    - name: Update default AWX password
      shell: bash
      run: |
        SECONDS=0
        while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' -k https://localhost:8043/api/v2/ping/)" != "200" ]]; do
          if [[ $SECONDS -gt 600 ]]; then
            echo "Timing out, AWX never came up"
            exit 1
          fi
          echo "Waiting for AWX..."
          sleep 5
        done
        echo "AWX is up, updating the password..."
        docker exec -i tools_awx_1 sh <<-EOSH
          awx-manage update_password --username=admin --password=password
        EOSH

    - name: Build UI
      # This must be a string comparison in composite actions:
      # https://github.com/actions/runner/issues/2238
      if: ${{ inputs.build-ui == 'true' }}
      shell: bash
      run: |
        docker exec -i tools_awx_1 sh <<-EOSH
          make ui-devel
        EOSH

    - name: Get instance data
      id: data
      shell: bash
      run: |
        AWX_IP=$(docker inspect -f '{{.NetworkSettings.Networks.awx.IPAddress}}' tools_awx_1)
        ADMIN_TOKEN=$(docker exec -i tools_awx_1 awx-manage create_oauth2_token --user admin)
        echo "ip=$AWX_IP" >> $GITHUB_OUTPUT
        echo "admin_token=$ADMIN_TOKEN" >> $GITHUB_OUTPUT