java-workflow/README.md
2024-07-05 12:51:45 +03:00

4.4 KiB
Raw Blame History

java-workflow

В репозитории хранятся общие описания для сборок java/kotlin проектов. Сборка наших проектов бывает разной, в зависимости от типа собираемого проекта:

  • Service - Maven сборка сервиса с деплоем docker image в docker hub
  • Thrift - собираем thrift протокол и деплоим в maven central
  • Library - собираем библиотеку и деплоим в maven central
  • Swag - собираем openapi, деплоим в maven central и публикуем в github pages

Инструменты для сканирования:

  • Semgrep - сканирует по дефолтным правилам и выводит отчет в формате Sarif

Для сканирования проектов - инструмент Semgrep. Чтобы начать использовать - добавьте в директорию файл semgrep-scan.yml

Чтобы начать использовать java-workflow в своем репозитории - добавьте в директорию /.github/workflows/ файлы build.yml и deploy.yml, файлов описания workflow не обязательно должно быть два, вы можете самостоятельно описать workflow с использованием java-workflow. Ниже приведен пример для service типа проекта. Аналогично и для других типов, изменяется только название файла и передаваемые параметры.

build.yml

name: Build Maven Artifact

on:
  pull_request:
    branches:
      - '*'

jobs:
  build:
    uses: valitydev/java-workflow/.github/workflows/maven-service-build.yml@v1

deploy.yml

name: Deploy Docker Image

on:
  push:
    branches:
      - 'master'

jobs:
  build-and-deploy:
    uses: valitydev/java-workflow/.github/workflows/maven-service-deploy.yml@v1
    secrets:
      github-token: ${{ secrets.GITHUB_TOKEN }}
      mm-webhook-url: ${{ secrets.MATTERMOST_WEBHOOK_URL }}

Service

build.yml

uses: valitydev/java-workflow/.github/workflows/maven-service-build.yml@v1

deploy.yml

uses: valitydev/java-workflow/.github/workflows/maven-service-deploy.yml@v1
secrets:
  github-token: ${{ secrets.GITHUB_TOKEN }}
  mm-webhook-url: ${{ secrets.MATTERMOST_WEBHOOK_URL }}

Thrift

build.yml

uses: valitydev/java-workflow/.github/workflows/maven-thrift-build.yml@v1

deploy.yml

uses: valitydev/java-workflow/.github/workflows/maven-thrift-deploy.yml@v1
secrets:
  server-username: ${{ secrets.OSSRH_USERNAME }}
  server-password: ${{ secrets.OSSRH_TOKEN }}
  deploy-secret-key: ${{ secrets.OSSRH_GPG_SECRET_KEY }}
  deploy-secret-key-password: ${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }}
  mm-webhook-url: ${{ secrets.MATTERMOST_WEBHOOK_URL }}

erlang-build-verify.yml

uses: valitydev/java-workflow/.github/workflows/erlang-thrift-build.yml@v1

Library

build.yml

uses: valitydev/java-workflow/.github/workflows/maven-library-build.yml@v1

deploy.yml

uses: valitydev/java-workflow/.github/workflows/maven-library-deploy.yml@v1
secrets:
  server-username: ${{ secrets.OSSRH_USERNAME }}
  server-password: ${{ secrets.OSSRH_TOKEN }}
  deploy-secret-key: ${{ secrets.OSSRH_GPG_SECRET_KEY }}
  deploy-secret-key-password: ${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }}
  mm-webhook-url: ${{ secrets.MATTERMOST_WEBHOOK_URL }}

Swag

build.yml

uses: valitydev/java-workflow/.github/workflows/maven-swag-build.yml@v1

deploy.yml

uses: valitydev/java-workflow/.github/workflows/maven-swag-deploy.yml@v1
secrets:
  server-username: ${{ secrets.OSSRH_USERNAME }}
  server-password: ${{ secrets.OSSRH_TOKEN }}
  deploy-secret-key: ${{ secrets.OSSRH_GPG_SECRET_KEY }}
  deploy-secret-key-password: ${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }}
  github-token: ${{ secrets.GITHUB_TOKEN }}
  mm-webhook-url: ${{ secrets.MATTERMOST_WEBHOOK_URL }}

Semgrep scan

semgrep-scan.yml

name: Run Semgrep

on:
  pull_request:
    branches:
      - '*'

jobs:
  scan:
    uses: valitydev/java-workflow/.github/workflows/semgrep-scan.yml@v3.0.5
    secrets:
      mm-sa-wh-url: ${{ secrets.MATTERMOST_SA_WH_URL}}