Effect-TS/effect
6 workflows · maturity 50% · 5 patterns · GitHub ↗
Practices
✓ Matrix✓ Permissions○ Security scan○ AI review○ Cache✓ Concurrency○ Reusable workflows
Detected patterns
Security dimensions
Workflows (6)
check matrix perms .github/workflows/check.yml
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
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
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
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
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
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}).`
})