Testing Framework #287
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 }} |