DEV Community

丁久
丁久

Posted on • Originally published at dingjiu1989-hue.github.io

Advanced GitHub Actions Workflows

This article was originally published on AI Study Room. For the full version with working code examples and related articles, visit the original post.

Advanced GitHub Actions Workflows

Advanced GitHub Actions Workflows

Advanced GitHub Actions Workflows

Advanced GitHub Actions Workflows

Advanced GitHub Actions Workflows

Introduction

GitHub Actions has evolved beyond simple CI/CD into a full-featured automation platform. Teams managing monorepos, multi-service architectures, or compliance-sensitive deployments need advanced workflows that are maintainable, fast, and secure. This article explores production-ready patterns for GitHub Actions at scale.

Reusable Workflows

Reusable workflows eliminate duplication across repositories. Define a workflow in .github/workflows/deploy-shared.yml with workflow_call:

.github/workflows/deploy-shared.yml

name: Shared Deployment Workflow

on:

workflow_call:

inputs:

environment:

required: true

type: string

image-tag:

required: true

type: string

secrets:

CLOUD_PROVIDER_KEY:

required: true

jobs:

deploy:

runs-on: ubuntu-latest

environment: ${{ inputs.environment }}

steps:

\\\\- uses: actions/checkout@v4

\\\\- name: Deploy to ${{ inputs.environment }}

run: |

echo "Deploying ${{ inputs.image-tag }} to ${{ inputs.environment }}"

Actual deployment logic here

Consume it from any repository:

.github/workflows/release.yml

name: Release

on:

push:

branches: [main]

jobs:

call-deploy:

uses: org/shared-workflows/.github/workflows/deploy-shared.yml@v1

with:

environment: staging

image-tag: ${{ github.sha }}

secrets:

CLOUD_PROVIDER_KEY: ${{ secrets.CLOUD_PROVIDER_KEY }}

Matrix Builds

Matrix strategies test across multiple dimensions without duplicating workflow YAML:

jobs:

test:

runs-on: ubuntu-latest

strategy:

matrix:

node: [18, 20, 22]

os: [ubuntu-latest, windows-latest]

include:

\\\\- node: 22

os: ubuntu-latest

coverage: true

exclude:

\\\\- node: 18

os: windows-latest

steps:

\\\\- uses: actions/checkout@v4

\\\\- uses: actions/setup-node@v4

with:

node-version: ${{ matrix.node }}

\\\\- run: npm ci

\\\\- run: npm test

\\\\- if: matrix.coverage

uses: codecov/codecov-action@v3

The include key adds jobs to the matrix, while exclude removes specific combinations. For large matrices, use max-parallel: 3 to avoid saturating runner capacity.

Composite Actions

Composite actions bundle multiple steps into a reusable unit, ideal for organization-wide standards:

.github/actions/setup-node-env/action.yml

name: "Setup Node.js Environment"

description: "Configures Node with pnpm, cache, and dependency audit"

inputs:

node-version:

description: "Node.js version"

required: false

default: "20"

working-directory:

description: "Directory containing package.json"

required: false

default: "."

runs:

using: "composite"

steps:

\\\\- uses: actions/setup-node@v4

with:

node-version: ${{ inputs.node-version }}

\\\\- uses: pnpm/action-setup@v2


Read the full article on AI Study Room for complete code examples, comparison tables, and related resources.

Found this useful? Check out more developer guides and tool comparisons on AI Study Room.

Top comments (0)