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 }}