Skip to content

chore(deps-dev): bump coverage from 7.6.9 to 7.6.10 #146

chore(deps-dev): bump coverage from 7.6.9 to 7.6.10

chore(deps-dev): bump coverage from 7.6.9 to 7.6.10 #146

Workflow file for this run

name: CI/CD
on:
pull_request:
branches: [ master ]
push:
branches: [ master ]
jobs:
commit-check:
name: Check Commit Messages
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0 # Needed to fetch all history for checking commits
- name: "Check commit messages match angular style"
run: |
! git log origin/master..HEAD --oneline --pretty=format:%s | \
grep -Ev '^(build|chore|ci|docs|feat|fix|perf|style|refactor|test):|^Merge '
lint:
name: Lint Checks
needs: commit-check
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Cache Poetry dependencies
uses: actions/cache@v4
with:
path: ~/.cache/poetry
key: ${{ runner.os }}-poetry-${{ hashFiles('poetry.lock') }}
restore-keys: |
${{ runner.os }}-poetry-
- name: Install dependencies
run: |
curl -sSL https://install.python-poetry.org | python3 -
poetry config virtualenvs.create false
poetry install --sync --no-interaction
- name: Run lint
run: make lint
- name: Generate Pylint Badge
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
run: |
SCORE=$(pylint portfolio_analytics --output-format=text **/*.py | sed -n 's/^Your code has been rated at \([-0-9.]*\)\/.*/\1/p')
echo "PYLINT_SCORE=$SCORE" >> $GITHUB_ENV
- name: Create Pylint Badge
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
uses: schneegans/[email protected]
with:
auth: ${{ secrets.GIST_SECRET }}
gistID: b149841cbef1088a8bf7671efee16734
filename: pylint.txt
label: Pylint
message: ${{ env.PYLINT_SCORE }}
color: ${{ env.PYLINT_SCORE >= 9 && 'brightgreen' || env.PYLINT_SCORE >= 7 && 'yellow' || 'red' }}
test:
name: Run Tests
needs: commit-check
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Cache Poetry dependencies
uses: actions/cache@v4
with:
path: ~/.cache/poetry
key: ${{ runner.os }}-poetry-${{ hashFiles('poetry.lock') }}
restore-keys: |
${{ runner.os }}-poetry-
- name: Install dependencies
run: |
curl -sSL https://install.python-poetry.org | python3 -
poetry config virtualenvs.create false
poetry install --sync --no-interaction
- name: Run tests
run: make test
- name: Upload coverage reports
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./coverage.xml
fail_ci_if_error: false
build:
name: Build Test
needs: commit-check
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Cache Poetry dependencies
uses: actions/cache@v4
with:
path: ~/.cache/poetry
key: ${{ runner.os }}-poetry-${{ hashFiles('poetry.lock') }}
restore-keys: |
${{ runner.os }}-poetry-
- name: Install dependencies
run: |
curl -sSL https://install.python-poetry.org | python3 -
poetry config virtualenvs.create false
poetry install --sync --no-interaction
- name: Set up Docker
uses: docker/setup-buildx-action@v3
- name: Run build
run: make build
integration-tests:
name: ${{ matrix.component }}
needs: [lint, test, build]
runs-on: ubuntu-latest
strategy:
matrix:
component: [api, dashboard]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Docker
uses: docker/setup-buildx-action@v3
- name: Run integration tests
run: make test-${{ matrix.component }}
release:
name: Release
needs: [integration-tests]
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Configure Git
run: |
git config --global user.name "GitHub Actions"
git config --global user.email "[email protected]"
- name: Semantic Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
pip install python-semantic-release==7.34.6
git pull --rebase
python -m semantic_release publish
publish:
name: Publish Docker Images
needs: [release]
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Docker
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Get latest git tag
run: |
git fetch --tags
git pull --tags
TAG=$(git tag --sort=-v:refname | head -n 1)
echo "RELEASE_VERSION=${TAG}" >> $GITHUB_ENV
- name: Build and push application images
run: |
# Build images
docker compose build
# Define services and tag/push images
for service in api dashboard data; do
IMAGE="ghcr.io/gbourniq/portfolio_analytics/$service"
docker tag $IMAGE $IMAGE:${{ env.RELEASE_VERSION }}
docker tag $IMAGE $IMAGE:latest
docker push $IMAGE:${{ env.RELEASE_VERSION }}
docker push $IMAGE:latest
done