yvoronoy/m2install

View on GitHub
.github/workflows/functional-tests.yml

Summary

Maintainability
Test Coverage
name: Docker Image CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build-and-run-tests:
    runs-on: ubuntu-latest
    env:
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
      COMPOSER_USERNAME: ${{ secrets.COMPOSER_USERNAME }}
      COMPOSER_PASSWORD: ${{ secrets.COMPOSER_PASSWORD }}
    steps:
    - uses: actions/checkout@v2

    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v1

    - name: Build and export
      uses: docker/build-push-action@v2
      with:
        context: infra/
        load: true
        tags: infra-runner:latest

    - name: Terraform Init
      run: >-
        docker run --rm
        -e AWS_ACCESS_KEY_ID 
        -e AWS_SECRET_ACCESS_KEY
        -v "$(pwd)/infra/ansible/etc:/etc/ansible"
        -v "$(pwd):/root/m2install"
        -w "/root/m2install/infra/terraform"
        infra-runner
        terraform init

    - name: Terraform apply
      run: >-
        docker run --rm
        -e AWS_ACCESS_KEY_ID 
        -e AWS_SECRET_ACCESS_KEY
        -v "$(pwd)/infra/ansible/etc:/etc/ansible"
        -v "$(pwd):/root/m2install"
        -w "/root/m2install/infra/terraform"
        infra-runner
        terraform apply --auto-approve

    - name: Update Composer Secrets
      run: >-
        echo "composer_username: $COMPOSER_USERNAME" > infra/ansible/secrets.yaml ;
        echo "composer_password: $COMPOSER_PASSWORD" >> infra/ansible/secrets.yaml ; 

    - name: Run Ansible and Functional Tests
      run: >-
        sleep 10 ;
        docker run --rm
        -e AWS_ACCESS_KEY_ID 
        -e AWS_SECRET_ACCESS_KEY
        -v "$(pwd)/infra/ansible/etc:/etc/ansible"
        -v "$(pwd):/root/m2install"
        -w "/root/m2install/infra/terraform"
        infra-runner
        ansible-playbook ../ansible/playbook.yaml

    - name: Destroy Infrastructure
      if: always()
      run: >-
        docker run --rm
        -e AWS_ACCESS_KEY_ID 
        -e AWS_SECRET_ACCESS_KEY
        -v "$(pwd)/infra/ansible/etc:/etc/ansible"
        -v "$(pwd):/root/m2install"
        -w "/root/m2install/infra/terraform"
        infra-runner
        terraform destroy --auto-approve