Spaces:
No application file
No application file
| name: Testing Framework | |
| on: | |
| schedule: # schedule the job to run once a day | |
| - cron: '0 0 * * *' | |
| #workflow_dispatch: | |
| # pull_request: ## temporary for debugging development purposes | |
| # branches: | |
| # - main | |
| env: | |
| TF_VAR_aws_region: "eu-west-2" | |
| TF_VAR_aws_ami_owners: '["125523088429"]' | |
| TF_VAR_aws_ami_name: '["Fedora-Cloud-Base-39*"]' | |
| TF_VAR_aws_volume_size: 100 | |
| TF_VAR_aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
| TF_VAR_aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
| # AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
| # AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
| # AWS_DEFAULT_REGION: "eu-west-2" | |
| concurrency: | |
| group: ${{ github.workflow }} | |
| cancel-in-progress: false | |
| jobs: | |
| integration-tests: | |
| if: github.repository == 'containers/ai-lab-recipes' | |
| runs-on: ubuntu-24.04 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - arch: amd64 | |
| aws_image_type: t3a.medium | |
| aws_ami_architecture: x86_64 | |
| - arch: arm64 | |
| aws_image_type: m7g.medium | |
| aws_ami_architecture: arm64 | |
| - arch: amd64 # gpu enabled | |
| aws_image_type: g4dn.xlarge | |
| aws_ami_architecture: x86_64 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4.1.7 | |
| with: | |
| ref: 'main' | |
| - name: Set up Python | |
| uses: actions/setup-python@v5.1.1 | |
| with: | |
| python-version: '3.11' | |
| - name: Checkout terraform module | |
| id: checkout-module | |
| uses: actions/checkout@v4.1.7 | |
| with: | |
| repository: containers/terraform-test-environment-module | |
| path: terraform-test-environment-module | |
| ref: 'main' | |
| - name: Setup Terraform | |
| uses: hashicorp/setup-terraform@v3.1.2 | |
| with: | |
| terraform_version: "1.7.5" | |
| terraform_wrapper: false | |
| - name: Init | |
| run: terraform init | |
| working-directory: terraform-test-environment-module | |
| - name: Bootstrap | |
| id: up | |
| run: terraform apply -auto-approve -lock=false | |
| working-directory: terraform-test-environment-module | |
| env: | |
| TF_VAR_aws_instance_type: ${{ matrix.aws_image_type }} | |
| TF_VAR_aws_ami_architecture: ${{ matrix.aws_ami_architecture }} | |
| - name: Terraform Output | |
| id: terraform-output | |
| run: | | |
| echo "id=$(terraform output id | xargs)" >> $GITHUB_OUTPUT | |
| echo "url=$(terraform output host | xargs)" >> $GITHUB_OUTPUT | |
| echo "pem_filename=$(terraform output pem_filename | xargs)" >> $GITHUB_OUTPUT | |
| working-directory: terraform-test-environment-module | |
| - name: Ansible Collections | |
| run: ansible-galaxy install -r ./provision/requirements.yml | |
| working-directory: ./recipes/natural_language_processing/chatbot | |
| - name: Provision | |
| run: | | |
| ansible-playbook ./recipes/natural_language_processing/chatbot/provision/playbook.yml \ | |
| -i terraform-test-environment-module/hosts.ini \ | |
| --private-key=terraform-test-environment-module/${{ steps.terraform-output.outputs.pem_filename }} | |
| env: | |
| ANSIBLE_HOST_KEY_CHECKING: false | |
| - name: Install Dependencies | |
| working-directory: ./recipes/natural_language_processing/chatbot | |
| run: make install | |
| - name: Run Integration Tests | |
| working-directory: ./recipes/natural_language_processing/chatbot | |
| run: make integration-tests | |
| env: | |
| URL: ${{ steps.terraform-output.outputs.url }} | |
| - name: Destroy Test Environment | |
| id: down | |
| if: always() | |
| run: terraform destroy -auto-approve -lock=false | |
| working-directory: terraform-test-environment-module | |
| env: | |
| TF_VAR_aws_instance_type: ${{ matrix.aws_image_type }} | |
| TF_VAR_aws_ami_architecture: ${{ matrix.aws_ami_architecture }} | |
| - name: Publish Job Results to Slack | |
| id: slack | |
| if: always() | |
| uses: slackapi/slack-github-action@v1.26.0 | |
| with: | |
| payload: | | |
| { | |
| "text": "${{ github.workflow }} workflow status: ${{ job.status }}\n${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
| } | |
| env: | |
| SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
| release-images: | |
| runs-on: ubuntu-24.04 | |
| needs: integration-tests | |
| if: success() | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - image: llamacpp_python | |
| - image: whispercpp | |
| - image: chatbot | |
| steps: | |
| - name: Login to registry | |
| uses: redhat-actions/podman-login@v1.7 | |
| with: | |
| registry: quay.io | |
| username: ${{ secrets.REGISTRY_USER }} | |
| password: ${{ secrets.REGISTRY_PASSWORD }} | |
| - name: Copy image from one registry to another one | |
| run: skopeo copy --all docker://${{ env.SOURCE_REGISTRY }}/${{ matrix.image }} docker://${{ env.TARGET_REGISTRY }}/${{ matrix.image }} | |
| env: | |
| SOURCE_REGISTRY: ghcr.io/containers | |
| TARGET_REGISTRY: quay.io/ai-lab | |
| - name: Publish Job Results to Slack | |
| id: slack | |
| if: always() | |
| uses: slackapi/slack-github-action@v1.26.0 | |
| with: | |
| payload: | | |
| { | |
| "text": "${{ github.workflow }} workflow status: ${{ job.status }}\n${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
| } | |
| env: | |
| SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
| test-make-targets: | |
| if: github.repository == 'containers-mirror/ai-lab-recipes' | |
| runs-on: ubuntu-22.04-2core | |
| steps: | |
| - uses: actions/checkout@v4.1.7 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5.1.1 | |
| with: | |
| python-version: '3.11' | |
| - name: chatbot | |
| working-directory: ./recipes/natural_language_processing/chatbot | |
| run: make bootc | |
| - name: Publish Job Results to Slack | |
| id: slack | |
| if: always() | |
| uses: slackapi/slack-github-action@v1.26.0 | |
| with: | |
| payload: | | |
| { | |
| "text": "${{ github.workflow }} workflow status: ${{ job.status }}\n${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
| } | |
| env: | |
| SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |