Update “Declaration emit” in README progress table #3458
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
merge_group: | |
branches: | |
- main | |
permissions: | |
contents: read | |
# Ensure scripts are run with pipefail. See: | |
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#exit-codes-and-error-action-preference | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 | |
- uses: dtolnay/rust-toolchain@fcf085fcb4b4b8f63f96906cd713eb52181b5ea4 # stable | |
- uses: ./.github/actions/setup-go | |
with: | |
cache-name: build | |
# Avoid duplicate PR annotations. | |
- name: Disable PR annotations | |
run: | | |
echo "::remove-matcher owner=eslint-compact::" | |
echo "::remove-matcher owner=eslint-stylish::" | |
echo "::remove-matcher owner=tsc::" | |
echo "::remove-matcher owner=go::" | |
- run: npm ci | |
- run: npx hereby build | |
extension: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 | |
- uses: dtolnay/rust-toolchain@fcf085fcb4b4b8f63f96906cd713eb52181b5ea4 # stable | |
- run: npm ci | |
- run: npm run extension:build | |
test: | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- os: ubuntu-latest | |
coverage: true | |
main: true | |
- os: windows-latest | |
coverage: true | |
skip: ${{ github.event_name == 'merge_group' }} | |
- os: macos-latest | |
coverage: true | |
skip: ${{ github.event_name == 'merge_group' }} | |
- os: ubuntu-latest | |
name: 'no submodules' | |
no-submodules: true | |
- os: ['self-hosted', '1ES.Pool=TypeScript-1ES-GitHub-XL', '1ES.ImageOverride=mariner-2.0'] | |
name: 'race mode' | |
race: true | |
skip: ${{ github.event_name == 'merge_group' }} | |
- os: ubuntu-latest | |
name: 'noembed' | |
noembed: true | |
- os: ubuntu-latest | |
name: 'concurrent test programs' | |
concurrent-test-programs: true | |
coverage: true | |
exclude: | |
- config: | |
skip: true | |
name: test (${{ matrix.config.name || matrix.config.os }}) | |
runs-on: ${{ matrix.config.os }} | |
permissions: | |
id-token: write | |
contents: read | |
env: | |
TSGO_HEREBY_RACE: ${{ (matrix.config.race && 'true') || 'false' }} | |
TSGO_HEREBY_NOEMBED: ${{ (matrix.config.noembed && 'true') || 'false' }} | |
TSGO_HEREBY_CONCURRENT_TEST_PROGRAMS: ${{ (matrix.config.concurrent-test-programs && 'true') || 'false' }} | |
TSGO_HEREBY_COVERAGE: ${{ (matrix.config.coverage && 'true') || 'false' }} | |
steps: | |
- run: git config --system core.longpaths true | |
if: ${{ matrix.config.os == 'windows-latest' }} | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: ${{ !matrix.config.no-submodules }} | |
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 | |
with: | |
node-version: 'lts/*' | |
- uses: dtolnay/rust-toolchain@fcf085fcb4b4b8f63f96906cd713eb52181b5ea4 # stable | |
- uses: ./.github/actions/setup-go | |
with: | |
cache-name: test | |
# Avoid duplicate PR annotations. | |
- if: ${{ ! matrix.config.main }} | |
name: Disable PR annotations | |
run: | | |
echo "::remove-matcher owner=eslint-compact::" | |
echo "::remove-matcher owner=eslint-stylish::" | |
echo "::remove-matcher owner=tsc::" | |
echo "::remove-matcher owner=go::" | |
- run: npm ci | |
- run: go install gotest.tools/gotestsum@latest | |
# Installing gotestsum is super slow on Windows. | |
# Also, avoid using it in race mode so we get the full output. | |
if: ${{ matrix.config.os != 'windows-latest' && !matrix.config.race }} | |
- name: Tests | |
id: test | |
run: npx hereby test | |
- name: Benchmarks | |
run: npx hereby test:benchmarks | |
- name: Tools Tests | |
run: npx hereby test:tools | |
- name: API Tests | |
run: npx hereby test:api | |
- run: git add . | |
- uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3 | |
if: ${{ always() && matrix.config.coverage && github.event_name != 'merge_group' }} | |
with: | |
use_oidc: ${{ !(github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork) }} | |
name: ${{ matrix.config.name || matrix.config.os }} | |
directory: ./coverage | |
- run: git diff --staged --exit-code --stat | |
- name: Print baseline diff on failure | |
if: ${{ failure() && steps.test.conclusion == 'failure' }} | |
run: | | |
npx hereby baseline-accept | |
git add testdata/baselines/reference | |
git diff --staged --exit-code | |
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
if: ${{ failure() && steps.test.conclusion == 'failure' }} | |
with: | |
name: ${{ matrix.config.os }}-${{ (matrix.config.race && 'race') || 'norace' }}-new-baselines-artifact | |
path: testdata/baselines/local | |
lint: | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- os: ubuntu-latest | |
main: true | |
- os: windows-latest | |
skip: ${{ github.event_name == 'merge_group' }} | |
- os: macos-latest | |
skip: ${{ github.event_name == 'merge_group' }} | |
- os: ubuntu-latest | |
name: 'noembed' | |
noembed: true | |
skip: ${{ github.event_name == 'merge_group' }} | |
exclude: | |
- config: | |
skip: true | |
name: lint (${{ matrix.config.name || matrix.config.os }}) | |
runs-on: ${{ matrix.config.os }} | |
env: | |
TSGO_HEREBY_NOEMBED: ${{ (matrix.config.noembed && 'true') || 'false' }} | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 | |
- uses: dtolnay/rust-toolchain@fcf085fcb4b4b8f63f96906cd713eb52181b5ea4 # stable | |
- uses: ./.github/actions/setup-go | |
with: | |
cache-name: lint${{ (matrix.config.noembed && '-noembed') || ''}} | |
# Avoid duplicate PR annotations. | |
- if: ${{ ! matrix.config.main }} | |
name: Disable PR annotations | |
run: | | |
echo "::remove-matcher owner=eslint-compact::" | |
echo "::remove-matcher owner=eslint-stylish::" | |
echo "::remove-matcher owner=tsc::" | |
echo "::remove-matcher owner=go::" | |
- run: npm ci | |
- run: npx hereby lint | |
format: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 | |
- uses: dtolnay/rust-toolchain@fcf085fcb4b4b8f63f96906cd713eb52181b5ea4 # stable | |
- uses: ./.github/actions/setup-go | |
with: | |
cache-name: format | |
- run: npm ci | |
- run: npx hereby check:format | |
generate: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: true | |
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 | |
- uses: dtolnay/rust-toolchain@fcf085fcb4b4b8f63f96906cd713eb52181b5ea4 # stable | |
- uses: ./.github/actions/setup-go | |
with: | |
cache-name: generate | |
- run: npm ci | |
- run: npx hereby generate | |
- run: node ./internal/lsp/lsproto/_generate/fetchModel.mjs | |
- run: node ./internal/lsp/lsproto/_generate/generate.mjs | |
- run: git add . | |
- run: git diff --staged --exit-code --stat | |
tidy: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: ./.github/actions/setup-go | |
with: | |
cache-name: tidy | |
- run: go mod tidy -diff | |
- run: go -C ./_tools mod tidy -diff | |
smoke: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: true | |
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 | |
- uses: dtolnay/rust-toolchain@fcf085fcb4b4b8f63f96906cd713eb52181b5ea4 # stable | |
- uses: ./.github/actions/setup-go | |
with: | |
cache-name: smoke | |
# Avoid duplicate PR annotations. | |
- name: Disable PR annotations | |
run: | | |
echo "::remove-matcher owner=eslint-compact::" | |
echo "::remove-matcher owner=eslint-stylish::" | |
echo "::remove-matcher owner=tsc::" | |
echo "::remove-matcher owner=go::" | |
- run: npm ci | |
- run: npx hereby build --race | |
- run: npm ci && npx hereby generate-diagnostics | |
working-directory: ./_submodules/TypeScript | |
- run: ./built/local/tsgo -p ./_submodules/TypeScript/src/compiler --singleThreaded | |
- run: ./built/local/tsgo -p ./_submodules/TypeScript/src/compiler | |
misc: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: ./.github/actions/setup-go | |
with: | |
cache-name: misc | |
- run: go -C ./_tools run ./cmd/checkmodpaths $PWD | |
baselines: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: true | |
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 | |
- uses: dtolnay/rust-toolchain@fcf085fcb4b4b8f63f96906cd713eb52181b5ea4 # stable | |
- uses: ./.github/actions/setup-go | |
with: | |
cache-name: baselines | |
- run: npm ci | |
- name: Remove all baselines | |
run: rm -rf testdata/baselines/reference | |
- name: Run tests | |
run: npx hereby test &> /dev/null || exit 0 | |
- name: Accept baselines | |
run: | | |
npx hereby baseline-accept | |
git add testdata/baselines/reference | |
- name: Run tests | |
run: npx hereby test | |
- name: Check baselines | |
id: check-baselines | |
run: | | |
function print_diff() { | |
if ! git diff --staged --exit-code --quiet --diff-filter=$1; then | |
echo "$2:" | |
git diff --staged --name-only --diff-filter=$1 | |
fi | |
} | |
if ! git diff --staged --exit-code --quiet; then | |
print_diff ACR "Missing baselines" | |
print_diff MTUXB "Modified baselines" | |
print_diff D "Unused baselines" | |
git diff --staged > fix_baselines.patch | |
exit 1 | |
fi | |
- name: Upload baseline diff artifact | |
if: ${{ failure() && steps.check-baselines.conclusion == 'failure' }} | |
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
with: | |
name: fix_baselines.patch | |
path: fix_baselines.patch | |
required: | |
runs-on: ubuntu-latest | |
if: ${{ always() }} | |
needs: | |
- baselines | |
- build | |
- extension | |
- format | |
- generate | |
- lint | |
- misc | |
- smoke | |
- test | |
- tidy | |
steps: | |
- name: Check required jobs | |
env: | |
NEEDS: ${{ toJson(needs) }} | |
run: | | |
! echo $NEEDS | jq -e 'to_entries[] | { job: .key, result: .value.result } | select((.result == "success" or .result == "skipped") | not)' |