refactor: centralize workflow info/badges in list, details pages (#394) #82
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 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-20.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
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.head.sha }}~${{ github.event.pull_request.commits }} ${{ github.event.pull_request.head.sha }} ${{ github.event.pull_request.number }} | |
lint-shellcheck: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Run shell script static analysis | |
run: | | |
sudo apt-get install shellcheck | |
./run-tests.sh --check-shellcheck | |
docs-sphinx: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- 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-20.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: "18" | |
- name: Install project dependencies | |
run: yarn global add prettier | |
- name: Run prettier code formatter | |
run: ./run-tests.sh --check-prettier | |
lint-js: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: "18" | |
- name: Install project dependencies | |
run: yarn global add eslint | |
- name: Run prettier code formatter | |
run: ./run-tests.sh --check-lint | |
js-tests: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: "18" | |
- name: Install project dependencies | |
run: yarn | |
- name: Run JavaScript tests | |
run: ./run-tests.sh --check-js-tests | |
lint-dockerfile: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Check Dockerfile compliance | |
run: ./run-tests.sh --check-dockerfile | |
docker-build: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Build Docker image | |
run: ./run-tests.sh --check-docker-build | |
release-docker: | |
runs-on: ubuntu-20.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 |