Build multi-platform docker images on release #2331
Workflow file for this run
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: Continuous Integration | |
on: | |
push: | |
branches: | |
- main | |
tags: | |
- "*" | |
pull_request: | |
env: | |
IS_TAG_BUILD: ${{ startsWith(github.event.ref, 'refs/tags') }} | |
DEV_REPOSITORY: 329710836760.dkr.ecr.us-east-1.amazonaws.com/rasa-sdk-dev | |
AWS_REGION: us-east-1 | |
# SECRETS | |
# - PYPI_TOKEN: publishing token for amn41 account, needs to be maintainer of | |
# RasaHQ/rasa-sdk on pypi (account credentials in 1password) | |
permissions: | |
id-token: write # This is required for requesting the JWT | |
contents: read # This is required for actions/checkout | |
jobs: | |
quality: | |
name: Code Quality | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout git repository 🕝 | |
uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 | |
- name: Set up Python 3.10 🐍 | |
uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 | |
with: | |
python-version: '3.10' | |
- name: Read Poetry Version 🔢 | |
run: | | |
echo "POETRY_VERSION=$(scripts/poetry-version.sh)" >> $GITHUB_ENV | |
shell: bash | |
- name: Install poetry 🦄 | |
uses: Gr1N/setup-poetry@15821dc8a61bc630db542ae4baf6a7c19a994844 | |
with: | |
poetry-version: ${{ env.POETRY_VERSION }} | |
- name: Load Poetry Cached Libraries ⬇ | |
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 | |
with: | |
path: ~/.cache/pypoetry/virtualenvs | |
key: ${{ runner.os }}-poetry-3.10-${{ hashFiles('**/poetry.lock') }} | |
restore-keys: ${{ runner.os }}-poetry- | |
- name: Checkout target branch to be able to diff | |
if: github.event_name == 'pull_request' | |
run: | | |
git fetch origin "${{ github.base_ref }}" | |
echo "DOCSTRING_DIFF_BRANCH=origin/${{ github.base_ref }}" >> $GITHUB_ENV | |
# Fetch entire history for current branch so that `make lint-docstrings` | |
# can calculate the proper diff between the branches | |
git fetch --unshallow origin "${{ github.ref }}" | |
- name: Install Dependencies 📦 | |
run: make install | |
- name: Listing Dependencies 📦 | |
run: poetry show | |
- name: Lint Code 🎎 | |
run: | | |
# If it's not a pull request, $DOCSTRING_DIFF_BRANCH is unset. | |
# This will result in an empty diff, which effictively means that | |
# make lint-docstrings will be skipped for other events than `pull_request` | |
make lint BRANCH=$DOCSTRING_DIFF_BRANCH | |
- name: Check Types 📚 | |
run: make types | |
test: | |
name: Run Tests | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
python-version: [3.8, 3.9, '3.10'] | |
steps: | |
- name: Checkout git repository 🕝 | |
uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 | |
- name: Set up Python ${{ matrix.python-version }} 🐍 | |
uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Read Poetry Version 🔢 | |
run: | | |
echo "POETRY_VERSION=$(scripts/poetry-version.sh)" >> $GITHUB_ENV | |
shell: bash | |
- name: Install poetry 🦄 | |
uses: Gr1N/setup-poetry@15821dc8a61bc630db542ae4baf6a7c19a994844 | |
with: | |
poetry-version: ${{ env.POETRY_VERSION }} | |
- name: Load Poetry Cached Libraries ⬇ | |
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 | |
with: | |
path: ~/.cache/pypoetry/virtualenvs | |
key: ${{ runner.os }}-poetry-${{ matrix.python-version }}-${{ hashFiles('**/poetry.lock') }} | |
restore-keys: ${{ runner.os }}-poetry- | |
- name: Install Dependencies 📦 | |
run: make install | |
- name: Test Code 🔍 | |
run: make test | |
- name: Send Coverage Report 📊 | |
if: matrix.python-version == '3.10' | |
env: | |
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
COVERALLS_SERVICE_NAME: github | |
run: poetry run coveralls | |
docker_linter: | |
name: Lint Dockerfile | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 | |
- name: Lint Dockerfile | |
uses: brpaz/hadolint-action@1623ba61710b974b55ba455930e6f2c8ef919778 | |
with: | |
dockerfile: "Dockerfile" | |
rasa-sdk-dev-docker-image: | |
name: Build dev Docker image | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Check out code | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
- name: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@8c3f20df09ac63af7b3ae3d7c91f105f857d8497 # v3.0.1 | |
with: | |
role-to-assume: ${{ secrets.AWS_ASSUME_ROLE_SESSION_TOKEN }} | |
aws-region: ${{ env.AWS_REGION }} | |
- name: Login to Amazon ECR | |
id: login-ecr | |
uses: aws-actions/amazon-ecr-login@062b18b96a7aff071d4dc91bc00c4c1a7945b076 # v2.0.1 | |
with: | |
mask-password: "true" | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@0d103c3126aa41d772a8362f6aa67afac040f80c # v3.1.0 | |
- name: Build and push docker image to AWS | |
run: | | |
IMAGE_NAME=${{ env.DEV_REPOSITORY }} \ | |
IMAGE_TAG=pr${{ github.event.number }} \ | |
make build-and-push-multi-platform-docker |