Skip to content

Continuous Integration instrumentation for AI DIAL components

License

Notifications You must be signed in to change notification settings

epam/ai-dial-ci

Repository files navigation

AI DIAL workflows

Overview

Continuous Integration instrumentation for AI DIAL components.

Contains reusable workflows for AI-DIAL group of repositories under EPAM GitHub organization.

Usage

These workflows could be imported to any repository under EPAM GitHub organization as standard .github/workflows files. See examples below (replace @main with specific version tag).

PR Workflow (NodeJS (npm), Docker)

name: PR Workflow

on:
  pull_request:
    branches: [development, release-*]

jobs:
  run_tests:
    uses: epam/ai-dial-ci/.github/workflows/node_pr.yml@main
    secrets: inherit

Release Workflow (NodeJS (npm), Docker)

name: Release Workflow

on:
  push:
    branches: [development, release-*]

jobs:
  release:
    uses: epam/ai-dial-ci/.github/workflows/node_release.yml@main
    secrets: inherit

PR Workflow (Java (gradle), Docker)

name: PR Workflow

on:
  pull_request:
    branches: [development, release-*]

jobs:
  run_tests:
    uses: epam/ai-dial-ci/.github/workflows/java_pr.yml@main
    secrets: inherit

Release Workflow (Java (gradle), Docker)

name: Release Workflow

on:
  push:
    branches: [development, release-*]

jobs:
  release:
    uses: epam/ai-dial-ci/.github/workflows/java_release.yml@main
    secrets: inherit

PR Workflow (Python (poetry), Docker)

name: PR Workflow

on:
  pull_request:
    branches: [development, release-*]

jobs:
  run_tests:
    uses: epam/ai-dial-ci/.github/workflows/python_docker_pr.yml@main
    secrets: inherit

Release Workflow (Python (poetry), Docker)

name: Release Workflow

on:
  push:
    branches: [development, release-*]

jobs:
  release:
    uses: epam/ai-dial-ci/.github/workflows/python_docker_release.yml@main
    secrets: inherit

PR Workflow (Python (poetry), package)

name: PR Workflow

on:
  pull_request:
    branches: [development, release-*]

jobs:
  run_tests:
    uses: epam/ai-dial-ci/.github/workflows/python_package_pr.yml@main
    secrets: inherit

Release Workflow (Python (poetry), package)

name: Release Workflow

on:
  push:
    branches: [development, release-*]

jobs:
  release:
    uses: epam/ai-dial-ci/.github/workflows/python_package_release.yml@main
    secrets: inherit

PR Workflow (Generic, Docker)

name: PR Workflow

on:
  pull_request:
    branches: [development, release-*]

jobs:
  run_tests:
    uses: epam/ai-dial-ci/.github/workflows/generic_docker_pr.yml@main
    secrets: inherit

Release Workflow (Generic, Docker)

name: Release Workflow

on:
  push:
    branches: [development, release-*]

jobs:
  release:
    uses: epam/ai-dial-ci/.github/workflows/generic_docker_release.yml@main
    secrets: inherit

Validate PR title

name: "Validate PR title"

on:
  pull_request_target:
    types:
      - opened
      - edited
      - synchronize

jobs:
  pr-title-check:
    uses: epam/ai-dial-ci/.github/workflows/pr-title-check.yml@main
    secrets:
      ACTIONS_BOT_TOKEN: ${{ secrets.ACTIONS_BOT_TOKEN }}

Deploy review environment

name: Slash Command Dispatch
on:
  issue_comment:
    types: [created]
jobs:
  slashCommandDispatch:
    runs-on: ubuntu-latest
    steps:
      - name: Slash Command Dispatch
        id: scd
        uses: peter-evans/slash-command-dispatch@a28ee6cd74d5200f99e247ebc7b365c03ae0ef3c # v3.0.1
        with:
          token: ${{ secrets.ACTIONS_BOT_TOKEN }}
          reaction-token: ${{ secrets.ACTIONS_BOT_TOKEN }}
          config: >
            [
              {
                "command": "deploy-review",
                "permission": "write",
                "issue_type": "pull-request",
                "repository": "epam/ai-dial-ci",
                "static_args": [
                  "application=${{ github.event.repository.name }}"
                ]
              }
            ]

Cleanup for untagged images in GHCR

name: Cleanup untagged images

on:
  schedule:
    - cron: "0 0 * * *"

jobs:
  clean:
    name: Delete untagged images
    runs-on: ubuntu-latest
    permissions:
      packages: write
    steps:
      - uses: snok/container-retention-policy@4f22ef80902ad409ed55a99dc5133cc1250a0d03 # v3.0.0
        with:
          account: ${{ github.repository_owner }}
          token: ${{ secrets.GITHUB_TOKEN }}
          image-names: ${{ github.event.repository.name }}
          tag-selection: "untagged"
          cut-off: "1d"

Developer environment

This project contains reusable workflows under .github/workflows directory, and composite actions under actions directory.

The pre-commit hook configured by .pre-commit-config.yaml file forces yaml "code style".

To install and configure pre-commit hook run:

pip install pre-commit
pre-commit install

This will install and configure git pre-commit hook initiated automatically on git commit command and auto-fixing code style.

Check contribution guidelines for details.