This repository has been archived by the owner on Sep 2, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 22
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
adds Dockerfile and build workflow for CSV provider
- Loading branch information
Showing
5 changed files
with
206 additions
and
19 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,120 @@ | ||
# /******************************************************************************** | ||
# * Copyright (c) 2022,2023 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: kuksa_csv_provider | ||
|
||
on: | ||
push: | ||
branches: [ main ] | ||
pull_request: | ||
paths: | ||
- ".github/workflows/kuksa_csv_provider.yml" | ||
- "csv_provider/**" | ||
workflow_call: | ||
workflow_dispatch: | ||
|
||
jobs: | ||
checkrights: | ||
uses: ./.github/workflows/check_push_rights.yml | ||
secrets: inherit | ||
|
||
build-can-feeder-image: | ||
name: "Build csv provider image" | ||
runs-on: self-hosted | ||
needs: checkrights | ||
|
||
steps: | ||
- name: Checkout Repository | ||
uses: actions/checkout@v3 | ||
|
||
- name: Docker meta | ||
id: meta | ||
uses: docker/metadata-action@v4 | ||
with: | ||
# list of Docker images to use as base name for tags | ||
images: | | ||
ghcr.io/eclipse/kuksa.val.feeders/csv-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}} | ||
# only needed for runners without buildx setup, will be slow | ||
#- name: Set up QEMU | ||
# uses: docker/setup-qemu-action@v2 | ||
|
||
#- name: Set up Docker Buildx | ||
# uses: docker/setup-buildx-action@v2 | ||
|
||
- name: Log in to the Container registry | ||
if: needs.checkrights.outputs.have_secrets == 'true' | ||
uses: docker/login-action@v2 | ||
with: | ||
registry: ghcr.io | ||
username: ${{ github.repository_owner }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Build CSV provider container container and push to ghcr.io (and ttl.sh) | ||
id: ghcr-build | ||
if: ${{ needs.checkrights.outputs.have_secrets == 'true' && github.event_name != 'pull_request' }} | ||
uses: docker/build-push-action@v3 | ||
with: | ||
platforms: | | ||
linux/amd64 | ||
linux/arm64 | ||
file: ./csv_provider/Dockerfile | ||
context: ./csv_provider/ | ||
push: true | ||
tags: | | ||
${{ steps.meta.outputs.tags }} | ||
ttl.sh/kuksa.val/kuksa-csvprovider-${{github.sha}} | ||
labels: ${{ steps.meta.outputs.labels }} | ||
|
||
- name: Build ephemeral CSV provider container and push to ttl.sh | ||
if: ${{ needs.checkrights.outputs.have_secrets == 'false' || github.event_name == 'pull_request' }} | ||
id: tmp-build | ||
uses: docker/build-push-action@v3 | ||
with: | ||
platforms: | | ||
linux/amd64 | ||
linux/arm64 | ||
file: ./csv_provider/Dockerfile | ||
context: ./csv_provider/ | ||
push: true | ||
tags: "ttl.sh/kuksa.val/kuksa-csvprovider-${{github.sha}}" | ||
labels: ${{ steps.meta.outputs.labels }} | ||
|
||
- name: Posting message | ||
uses: ./.github/actions/post-container-location | ||
with: | ||
image: ttl.sh/kuksa.val/kuksa-csvprovider-${{github.sha}} | ||
|
||
|
||
run-csv-provider-tests: | ||
name: "Run csv provider linter" | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout Repository | ||
uses: actions/checkout@v3 | ||
|
||
- name: Run pylint (but accept errors for now) | ||
run: | | ||
cd csv-provider | ||
# First just show, never fail | ||
pylint --exit-zero provider.py | ||
# Fail on errors and above | ||
pylint -E provider.py |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
# /******************************************************************************** | ||
# * Copyright (c) 2023 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 | ||
# ********************************************************************************/ | ||
|
||
|
||
# Build stage, to create a Virtual Environent | ||
FROM --platform=$TARGETPLATFORM python:3.10-alpine as builder | ||
|
||
ARG TARGETPLATFORM | ||
ARG BUILDPLATFORM | ||
|
||
RUN echo "-- Running on $BUILDPLATFORM, building for $TARGETPLATFORM" | ||
|
||
RUN apk update && apk add alpine-sdk linux-headers | ||
|
||
COPY . / | ||
|
||
RUN python3 -m venv /opt/venv | ||
|
||
ENV PATH="/opt/venv/bin:$PATH" | ||
|
||
RUN /opt/venv/bin/python3 -m pip install --upgrade pip \ | ||
&& pip3 install --no-cache-dir -r requirements.txt | ||
|
||
|
||
RUN pip3 install wheel scons && pip3 install pyinstaller | ||
|
||
# By default we use certificates and tokens from kuksa_certificates, so they must be included | ||
RUN pyinstaller --collect-data kuksa_certificates --clean -F -s provider.py | ||
# --debug=imports | ||
|
||
WORKDIR /dist | ||
|
||
WORKDIR /data | ||
COPY ./signals.csv ./signals.csv | ||
|
||
# Runner stage, to copy in the virtual environment and the app | ||
FROM alpine:3 | ||
|
||
|
||
WORKDIR /dist | ||
|
||
COPY --from=builder /dist/* . | ||
COPY --from=builder /data/ ./ | ||
|
||
ENV PATH="/dist:$PATH" | ||
|
||
# useful dumps about feeding values | ||
ENV LOG_LEVEL="info" | ||
|
||
ENV PYTHONUNBUFFERED=yes | ||
|
||
ENTRYPOINT ["./provider"] |
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 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 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
kuksa-client==0.3.x | ||
kuksa-client==0.3.1 |