| name: Testing Framework |
|
|
| on: |
| schedule: |
| - cron: '0 0 * * *' |
|
|
| |
|
|
| |
| |
| |
|
|
| 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 }} |
| |
| |
| |
|
|
| 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 |
| 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 }} |
|
|