Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci(github): update workflows #2121

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions .github/workflows/commitlint.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
name: Lint Commit Messages
name: commitlint

on: [pull_request]

permissions:
Expand All @@ -9,5 +10,7 @@ jobs:
commitlint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: wagoid/commitlint-github-action@v5
- name: Checkout GitHub repo
uses: actions/checkout@v4
- name: Lint Commit Messages
uses: wagoid/commitlint-github-action@v5
3 changes: 1 addition & 2 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
name: deploy

on:
push:
branches:
- "master"
- "hotfix/**"

jobs:
binary:
Expand All @@ -12,7 +12,6 @@ jobs:
max-parallel: 3
matrix:
os: [ windows-latest, ubuntu-20.04, ubuntu-22.04]

steps:
- name: 🐙 Checkout GitHub repo (+ download lfs dependencies)
uses: actions/checkout@v4
Expand Down
109 changes: 95 additions & 14 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,47 @@
name: main
on:
push:
branches:
- "**"

# If a workflow is skipped due to path filtering, branch filtering or a commit message,
# then checks associated with that workflow will remain in a "Pending" state.
# A pull request that requires those checks to be successful will be blocked from merging.
#
# So we use conditions to control job execution (`if: ...`) instead of `pull_request` event parameters.
# A job that is skipped will report its status as "Success".
# It will not prevent a pull request from merging, even if it is a required check.
on: [pull_request]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Running this workflow on pull requests will not be enough:
we still want all tests and sonarcloud to be run on main and dev branches when we merge into them.

Copy link
Member Author

@skamril skamril Sep 4, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A pull request must be open to merge into dev and master (branch protection rules), so on: [pull_request] is enough here.


jobs:

################################################################
## Back-end
################################################################

detect-backend-changes:
runs-on: ubuntu-20.04
outputs:
has-changes: ${{ steps.detect-changes.outputs.has-changes }}
steps:
- name: Checkout GitHub repo
uses: actions/checkout@v4
with:
fetch-depth: 0 # Ensure full history is fetched
- name: Check if backend files have changed
id: detect-changes
run: |
git fetch origin ${{ github.event.pull_request.base.ref }} --depth=1
if git diff --name-only origin/${{ github.event.pull_request.base.ref }}...HEAD | grep -Eq '^antarest/|^tests/|^resources/|^requirements.*\.txt$'; then
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The build will be affected by other configuration files (setup files, pyproject.toml, maybe alembic configuration too...): to be checked

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok thanks

echo "Backend files have changed"
echo "has-changes=true" >> $GITHUB_OUTPUT
else
echo "No backend files have changed"
echo "has-changes=false" >> $GITHUB_OUTPUT
fi

python-lint:
needs: detect-backend-changes
if: ${{ needs.detect-backend-changes.outputs.has-changes == 'true' }}
runs-on: ubuntu-20.04
steps:
- name: Checkout github repo (+ download lfs dependencies)
- name: Checkout GitHub repo (+ download lfs dependencies)
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
Expand All @@ -34,14 +67,15 @@ jobs:
mypy --install-types --non-interactive

python-test:
needs: detect-backend-changes
if: ${{ needs.detect-backend-changes.outputs.has-changes == 'true' }}
runs-on: ${{ matrix.os }}
strategy:
max-parallel: 9
matrix:
os: [windows-latest, ubuntu-20.04]

steps:
- name: Checkout github repo (+ download lfs dependencies)
- name: Checkout GitHub repo (+ download lfs dependencies)
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
Expand All @@ -61,10 +95,50 @@ jobs:
name: python-code-coverage-report
path: coverage.xml

python-tests:
needs: [detect-backend-changes, python-test]
if: ${{ needs.detect-backend-changes.outputs.has-changes == 'true' && always() }}
runs-on: ubuntu-20.04
steps:
- name: Results of Python tests by OS
run: exit 1
# See https://stackoverflow.com/a/67532120/4907315
if: >-
${{
contains(needs.*.result, 'failure')
|| contains(needs.*.result, 'cancelled') }}

################################################################
## Front-end
################################################################

detect-frontend-changes:
runs-on: ubuntu-20.04
outputs:
has-changes: ${{ steps.detect-changes.outputs.has-changes }}
steps:
- name: Checkout GitHub repo
uses: actions/checkout@v4
with:
fetch-depth: 0 # Ensure full history is fetched
- name: Check if front-end files have changed
id: detect-changes
run: |
git fetch origin ${{ github.event.pull_request.base.ref }} --depth=1
if git diff --name-only origin/${{ github.event.pull_request.base.ref }}...HEAD | grep -q '^webapp/'; then
echo "Front-end files have changed"
echo "has-changes=true" >> $GITHUB_OUTPUT
else
echo "No front-end files in have changed"
echo "has-changes=false" >> $GITHUB_OUTPUT
fi

npm-setup:
needs: detect-frontend-changes
if: ${{ needs.detect-frontend-changes.outputs.has-changes == 'true' }}
runs-on: ubuntu-20.04
steps:
- name: Checkout github repo
- name: Checkout GitHub repo
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
Expand All @@ -87,7 +161,7 @@ jobs:
needs: npm-setup
runs-on: ubuntu-20.04
steps:
- name: Checkout github repo
- name: Checkout GitHub repo
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
Expand All @@ -107,7 +181,7 @@ jobs:
needs: npm-setup
runs-on: ubuntu-20.04
steps:
- name: Checkout github repo
- name: Checkout GitHub repo
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
Expand All @@ -127,7 +201,7 @@ jobs:
needs: npm-setup
runs-on: ubuntu-20.04
steps:
- name: Checkout github repo
- name: Checkout GitHub repo
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
Expand All @@ -146,17 +220,24 @@ jobs:
NODE_OPTIONS: --max-old-space-size=8192
DISABLE_ESLINT_PLUGIN: true

################################################################
## SonarCloud
################################################################

sonarcloud:
runs-on: ubuntu-20.04
if: ${{ always() }}
needs: [python-test, npm-test]
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: Checkout GitHub repo
uses: actions/checkout@v4
- name: Download python coverage report
uses: actions/download-artifact@v4
with:
name: python-code-coverage-report
# Config in `sonar-project.properties` file
- name: SonarCloud Scan
uses: sonarsource/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
2 changes: 1 addition & 1 deletion .github/workflows/worker.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
name: worker

on:
push:
branches:
Expand All @@ -8,7 +9,6 @@ on:
jobs:
binary:
runs-on: windows-latest

steps:
- name: 🐙 Checkout GitHub repo (+ download lfs dependencies)
uses: actions/checkout@v4
Expand Down
Loading