mirror of
https://github.com/fhswf/aki_prj23_transparenzregister.git
synced 2025-04-24 21:52:34 +02:00
Renamed some artifacts and other minor tweaks to the test & build workfow
205 lines
6.1 KiB
YAML
205 lines
6.1 KiB
YAML
name: Test & Build
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
types: [reopened, opened, synchronize]
|
|
release:
|
|
types:
|
|
- created
|
|
|
|
jobs:
|
|
test:
|
|
name: Pytest
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Install poetry
|
|
run: pipx install poetry
|
|
- name: Set up python
|
|
id: setup-python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.11'
|
|
cache: poetry
|
|
- run: poetry install --without develop,doc,lint --all-extras
|
|
- name: Run test suite
|
|
run: |
|
|
poetry run pytest --junit-xml=unit-test-results.xml --cov-report "xml:coverage.xml" --cov=src --disable-warnings tests/
|
|
- name: Archive code coverage results
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: code-coverage-report
|
|
path: |
|
|
coverage.xml
|
|
.coverage
|
|
if-no-files-found: error
|
|
- name: Archive unit test results
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: test-report
|
|
path: |
|
|
unit-test-results.xml
|
|
if-no-files-found: error
|
|
|
|
coverage_pull_request:
|
|
name: Coverage Report on pull request
|
|
if: ${{ github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' && github.actor != 'dependabot-preview[bot]'}}
|
|
runs-on: ubuntu-latest
|
|
needs: test
|
|
steps:
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
name: code-coverage-report
|
|
- name: Get Cover
|
|
uses: orgoro/coverage@v3.1
|
|
with:
|
|
coverageFile: coverage.xml
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
thresholdAll: 0.7
|
|
thresholdNew: 0.7
|
|
thresholdModified: 0.7
|
|
|
|
coverage_report:
|
|
name: Coverage HTML Report
|
|
if: ${{ github.event_name == 'push' }}
|
|
runs-on: ubuntu-latest
|
|
needs: test
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Install poetry
|
|
run: pipx install poetry
|
|
- name: Set up python
|
|
id: setup-python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.11'
|
|
cache: poetry
|
|
- run: poetry install --only test --all-extras
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
name: code-coverage-report
|
|
- name: Make Coverage Report
|
|
run: |
|
|
poetry run coverage html
|
|
- name: Archive builds
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: Coverage Report HTML
|
|
path: htmlcov/
|
|
if-no-files-found: error
|
|
|
|
build:
|
|
name: Wheel-Build
|
|
if: ${{ github.event_name == 'push'}}
|
|
runs-on: ubuntu-latest
|
|
needs: test
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Install poetry
|
|
run: pipx install poetry
|
|
- name: Set up python
|
|
id: setup-python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.11'
|
|
cache: poetry
|
|
- run: |
|
|
poetry build
|
|
- name: Archive builds
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: python-build-artifacts
|
|
path: dist/
|
|
if-no-files-found: error
|
|
|
|
docker-build:
|
|
name: Docker Build
|
|
if: ${{ github.event_name == 'push' && github.actor != 'dependabot[bot]' && github.actor != 'dependabot-preview[bot]'}}
|
|
runs-on: ubuntu-latest
|
|
needs: [build]
|
|
steps:
|
|
- name: Check out repository code
|
|
uses: actions/checkout@v4
|
|
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
name: python-build-artifacts
|
|
path: dist
|
|
|
|
- id: tag_or_main
|
|
run: |
|
|
if [ "$GITHUB_EVENT_NAME" = "release" ]; then
|
|
echo "TAG_OR_MAIN=$(echo $GITHUB_REF | awk -F / '{print $NF}')" >> $GITHUB_ENV
|
|
echo "LATEST=latest" >> $GITHUB_ENV
|
|
elif [ "$GITHUB_EVENT_NAME" = "push" ] && [ "$GITHUB_REF" = "refs/heads/main" ]; then
|
|
echo "TAG_OR_MAIN=main" >> $GITHUB_ENV
|
|
echo "LATEST=main" >> $GITHUB_ENV
|
|
else
|
|
echo "TAG_OR_MAIN=experimental" >> $GITHUB_ENV
|
|
echo "LATEST=experimental" >> $GITHUB_ENV
|
|
fi
|
|
|
|
- run: |
|
|
echo "Print ${{ env.TAG_OR_MAIN }}"
|
|
|
|
- name: Build All prior to push
|
|
run: |
|
|
docker build --target ingest --build-arg GIT_HASH=${{github.sha}} .
|
|
docker build --target data-transformation --build-arg GIT_HASH=${{github.sha}} .
|
|
docker build --target web-server --build-arg GIT_HASH=${{github.sha}} .
|
|
docker image ls
|
|
|
|
- name: Exit workflow on pull request
|
|
if: ${{ github.event_name == 'pull_request' }}
|
|
run: exit 0
|
|
|
|
- name: Exit workflow on not main branch
|
|
if: ${{ github.ref != 'refs/heads/main' }}
|
|
run: exit 0
|
|
|
|
- name: Login to GitHub Container Registry
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push ingest
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
build-args: |
|
|
"GIT_HASH=${{github.sha}}"
|
|
push: ${{ github.ref == 'refs/heads/main'}}
|
|
tags: |
|
|
ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}/ingest:${{ env.TAG_OR_MAIN }}
|
|
ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}/ingest:${{ env.LATEST }}
|
|
target: ingest
|
|
context: .
|
|
|
|
- name: Build and push data-transformation
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
build-args: |
|
|
"GIT_HASH=${{github.sha}}"
|
|
push: ${{ github.ref == 'refs/heads/main'}}
|
|
tags: |
|
|
ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}/data-transformation:${{ env.TAG_OR_MAIN }}
|
|
ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}/data-transformation:${{ env.LATEST }}
|
|
target: data-transformation
|
|
context: .
|
|
|
|
- name: Build and push web-server
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
build-args: |
|
|
"GIT_HASH=${{github.sha}}"
|
|
push: ${{ github.ref == 'refs/heads/main'}}
|
|
tags: |
|
|
ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}/web-server:${{ env.TAG_OR_MAIN }}
|
|
ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}/web-server:${{ env.LATEST }}
|
|
target: web-server
|
|
context: .
|