[DEVOPS-1591] Add CI configuration for building images #151
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: Build kernel images | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
jobs: | |
base-linting: | |
name: base-linting | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
- name: Lint Dockerfile, Shell scripts, YAML | |
uses: github/super-linter@v4 | |
env: | |
DEFAULT_BRANCH: master | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# Linters to enable | |
VALIDATE_BASH: true | |
VALIDATE_BASH_EXEC: true | |
VALIDATE_DOCKERFILE_HADOLINT: true | |
VALIDATE_YAML: true | |
run-hooks: | |
name: Run pre-commit hooks | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@v3 | |
- name: Set Up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.x | |
- name: Install pre-commit | |
run: | | |
pip install --upgrade pip | |
pip install --upgrade pre-commit | |
- name: Run pre-commit hooks ✅ | |
run: pre-commit run --all-files --hook-stage manual | |
build_python_kernels: | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: write | |
packages: write | |
strategy: | |
fail-fast: false | |
matrix: | |
version: ["3.9", "3.10"] # TODO: Add 3.11 | |
identifier: [base, base-gpu] | |
env: | |
# TODO: This should not be SHA, but branch / tag name | |
TAG: ${{ github.sha }} | |
VERSION: ${{ matrix.version }} | |
TARGET: python_${VERSION//./_} | |
BUILD_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
TIMESTAMP: $(date +%Y%m%d%H%M) | |
GITHUB_SHA: ${{ github.ref }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install Task | |
uses: arduino/setup-task@v1 | |
with: | |
repo-token: ${{ github.token }} | |
- run: | | |
task python:base:copy-files IDENTIFIER=${{ matrix.identifier }} NBL_PYTHON_VERSION=${{ matrix.version }} | |
task python:noteable:copy-files IDENTIFIER=${{ matrix.identifier }} NBL_PYTHON_VERSION=${{ matrix.version }} | |
- uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ github.token }} | |
- name: Set target | |
id: target | |
run: | | |
if [[ "${{ matrix.identifier }}" == "base" ]] | |
then | |
target="python_${VERSION//./_}" | |
else | |
target="python_${VERSION//./_}_gpu" | |
fi | |
echo "TARGET=${target}" >> "$GITHUB_OUTPUT" | |
- uses: docker/setup-buildx-action@v2 | |
- name: Build python kernels | |
uses: docker/bake-action@v3 | |
with: | |
push: true | |
targets: ${{ steps.target.outputs.TARGET }} | |
build_rlang_kernels: | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: write | |
packages: write | |
strategy: | |
matrix: | |
version: [4.3.0] | |
env: | |
# TODO: This should not be SHA, but branch / tag name | |
TAG: ${{ github.sha }} | |
VERSION: ${{ matrix.version }} | |
BUILD_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
TIMESTAMP: $(date +%Y%m%d%H%M) | |
GITHUB_SHA: ${{ github.ref }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install Task | |
uses: arduino/setup-task@v1 | |
with: | |
repo-token: ${{ github.token }} | |
- run: | | |
task r:base:copy-files NBL_LANGUAGE_VERSION=${{ matrix.version }} | |
- uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ github.token }} | |
- name: Set target | |
id: target | |
run: echo "TARGET=rlang_${VERSION//./_}" >> "$GITHUB_OUTPUT" | |
- uses: docker/setup-buildx-action@v2 | |
- name: Build kernels | |
uses: docker/bake-action@v3 | |
with: | |
push: false | |
targets: ${{ steps.target.outputs.TARGET }} |