Skip to content

Graph traversal APIs (sync master) #262

Graph traversal APIs (sync master)

Graph traversal APIs (sync master) #262

Workflow file for this run

name: ci
on:
push:
branches:
- master
- dev
tags:
- '*'
pull_request:
branches:
- master
- dev
types:
- opened
- edited
- reopened
- synchronize
- ready_for_review
- unlocked
- review_requested
workflow_dispatch:
env:
DOCKER_REGISTRY_ORGANIZATION: sysflowtelemetry
GH_ORGANIZATION: sysflow-telemetry
SFNB_DOCKER_IMAGE_NAME: sfnb
SYSPRINT_DOCKER_IMAGE_NAME: sysprint
jobs:
lint-go-api:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Go
uses: actions/setup-go@v3
with:
go-version: 1.17
- name: Lint go API
uses: golangci/golangci-lint-action@v3
with:
version: v1.47.1
working-directory: go
args: --disable=errcheck --build-tags=exclude_graphdriver_btrfs
lint-python-api:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v3
with:
python-version: '3.x'
- name: Install requirements
run: |
python -m pip install --upgrade pip
python -m pip install black==22.3 unimport==0.9.5
- name: Check style
run: |
black --check -S -l 120 --exclude \.grammar py3/classes/sysflow
black --check -S -l 120 py3/utils/sysprint
- name: Check imports
run: |
unimport --check --exclude "__init__.py|grammar" py3/classes/sysflow
unimport --check --exclude __init__.py py3/utils/sysprint
docker-sfnb:
needs: lint-python-api
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Docker meta
id: metasfnb
uses: docker/metadata-action@v4
with:
images: |
${{ env.DOCKER_REGISTRY_ORGANIZATION }}/${{ env.SFNB_DOCKER_IMAGE_NAME }}
ghcr.io/${{ env.GH_ORGANIZATION }}/${{ env.SFNB_DOCKER_IMAGE_NAME }}
tags: |
type=edge,branch=master
type=ref,event=branch
type=ref,event=tag
type=ref,event=pr
labels: |
org.opencontainers.image.documentation=https://sysflow.readthedocs.io/
org.opencontainers.image.vendor=SysFlow
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to DockerHub
uses: docker/login-action@v2
if: ${{ github.event_name != 'pull_request' }}
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
if: ${{ github.event_name != 'pull_request' }}
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set build args
id: args
shell: bash
run: |
echo "BRANCH=$(echo ${GITHUB_REF#refs/*/})" >> $GITHUB_ENV
echo "SHA_SHORT=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
- name: Build and push
id: docker_build
uses: docker/build-push-action@v3
with:
file: Dockerfile.sfnb
push: ${{ github.event_name != 'pull_request' }}
tags: "${{ steps.metasfnb.outputs.tags }}"
labels: "${{ steps.metasfnb.outputs.labels }}"
build-args: |
VERSION=${{ env.BRANCH }}
RELEASE=${{ env.SHA_SHORT }}
- name: push README to Dockerhub
uses: christian-korneck/update-container-description-action@v1
if: ${{ github.ref == 'refs/heads/master' && github.event_name != 'pull_request' }}
env:
DOCKER_USER: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKER_PASS: ${{ secrets.DOCKERHUB_TOKEN }}
with:
destination_container_repo: ${{ env.DOCKER_REGISTRY_ORGANIZATION }}/${{ env.SFNB_DOCKER_IMAGE_NAME }}
provider: dockerhub
readme_file: "README.md"
- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}
docker-sysprint:
needs: lint-python-api
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Docker meta
id: metasysprint
uses: docker/metadata-action@v4
with:
images: |
${{ env.DOCKER_REGISTRY_ORGANIZATION }}/${{ env.SYSPRINT_DOCKER_IMAGE_NAME }}
ghcr.io/${{ env.GH_ORGANIZATION }}/${{ env.SYSPRINT_DOCKER_IMAGE_NAME }}
tags: |
type=edge,branch=master
type=ref,event=branch
type=ref,event=tag
type=ref,event=pr
labels: |
org.opencontainers.image.documentation=https://sysflow.readthedocs.io/
org.opencontainers.image.vendor=SysFlow
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to DockerHub
uses: docker/login-action@v2
if: ${{ github.event_name != 'pull_request' }}
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
if: ${{ github.event_name != 'pull_request' }}
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set build args
id: args
shell: bash
run: |
echo "BRANCH=$(echo ${GITHUB_REF#refs/*/})" >> $GITHUB_ENV
echo "SHA_SHORT=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
- name: Build and push
id: docker_build
uses: docker/build-push-action@v3
with:
file: Dockerfile.sysprint
push: ${{ github.event_name != 'pull_request' }}
tags: "${{ steps.metasysprint.outputs.tags }}"
labels: "${{ steps.metasysprint.outputs.labels }}"
build-args: |
VERSION=${{ env.BRANCH }}
RELEASE=${{ env.SHA_SHORT }}
- name: push README to Dockerhub
uses: christian-korneck/update-container-description-action@v1
if: ${{ github.ref == 'refs/heads/master' && github.event_name != 'pull_request' }}
env:
DOCKER_USER: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKER_PASS: ${{ secrets.DOCKERHUB_TOKEN }}
with:
destination_container_repo: ${{ env.DOCKER_REGISTRY_ORGANIZATION }}/${{ env.SYSPRINT_DOCKER_IMAGE_NAME }}
provider: dockerhub
readme_file: "README.md"
- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}
pypi-sysflow-tools:
needs: lint-python-api
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v3
with:
python-version: '3.x'
- name: Build package
shell: bash
run: cd py3 && python -m pip install build && python -m build --wheel
- name: Publish package
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_TOKEN }}
packages-dir: py3/dist/
skip-existing: true
release:
needs: [docker-sfnb,docker-sysprint,pypi-sysflow-tools]
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Get version from tag
id: tag_name
shell: bash
run: |
GHREF=${GITHUB_REF#refs/tags/}; echo "CURRENT_VERSION=${GHREF%%-*}" >> $GITHUB_ENV
echo "CURRENT_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
- name: Get Changelog Entry
id: changelog_reader
uses: mindsers/changelog-reader-action@v2
with:
version: ${{ env.CURRENT_VERSION }}
path: ./CHANGELOG.md
- name: Release
uses: softprops/action-gh-release@v1
with:
body: ${{ steps.changelog_reader.outputs.changes }}
token: ${{ secrets.GITHUB_TOKEN }}
prerelease: ( contains(env.CURRENT_VERSION, '-rc') || contains(env.CURRENT_VERSION, '-alpha') || contains(env.CURRENT_VERSION, '-beta') )
draft: true