Skip to content

Add metadata for workflow generation. #45

Add metadata for workflow generation.

Add metadata for workflow generation. #45

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: Network
build_dir: dse/network/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-x86
- windows-x64
container:
image: ghcr.io/boschglobal/dse-gcc-builder:main
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Build package metadata
id: package_meta
uses: docker/metadata-action@v4
with:
images: dse/network
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
publish:
if: startsWith(github.ref, 'refs/tags/')
runs-on: [ubuntu-latest]
needs: [build]
strategy:
matrix:
package_arch:
- linux-amd64
- linux-x86
- linux-i386
- windows-x86
- windows-x64
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Build package metadata
id: package_meta
uses: docker/metadata-action@v4
with:
images: dse/network
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
tools:
if: startsWith(github.ref, 'refs/tags/')
runs-on: [ubuntu-latest]
needs: [build]
steps:
- name: Checkout
uses: actions/checkout@v3
- 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@v4
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_BASE_NAME }}-network
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/${{ env.package_name }}-linux-amd64-sandbox
- name: Sandbox
run: |
(cd sandbox/${{ env.package_name }}-linux-amd64-sandbox; tar xzf sandbox_out.tar.gz)
mkdir -p extra/tools/network/build/stage
cp -r licenses -t extra/tools/network/build/stage
ls -R extra/tools/network/build/stage
- name: Build and push
uses: docker/build-push-action@v4
with:
push: true
context: extra/tools/network
file: ./extra/tools/network/build/package/Dockerfile
build-args: |
PACKAGE_VERSION=${{ env.PACKAGE_VERSION }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}