Effect-TS/effect

6 workflows · maturity 50% · 5 patterns · GitHub ↗

Security 25/100

Practices

✓ Matrix✓ Permissions○ Security scan○ AI review○ Cache✓ Concurrency○ Reusable workflows

Detected patterns

Security dimensions

permissions
25
security scan
0
supply chain
0
secret handling
0
harden runner
0

Workflows (6)

check matrix perms .github/workflows/check.yml
Triggers
workflow_dispatch, pull_request, push
Runs on
ubuntu-latest, ubuntu-latest, ubuntu-latest
Jobs
types, lint, test
Matrix
runtime, shard→ 1/4, 2/4, 3/4, 4/4, Node
Actions
oven-sh/setup-bun
Commands
  • pnpm check
  • pnpm test-types --target '>=5.4'
  • pnpm circular
  • pnpm lint
  • pnpm codegen
  • git diff --exit-code
  • pnpm vitest --shard ${{ matrix.shard }}
  • bun vitest --shard ${{ matrix.shard }}
View raw YAML
name: Check
on:
  workflow_dispatch:
  pull_request:
    branches: [main, next-minor, next-major]
  push:
    branches: [main, next-minor, next-major]

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

permissions: {}

jobs:
  types:
    name: Types
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v4
      - name: Install dependencies
        uses: ./.github/actions/setup
      - run: pnpm check
      - run: pnpm test-types --target '>=5.4'

  lint:
    name: Lint
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v4
      - name: Install dependencies
        uses: ./.github/actions/setup
      - run: pnpm circular
      - run: pnpm lint
      - run: pnpm codegen
      - name: Check for codegen changes
        run: git diff --exit-code

  test:
    name: Test (${{ matrix.runtime }} ${{ matrix.shard }})
    runs-on: ubuntu-latest
    timeout-minutes: 10
    strategy:
      fail-fast: false
      matrix:
        shard: [1/4, 2/4, 3/4, 4/4]
        # runtime: [Node, Bun] # TODO: Re-enable bun test suite after https://github.com/oven-sh/bun/issues/4145 is resolved
        runtime: [Node]
    steps:
      - uses: actions/checkout@v4
      - name: Install dependencies
        uses: ./.github/actions/setup
      - uses: oven-sh/setup-bun@v1
        if: matrix.runtime == 'Bun'
        with:
          bun-version: 1.0.25
      - name: Test
        run: pnpm vitest --shard ${{ matrix.shard }}
        if: matrix.runtime == 'Node'
      - name: Test
        run: bun vitest --shard ${{ matrix.shard }}
        if: matrix.runtime == 'Bun'
pages perms .github/workflows/pages.yml
Triggers
workflow_dispatch, pull_request, push
Runs on
ubuntu-latest, ubuntu-latest
Jobs
build, deploy
Actions
actions/jekyll-build-pages, actions/upload-pages-artifact, actions/deploy-pages
Commands
  • pnpm docgen
View raw YAML
name: Pages
on:
  workflow_dispatch:
  pull_request:
    branches: [main, next-minor, next-major]
  push:
    branches: [main, next-minor, next-major]

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

permissions: {}

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v4
      - name: Install dependencies
        uses: ./.github/actions/setup
      - run: pnpm docgen
      - name: Build pages Jekyll
        if: github.repository_owner == 'Effect-Ts' && github.event_name == 'push' && github.ref == 'refs/heads/main'
        uses: actions/jekyll-build-pages@v1
        with:
          source: ./docs
          destination: ./_site
      - name: Upload pages artifact
        if: github.repository_owner == 'Effect-Ts' && github.event_name == 'push' && github.ref == 'refs/heads/main'
        uses: actions/upload-pages-artifact@v3

  deploy:
    if: github.repository_owner == 'Effect-Ts' && github.event_name == 'push' && github.ref == 'refs/heads/main'
    name: Deploy
    runs-on: ubuntu-latest
    timeout-minutes: 10
    needs: build
    permissions:
      pages: write # To deploy to GitHub Pages
      id-token: write # To verify the deployment originates from an appropriate source
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4
release perms .github/workflows/release.yml
Triggers
push
Runs on
ubuntu-latest
Jobs
release
Actions
changesets/action
Commands
  • npm install -g npm@latest
