--- name: E2E Tests on: pull_request_target: types: [labeled] jobs: e2e-test: if: contains(github.event.pull_request.labels.*.name, 'qe:e2e') runs-on: ubuntu-latest timeout-minutes: 40 permissions: packages: write contents: read strategy: matrix: job: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24] steps: - uses: actions/checkout@v2 - name: Install system deps run: sudo apt-get install -y gettext - name: Log in to registry run: | echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin - name: Pre-pull image to warm build cache run: | docker pull ghcr.io/${{ github.repository_owner }}/awx_devel:${{ github.base_ref }} - name: Build UI run: | DEV_DOCKER_TAG_BASE=ghcr.io/${{ github.repository_owner }} COMPOSE_TAG=${{ github.base_ref }} make ui-devel - name: Start AWX run: | DEV_DOCKER_TAG_BASE=ghcr.io/${{ github.repository_owner }} COMPOSE_TAG=${{ github.base_ref }} make docker-compose &> make-docker-compose-output.log & - name: Pull awx_cypress_base image run: | docker pull quay.io/awx/awx_cypress_base:latest - name: Checkout test project uses: actions/checkout@v2 with: repository: ${{ github.repository_owner }}/tower-qa ssh-key: ${{ secrets.QA_REPO_KEY }} path: tower-qa ref: devel - name: Build cypress run: | cd ${{ secrets.E2E_PROJECT }}/ui-tests/awx-pf-tests docker build -t awx-pf-tests . - name: Update default AWX password run: | while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' -k https://localhost:8043/api/v2/ping/)" != "200" ]] do 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: Run E2E tests env: CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} run: | export COMMIT_INFO_BRANCH=$GITHUB_HEAD_REF export COMMIT_INFO_AUTHOR=$GITHUB_ACTOR export COMMIT_INFO_SHA=$GITHUB_SHA export COMMIT_INFO_REMOTE=$GITHUB_REPOSITORY_OWNER cd ${{ secrets.E2E_PROJECT }}/ui-tests/awx-pf-tests AWX_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' tools_awx_1) printenv > .env echo "Executing tests:" docker run \ --network '_sources_default' \ --ipc=host \ --env-file=.env \ -e CYPRESS_baseUrl="https://$AWX_IP:8043" \ -e CYPRESS_AWX_E2E_USERNAME=admin \ -e CYPRESS_AWX_E2E_PASSWORD='password' \ -e COMMAND="npm run cypress-gha" \ -v /dev/shm:/dev/shm \ -v $PWD:/e2e \ -w /e2e \ awx-pf-tests run --project . - name: Save AWX logs uses: actions/upload-artifact@v2 with: name: AWX-logs-${{ matrix.job }} path: make-docker-compose-output.log