mock-provider #5
Workflow file for this run
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
# /******************************************************************************** | |
# * Copyright (c) 2022 Contributors to the Eclipse Foundation | |
# * | |
# * See the NOTICE file(s) distributed with this work for additional | |
# * information regarding copyright ownership. | |
# * | |
# * This program and the accompanying materials are made available under the | |
# * terms of the Apache License 2.0 which is available at | |
# * http://www.apache.org/licenses/LICENSE-2.0 | |
# * | |
# * SPDX-License-Identifier: Apache-2.0 | |
# ********************************************************************************/ | |
name: mock-provider | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
workflow_call: | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.ref }}-${{ github.workflow }} | |
cancel-in-progress: true | |
# Needed as default_workflow_permissions is "read" | |
permissions: | |
packages: write | |
jobs: | |
check_ghcr_push: | |
uses: eclipse-kuksa/kuksa-actions/.github/workflows/check_ghcr_push.yml@2 | |
secrets: inherit | |
get_tag: | |
runs-on: ubuntu-latest | |
outputs: | |
tag: ${{ steps.eval_tag.outputs.tag }} | |
steps: | |
- name: Get tag from workflow / workflow dispatch or fallback to main | |
id: eval_tag | |
run: | | |
if [ -n "${{ github.event.inputs.tag }}" ]; then | |
IMAGE_TAG="${{ github.event.inputs.tag }}" | |
elif [ -n "${{ inputs.tag }}" ]; then | |
IMAGE_TAG="${{ inputs.tag }}" | |
else | |
### if not called from dispatch or call, it must be merging to main | |
IMAGE_TAG="main" | |
fi | |
echo "### Using image tag: $IMAGE_TAG" | |
echo "tag=${IMAGE_TAG}" >> $GITHUB_OUTPUT | |
build-container: | |
runs-on: ubuntu-latest | |
needs: check_ghcr_push | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
# list of Docker images to use as base name for tags | |
images: | | |
ghcr.io/eclipse-kuksa/kuksa-mock-provider/mock-provider | |
# generate Docker tags based on the following events/attributes | |
tags: | | |
type=ref,event=branch | |
type=ref,event=pr | |
type=semver,pattern={{version}} | |
type=semver,pattern={{major}}.{{minor}} | |
type=semver,pattern={{major}} | |
- name: Log in to the Container registry | |
if: needs.check_ghcr_push.outputs.push == 'true' | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Build container and push to ghcr.io (and ttl.sh) | |
id: ghcr-build | |
if: needs.check_ghcr_push.outputs.push == 'true' | |
uses: docker/build-push-action@v5 | |
with: | |
platforms: | | |
linux/amd64 | |
linux/arm64 | |
file: ./Dockerfile | |
context: . | |
push: true | |
tags: | | |
${{ steps.meta.outputs.tags }} | |
ttl.sh/eclipse-kuksa/kuksa-mock-provider/mock-provider-${{github.sha}} | |
labels: ${{ steps.meta.outputs.labels }} | |
- name: Build container and push to ttl.sh | |
if: needs.check_ghcr_push.outputs.push == 'false' | |
id: tmp-build | |
uses: docker/build-push-action@v5 | |
with: | |
platforms: | | |
linux/amd64 | |
linux/arm64 | |
file: ./Dockerfile | |
context: . | |
push: true | |
tags: "ttl.sh/eclipse-kuksa/kuksa-mock-provider/mock-provider-${{github.sha}}" | |
labels: ${{ steps.meta.outputs.labels }} | |
- name: Posting message | |
uses: eclipse-kuksa/kuksa-actions/post-container-location@2 | |
with: | |
image: ttl.sh/eclipse-kuksa/kuksa-mock-provider/mock-provider-${{github.sha}} | |
ensure-docs-up2date: | |
name: Ensure docs are up2date | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- name: (Re-) Build Pydoc Markdown | |
shell: bash | |
working-directory: . | |
run: | | |
./update-api-docs.sh | |
- name: Has Changes | |
id: changes | |
run: | | |
if [[ -z "$(git status --porcelain .)" ]]; | |
then | |
echo "changed=0" >> $GITHUB_OUTPUT | |
else | |
echo "changed=1" >> $GITHUB_OUTPUT | |
fi | |
shell: bash | |
- name: Fail if there are changes | |
if: steps.changes.outputs.changed == 1 | |
run: exit 1 | |
run-tests: | |
name: Run tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- name: Install dependencies | |
shell: bash | |
working-directory: . | |
run: | | |
python3 -m pip install --pre -r ./requirements.txt | |
python3 -m pip install -r ./requirements-dev.txt | |
- name: Run tests | |
shell: bash | |
working-directory: . | |
run: | | |
python3 -m pytest |