View raw YAML
name: Release
on:
  push:
    branches: [main]

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}

permissions: {}

jobs:
  release:
    if: github.repository_owner == 'Effect-Ts'
    name: Release
    runs-on: ubuntu-latest
    timeout-minutes: 30
    permissions:
      contents: write
      id-token: write
      pull-requests: write
    steps:
      - uses: actions/checkout@v4
      - name: Install dependencies
        uses: ./.github/actions/setup
        with:
          registry-url: "https://registry.npmjs.org"
      - name: Upgrade npm for OIDC support
        run: npm install -g npm@latest
      - name: Create Release Pull Request or Publish
        uses: changesets/action@v1
        with:
          version: pnpm changeset-version
          publish: pnpm changeset-publish
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
release-queue perms .github/workflows/release-queue.yml
Triggers
issue_comment, pull_request_target, push
Runs on
ubuntu-latest
Jobs
update
Actions
tim-smart/next-release-action
Commands
  • gh pr checkout ${{ github.event.pull_request.number }}
View raw YAML
name: Release queue
on:
  issue_comment:
    types: [created]
  pull_request_target:
    branches: [main, next-minor, next-major]
  push:
    branches: [main, next-minor, next-major]

permissions: {}

jobs:
  update:
    if: github.repository_owner == 'Effect-Ts'
    name: Update
    runs-on: ubuntu-latest
    timeout-minutes: 10
    permissions:
      contents: write
      pull-requests: write
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
          token: ${{ secrets.EFFECT_BOT_GH }}
      - run: gh pr checkout ${{ github.event.pull_request.number }}
        if: github.event.pull_request
        env:
          GITHUB_TOKEN: ${{ secrets.EFFECT_BOT_GH }}
      - uses: tim-smart/next-release-action@main
        with:
          github_token: ${{ secrets.EFFECT_BOT_GH }}
          packages: effect,@effect/platform
          git_user: effect-bot
          git_email: tech-ops@effectful.co
snapshot perms .github/workflows/snapshot.yml
Triggers
pull_request, workflow_dispatch
Runs on
ubuntu-latest
Jobs
snapshot
Commands
  • pnpm codemod
  • pnpm build
  • pnpx pkg-pr-new@0.0.28 publish --pnpm --comment=off ./packages/* ./packages/ai/*
View raw YAML
name: Snapshot
on:
  pull_request:
    branches: [main, next-minor, next-major]
  workflow_dispatch:

permissions: {}

jobs:
  snapshot:
    name: Snapshot
    if: github.repository_owner == 'Effect-Ts'
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v4
      - name: Install dependencies
        uses: ./.github/actions/setup
      - name: Run codemods
        run: pnpm codemod
      - name: Build package
        run: pnpm build
      - name: Create snapshot
        id: snapshot
        run: pnpx pkg-pr-new@0.0.28 publish --pnpm --comment=off ./packages/* ./packages/ai/*
ts-nightly perms .github/workflows/ts-nightly.yml
Triggers
workflow_dispatch, schedule
Runs on
ubuntu-latest
Jobs
types
Commands
  • pnpm test-types --target next
View raw YAML
name: TypeScript's nightly
on:
  workflow_dispatch:
  schedule:
    - cron: "0 12 * * *"

permissions: {}

jobs:
  types:
    name: Types
    runs-on: ubuntu-latest
    timeout-minutes: 10
    permissions:
      issues: write
    steps:
      - uses: actions/checkout@v4
      - name: Install dependencies
        uses: ./.github/actions/setup
      - name: Run type tests
        run: pnpm test-types --target next
      - name: Notify on failed run
        uses: actions/github-script@v7
        if: failure()
        with:
          script: |
            github.rest.issues.create({
              owner: context.repo.owner,
              repo: context.repo.repo,
              title: "Failed TypeScript's nightly type test run",
              body: `The following type test run against TypeScript's nightly build failed: [#${context.runNumber}](https://github.com/Effect-TS/effect/actions/runs/${context.runId}).`
            })