hey #3
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
# This file is part of REANA. | |
# Copyright (C) 2020, 2022, 2024, 2025 CERN. | |
# | |
# REANA is free software; you can redistribute it and/or modify it | |
# under the terms of the MIT License; see LICENSE file for more details. | |
name: CI | |
on: [push, pull_request] | |
jobs: | |
lint-commitlint: | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
- name: Install commitlint | |
run: | | |
npm install conventional-changelog-conventionalcommits | |
npm install commitlint@latest | |
- name: Check commit message compliance of the recently pushed commit | |
if: github.event_name == 'push' | |
run: | | |
./run-tests.sh --check-commitlint HEAD~1 HEAD | |
- name: Check commit message compliance of the pull request | |
if: github.event_name == 'pull_request' | |
run: | | |
./run-tests.sh --check-commitlint ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} ${{ github.event.pull_request.number }} | |
lint-shellcheck: | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Run shell script static analysis | |
run: | | |
sudo apt-get install shellcheck | |
./run-tests.sh --check-shellcheck | |
docs-sphinx: | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.12 | |
- name: Install system dependencies | |
run: sudo apt-get update -y | |
- name: Install Python dependencies | |
run: | | |
pip install --upgrade pip | |
pip install -r docs/requirements.txt | |
- name: Run Sphinx documentation with doctests | |
run: ./run-tests.sh --check-sphinx | |
format-prettier: | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "18" | |
- name: Enable corepack and set yarn version | |
run: corepack enable && yarn set version 4.6.0 | |
- name: Install prettier | |
run: yarn add prettier | |
- name: Run prettier code formatter | |
run: ./run-tests.sh --check-prettier | |
lint-js: | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "18" | |
- name: Enable corepack and set yarn version | |
run: corepack enable && yarn set version 4.6.0 | |
- name: Install eslint | |
run: yarn add --inline --mode=update-lockfile eslint | |
- name: Run prettier code formatter | |
run: ./run-tests.sh --check-lint | |
js-tests: | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "18" | |
- name: Enable corepack and set yarn version | |
run: corepack enable && yarn set version 4.6.0 | |
- name: Install project dependencies | |
run: yarn | |
- name: Run JavaScript tests | |
run: ./run-tests.sh --check-js-tests | |
lint-dockerfile: | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Check Dockerfile compliance | |
run: ./run-tests.sh --check-dockerfile | |
docker-build: | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Build Docker image | |
run: ./run-tests.sh --check-docker-build | |
release-docker: | |
runs-on: ubuntu-24.04 | |
if: > | |
vars.RELEASE_DOCKER == 'true' && | |
github.event_name == 'push' && | |
startsWith(github.ref, 'refs/tags/') | |
needs: | |
- docs-sphinx | |
- format-prettier | |
- js-tests | |
- lint-dockerfile | |
- lint-js | |
- lint-shellcheck | |
steps: | |
- name: Release Docker image | |
uses: reanahub/reana-github-actions/release-docker@v1 | |
with: | |
username: ${{ secrets.DOCKER_USER }} | |
token: ${{ secrets.DOCKER_TOKEN }} | |
organisation: ${{ vars.DOCKER_ORGANISATION }} | |
registry: ${{ vars.DOCKER_REGISTRY }} | |
platform: | | |
linux/amd64 | |
linux/arm64 |