Merge pull request #32 from sysflow-telemetry/go1.19 #268
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
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.19 | |
- name: Init API module | |
working-directory: go | |
run: | | |
sudo apt update -qq && sudo apt install -yqq libdevmapper-dev | |
go mod init github.com/sysflow-telemetry/sf-apis/go || true | |
go mod tidy | |
- name: Lint go API | |
uses: golangci/golangci-lint-action@v3 | |
with: | |
version: v1.51.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 |