Skip to content

heliannuuthus/integrate-deploy

Repository files navigation

🌻🌻integration 🌻 deployment🌻🌻

Introduction

A github continuous integration and continuous deployment, built-in java, rust, golang, node different programming languages reusable workflow.

Getting Started

For Java projects that use gradle as a build tool, it provides integrated configuration, supporting single applications, cloud services, single project libraries, and multi-project libraries.

rust

rust

name: rust

on:
  pull_request:
    types: [opened, reopened, synchronize]
  pull_request_target:
    types: [closed]
jobs:
  setup:
    uses: heliannuuthus/integrate-deploy/.github/workflows/call-rust-setup.yml
    with:
      workdir: "tests/rust/"

  lint:
    if: ${{ github.event.pull_request.merged != true }}
    needs: setup
    uses: heliannuuthus/integrate-deploy/.github/workflows/call-rust-lint.yml
    with:
      workdir: "tests/rust/"

  build:
    if: ${{ always() && needs.setup.result == 'success' }}
    needs: [setup, lint]
    uses: heliannuuthus/integrate-deploy/.github/workflows/call-rust-build.yml
    with:
      workdir: "tests/rust/"

  containeraized:
    if: ${{ always() && github.event.pull_request.merged == true }}
    needs: build
    permissions:
      contents: read
      packages: write
    uses: heliannuuthus/integrate-deploy/.github/workflows/call-containerize.yml
    with:
      version: ${{ needs.build.outputs.version }}
      workdir: "tests/rust/"
      target: "tests/rust/target/"

gradle-cloud

gradle-cloud

use Dockerfile to build the project image, the default build jar package name is app.jar, output directory is build/libs/

name: gradle-cloud

on:
  pull_request:
    types: [opened, reopened, synchronize]
  pull_request_target:
    types: [closed]

jobs:
  lint:
    if: ${{ github.event.pull_request.merged != true }}
    uses: heliannuuthus/integrate-deploy/.github/workflows/call-gradle-lint.yml
    with:
      workdir: "tests/gradle-cloud/"

  build:
    if: always()
    needs: lint
    uses: heliannuuthus/integrate-deploy/.github/workflows/call-gradle-build.yml
    with:
      workdir: "tests/gradle-cloud/"

  containerize:
    if: ${{ always() && github.event.pull_request.merged == true }}
    needs: build
    permissions:
      contents: read
      packages: write
    uses: heliannuuthus/integrate-deploy/.github/workflows/call-containerize.yml
    with:
      workdir: "tests/gradle-cloud/"
      version: ${{ needs.build.outputs.version }}
      target: "tests/gradle-cloud/build"

gradle-library

gradle-library

publish the package to github pakcage

name: gradle-library

on:
  pull_request:
    types: [opened, reopened, synchronize]
  pull_request_target:
    types: [closed]

jobs:
  lint:
    if: ${{ github.event.pull_request.merged != true }}
    uses: heliannuuthus/integrate-deploy/.github/workflows/call-gradle-lint.yml
    with:
      workdir: "tests/gradle-library/"

  build:
    if: always()
    needs: lint
    uses: heliannuuthus/integrate-deploy/.github/workflows/call-gradle-build.yml
    with:
      workdir: "tests/gradle-library/"

  containerize:
    if: ${{ always() && github.event.pull_request.merged == true }}
    needs: build
    permissions:
      contents: read
      packages: write
    uses: heliannuuthus/integrate-deploy/.github/workflows/call-gradle-publish.yml
    with:
      workdir: "tests/gradle/"
      user: ${{ github.actor }}
    secrets:
      token: ${{ secrets.GITHUB_TOKEN }}

golang

golang

name: golang

on:
  pull_request:
    types: [opened, reopened, synchronize]
  pull_request_target:
    types: [closed]

jobs:
  setup:
    uses: heliannuuthus/integrate-deploy/.github/workflows/call-golang-setup.yml
    with:
      workdir: "tests/golang/"

  lint:
    if: ${{ github.event.pull_request.merged != true }}
    needs: setup
    uses: heliannuuthus/integrate-deploy/.github/workflows/call-golang-lint.yml
    with:
      workdir: "tests/golang/"

  build:
    if: ${{ always() && needs.setup.result == 'success' }}
    needs: [setup, lint]
    uses: heliannuuthus/integrate-deploy/.github/workflows/call-golang-build.yml
    with:
      workdir: "tests/golang/"
      GOOS: linux
      GOARCH: amd64
      ENTRANCE: cmd/main.go

  containeraized:
    if: ${{ always() && github.event.pull_request.merged }}
    needs: build
    permissions:
      contents: read
      packages: write
    uses: heliannuuthus/integrate-deploy/.github/workflows/call-containerize.yml
    with:
      version: ${{ needs.build.outputs.version }}
      workdir: "tests/golang/"
      target: "tests/golang/build"

node

node

name: node

on:
  pull_request:
    types: [opened, reopened, synchronize]
  pull_request_target:
    types: [closed]
jobs:
  setup:
    uses: heliannuuthus/integrate-deploy/.github/workflows/call-node-setup.yml
    with:
      workdir: "tests/node/"

  lint:
    if: ${{ github.event.pull_request.merged != true }}
    needs: setup
    uses: heliannuuthus/integrate-deploy/.github/workflows/call-node-lint.yml
    with:
      workdir: "tests/node/"
      PNPM_STORE: ${{ needs.setup.outputs.PNPM_STORE }}

  build:
    if: ${{ always() && needs.setup.result == 'success' }}
    needs: [setup, lint]
    uses: heliannuuthus/integrate-deploy/.github/workflows/call-node-build.yml
    with:
      workdir: "tests/node/"
      PNPM_STORE: ${{ needs.setup.outputs.PNPM_STORE }}