Skip to content

Attempt to fix CI on local runners. #231

Attempt to fix CI on local runners.

Attempt to fix CI on local runners. #231

Workflow file for this run

---
name: CI
on: # yamllint disable-line rule:truthy
workflow_dispatch:
push:
branches: [main, devel]
tags:
- 'v*.*.*'
pull_request:
branches: [main, devel]
env:
REGISTRY: ghcr.io
IMAGE_BASE_NAME: ${{ github.repository_owner }}/dse
PACKAGE_VERSION: 0.0.2
package_name: ModelC
build_dir: dse/modelc/build
CCACHE_SECONDARY_STORAGE: ${{ secrets.CCACHE_SECONDARY_STORAGE }}
jobs:
build:
runs-on: [ubuntu-latest]
strategy:
matrix:
package_arch:
- linux-amd64
- linux-x86
- linux-i386
- windows-x64
- windows-x86
container:
image: ghcr.io/boschglobal/dse-gcc-builder:main
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build package metadata
id: package_meta
uses: docker/metadata-action@v5
with:
images: dse/modelc
tags: |
type=ref,event=branch
type=semver,pattern={{version}}
- name: Get package version
if: startsWith(github.ref, 'refs/tags/')
id: package
run: |
echo "PACKAGE_VERSION=${{ fromJSON(steps.package_meta.outputs.json).labels['org.opencontainers.image.version'] }}" >> $GITHUB_ENV
- name: Build
env:
PACKAGE_ARCH: ${{ matrix.package_arch }}
run: |
make
- name: Test
if: ${{ matrix.package_arch == 'linux-amd64' }}
env:
PACKAGE_ARCH: ${{ matrix.package_arch }}
run: |
make test_cmocka
- name: Stats
run: |
ccache -s -v || true
- name: Package
env:
PACKAGE_ARCH: ${{ matrix.package_arch }}
run: |
make package
tar -czf sandbox_out.tar.gz -C . ${{ env.build_dir }}/_out
- uses: actions/upload-artifact@v3
with:
name: ${{ env.package_name }}-${{ matrix.package_arch }}-package
path: |
${{ env.build_dir }}/_dist/${{ env.package_name }}-${{ env.PACKAGE_VERSION }}-${{ matrix.package_arch }}.tar.gz
${{ env.build_dir }}/_dist/${{ env.package_name }}-${{ env.PACKAGE_VERSION }}-${{ matrix.package_arch }}.zip
retention-days: 1
- uses: actions/upload-artifact@v3
with:
name: ${{ env.package_name }}-${{ matrix.package_arch }}-sandbox
path: |
sandbox_out.tar.gz
retention-days: 1
test_e2e:
runs-on: [ubuntu-latest]
needs: [build, runtimes, tools]
container:
image: ghcr.io/boschglobal/dse-testscript:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: image_simer
path: /tmp
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: image_testscript
path: /tmp
- name: Load images
run: |
docker load --input /tmp/simer.tar
docker load --input /tmp/testscript.tar
docker image ls -a
- uses: actions/download-artifact@v3
with:
name: ${{ env.package_name }}-linux-amd64-sandbox
path: .
- name: Sandbox
run: |
tar xzf sandbox_out.tar.gz
find ${{ env.build_dir }}/_out -type f -name '*' -exec ls -sh --color=auto {} \;
- name: Set environment
run: |
echo "HOST_DOCKER_WORKSPACE=${{ github.workspace }}" >> $GITHUB_ENV
- name: Test
run: |
export HOST_DOCKER_WORKSPACE=${{ env.HOST_DOCKER_WORKSPACE }}
make test_e2e
publish:
if: startsWith(github.ref, 'refs/tags/')
runs-on: [ubuntu-latest]
needs: [build, test_e2e]
strategy:
matrix:
package_arch:
- linux-amd64
- linux-x86
- linux-i386
- windows-x64
- windows-x86
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Build package metadata
id: package_meta
uses: docker/metadata-action@v5
with:
images: dse/modelc
tags: |
type=ref,event=branch
type=semver,pattern={{version}}
- name: Get package version
if: startsWith(github.ref, 'refs/tags/')
id: package
run: |
echo "PACKAGE_VERSION=${{ fromJSON(steps.package_meta.outputs.json).labels['org.opencontainers.image.version'] }}" >> $GITHUB_ENV
- uses: actions/download-artifact@v3
with:
name: ${{ env.package_name }}-${{ matrix.package_arch }}-package
path: ${{ env.build_dir }}/_dist
- name: Publish
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
${{ env.build_dir }}/_dist/${{ env.package_name }}-${{ env.PACKAGE_VERSION }}-${{ matrix.package_arch }}.zip
docker_push:
if: startsWith(github.ref, 'refs/tags/')
runs-on: [ubuntu-latest]
needs: [runtimes, tools, test_e2e]
strategy:
matrix:
container:
- simer
- testscript
steps:
- name: Log in to the Container registry
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: image_${{ matrix.container }}
path: /tmp
- name: Load and Push Image
run: |
docker load --input /tmp/${{ matrix.container }}.tar
docker image ls -a
docker image push --all-tags ${{ env.REGISTRY }}/${{ env.IMAGE_BASE_NAME }}-${{ matrix.container }}
runtimes:
if: startsWith(github.ref, 'refs/tags/')
runs-on: [ubuntu-latest]
needs: [build]
strategy:
matrix:
container:
- testscript
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Log in to the Container registry
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_BASE_NAME }}-${{ matrix.container }}
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
- name: Version
if: startsWith(github.ref, 'refs/tags/')
id: package
run: |
echo "PACKAGE_VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}" >> $GITHUB_ENV
- name: Build Image
uses: docker/build-push-action@v4
with:
push: false
context: .
file: ./extra/docker/${{ matrix.container }}/Dockerfile
build-args: |
PACKAGE_VERSION=${{ env.PACKAGE_VERSION }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
outputs: type=docker,dest=/tmp/${{ matrix.container }}.tar
- name: Upload image artifact
uses: actions/upload-artifact@v3
with:
name: image_${{ matrix.container }}
path: /tmp/${{ matrix.container }}.tar
retention-days: 1
tools:
if: startsWith(github.ref, 'refs/tags/')
runs-on: [ubuntu-latest]
needs: [build]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Log in to the Container registry
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_BASE_NAME }}-simer
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
- name: Version
if: startsWith(github.ref, 'refs/tags/')
id: package
run: |
echo "PACKAGE_VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}" >> $GITHUB_ENV
- uses: actions/download-artifact@v3
with:
name: ${{ env.package_name }}-linux-amd64-sandbox
path: sandbox/ModelC-linux-amd64-sandbox
- uses: actions/download-artifact@v3
with:
name: ${{ env.package_name }}-linux-x86-sandbox
path: sandbox/ModelC-linux-x86-sandbox
- uses: actions/download-artifact@v3
with:
name: ${{ env.package_name }}-linux-i386-sandbox
path: sandbox/ModelC-linux-i386-sandbox
- name: Sandbox
run: |
(cd sandbox/${{ env.package_name }}-linux-amd64-sandbox; tar xzf sandbox_out.tar.gz)
(cd sandbox/${{ env.package_name }}-linux-x86-sandbox; tar xzf sandbox_out.tar.gz)
(cd sandbox/${{ env.package_name }}-linux-i386-sandbox; tar xzf sandbox_out.tar.gz)
mkdir -p extra/tools/simer/build/stage/bin
mkdir -p extra/tools/simer/build/stage/lib
mkdir -p extra/tools/simer/build/stage/lib32
cp sandbox/${{ env.package_name }}-linux-amd64-sandbox/${{ env.build_dir }}/_out/bin/simbus extra/tools/simer/build/stage/bin/simbus
cp sandbox/${{ env.package_name }}-linux-amd64-sandbox/${{ env.build_dir }}/_out/bin/modelc extra/tools/simer/build/stage/bin/modelc
cp sandbox/${{ env.package_name }}-linux-amd64-sandbox/${{ env.build_dir }}/_out/lib/mcl_model.so extra/tools/simer/build/stage/lib/mcl_model.so
cp sandbox/${{ env.package_name }}-linux-x86-sandbox/${{ env.build_dir }}/_out/bin/modelc extra/tools/simer/build/stage/bin/modelc32
cp sandbox/${{ env.package_name }}-linux-x86-sandbox/${{ env.build_dir }}/_out/bin/modelc extra/tools/simer/build/stage/bin/modelc32_x86
cp sandbox/${{ env.package_name }}-linux-x86-sandbox/${{ env.build_dir }}/_out/lib/mcl_model.so extra/tools/simer/build/stage/lib32/mcl_model.so
cp sandbox/${{ env.package_name }}-linux-x86-sandbox/${{ env.build_dir }}/_out/lib/mcl_model.so extra/tools/simer/build/stage/lib32/mcl_model_x86.so
cp sandbox/${{ env.package_name }}-linux-i386-sandbox/${{ env.build_dir }}/_out/bin/modelc extra/tools/simer/build/stage/bin/modelc32_i386
cp sandbox/${{ env.package_name }}-linux-i386-sandbox/${{ env.build_dir }}/_out/lib/mcl_model.so extra/tools/simer/build/stage/lib32/mcl_model_i386.so
cp -r sandbox/${{ env.package_name }}-linux-amd64-sandbox/${{ env.build_dir }}/_out/licenses -t extra/tools/simer/build/stage
ls -R extra/tools/simer/build/stage
- name: Build and push
uses: docker/build-push-action@v4
with:
push: false
context: extra/tools/simer
file: ./extra/tools/simer/build/package/Dockerfile
build-args: |
PACKAGE_VERSION=${{ env.PACKAGE_VERSION }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
outputs: type=docker,dest=/tmp/simer.tar
- name: Upload image artifact
uses: actions/upload-artifact@v3
with:
name: image_simer
path: /tmp/simer.tar
retention-days: 1
containers:
if: startsWith(github.ref, 'refs/tags/')
runs-on: [ubuntu-latest]
needs: [build, test_e2e]
strategy:
matrix:
name: [modelc]
arch: [linux-amd64]
include:
- name: modelc
arch: linux-amd64
- name: modelc-x86
arch: linux-x86
- name: simbus-sa
arch: linux-amd64
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Log in to the Container registry
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_BASE_NAME }}-${{ matrix.name }}
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
- name: Version
if: startsWith(github.ref, 'refs/tags/')
id: package
run: |
echo "PACKAGE_VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}" >> $GITHUB_ENV
- uses: actions/download-artifact@v3
with:
name: ${{ env.package_name }}-${{ matrix.arch }}-sandbox
path: .
- name: Sandbox
run: |
tar xzf sandbox_out.tar.gz
find ${{ env.build_dir }}/_out -type f -name '*' -exec ls -sh --color=auto {} \;
- name: Build and push
uses: docker/build-push-action@v4
with:
push: true
context: .
file: ./extra/docker/${{ matrix.name }}/Dockerfile
build-args: |
PACKAGE_VERSION=${{ env.PACKAGE_VERSION }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}