chore: new contributing path and content for winglang docs #7656
Workflow file for this run
This file contains 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: Build | |
on: | |
pull_request: | |
types: | |
- opened | |
- synchronize | |
paths-ignore: | |
- "docs/**" | |
- "logo/**" | |
- "*.md" | |
push: | |
branches: | |
- main | |
workflow_dispatch: {} | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.head.ref || github.ref }} | |
cancel-in-progress: true | |
env: | |
RUST_VERSION: "1.67.1" | |
NODE_VERSION: "18.16.0" | |
NPM_VERSION: "8.19.3" | |
jobs: | |
build: | |
name: "Build" | |
timeout-minutes: 30 | |
runs-on: ubuntu-latest | |
env: | |
CARGO_TERM_COLOR: always | |
outputs: | |
version: ${{ fromJson(steps.changelog.outputs.data).newVersion }} | |
last-version: ${{ fromJson(steps.changelog.outputs.data).lastVersion }} | |
changelog: ${{ fromJson(steps.changelog.outputs.data).changelog }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Setup Node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- name: Setup NPM | |
run: npm install -g npm@${{ env.NPM_VERSION }} | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ env.RUST_VERSION }} | |
targets: | | |
x86_64-unknown-linux-gnu | |
wasm32-wasi | |
components: rustfmt,clippy,rust-std | |
- name: Setup Cargo Cache | |
uses: Swatinem/rust-cache@v2 | |
- name: Install Dependencies | |
uses: bahmutov/npm-install@v1 | |
- name: Changelog Generation | |
id: changelog | |
env: | |
GENERATE_VERSION: ${{ github.event_name != 'push' || github.repository != 'winglang/wing' }} | |
run: npm run changelog | |
- name: Build | |
run: npm run build:ci | |
- name: Package | |
run: npm run package:ci | |
- name: Upload Wing CLI | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wing | |
path: apps/wing/*.tgz | |
- name: Upload Wing Console Server | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wingconsoleserver | |
path: apps/wing-console/console/server/*.tgz | |
- name: Upload Wing Console App | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wingconsoleapp | |
path: apps/wing-console/console/app/*.tgz | |
- name: Upload WingSDK | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wingsdk | |
path: libs/wingsdk/*.tgz | |
- name: Upload WingCompiler | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wingcompiler | |
path: libs/wingcompiler/*.tgz | |
- name: Upload WingC WASM | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wingc | |
path: target/wasm32-wasi/release/wingc.wasm | |
- name: Upload Extension | |
uses: actions/upload-artifact@v3 | |
with: | |
name: vscode-wing | |
path: apps/vscode-wing/vscode-wing.vsix | |
- name: Compress Docs | |
run: tar -czvf docs.tgz docs/* | |
- name: Upload Docs | |
uses: actions/upload-artifact@v3 | |
with: | |
name: docs | |
path: docs.tgz | |
- name: Publish Playground | |
if: ${{ github.event_name == 'push' && github.repository == 'winglang/wing' }} | |
uses: amondnet/[email protected] | |
with: | |
github-token: ${{ secrets.PROJEN_GITHUB_TOKEN }} | |
vercel-token: ${{ secrets.VERCEL_TOKEN_WING_PLAYGROUND }} | |
vercel-org-id: ${{ secrets.VERCEL_TEAM_ID }} | |
vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID_WING_PLAYGROUND }} | |
working-directory: apps/wing-playground/dist | |
github-comment: false | |
vercel-args: "--prod " | |
unit-tests: | |
name: "Unit Tests" | |
timeout-minutes: 30 | |
runs-on: ubuntu-latest | |
env: | |
# Testing runs out of memory without this | |
NODE_OPTIONS: "--max-old-space-size=4096" | |
CARGO_TERM_COLOR: always | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 1 | |
- name: Setup Node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- name: Setup NPM | |
run: npm install -g npm@${{ env.NPM_VERSION }} | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ env.RUST_VERSION }} | |
targets: | | |
x86_64-unknown-linux-gnu | |
wasm32-wasi | |
components: rustfmt,clippy,rust-std | |
- name: Setup Cargo Cache | |
uses: Swatinem/rust-cache@v2 | |
- name: Install Dependencies | |
uses: bahmutov/npm-install@v1 | |
- name: Test | |
run: npm run test:ci | |
benchmarks: | |
name: E2E Benchmarks | |
runs-on: ubuntu-latest | |
needs: | |
- build | |
env: | |
HANGAR_WING_SPEC: "file:${{ github.workspace }}/wing/winglang-${{ needs.build.outputs.version }}.tgz" | |
HANGAR_WINGCOMPILER_SPEC: "file:${{ github.workspace }}/wingcompiler/winglang-compiler-${{ needs.build.outputs.version }}.tgz" | |
HANGAR_WINGSDK_SPEC: "file:${{ github.workspace }}/wingsdk/winglang-sdk-${{ needs.build.outputs.version }}.tgz" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Download Build Artifacts | |
uses: actions/download-artifact@v2 | |
- name: Setup Node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- name: Setup NPM | |
run: npm install -g npm@${{ env.NPM_VERSION }} | |
- name: Install Dependencies | |
uses: bahmutov/npm-install@v1 | |
with: | |
working-directory: | | |
tools/hangar | |
examples/tests/valid | |
examples/tests/invalid | |
install-command: npm ci | |
- name: Run E2E Benchmarks | |
working-directory: tools/hangar | |
run: npm run bench | |
- name: Upload Report JSON | |
uses: actions/upload-artifact@v3 | |
with: | |
name: benchmarks | |
path: tools/hangar/results/report.json | |
- name: Create Markdown report | |
run: node scripts/benchmark_json_to_table.mjs | |
e2e: | |
name: "E2E / ${{ matrix.runner }} + Node${{ matrix.node }} [${{ matrix.shard }}]" | |
needs: | |
- build | |
strategy: | |
fail-fast: true | |
matrix: | |
runner: [windows, macos, ubuntu] | |
node: ["18", "20"] | |
shard: ["1/2", "2/2"] | |
full_run: | |
# Do a full run on push or when the PR is labeled "pr/e2e-full" | |
- ${{ github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, '🧪 pr/e2e-full') }} | |
exclude: | |
- runner: macos | |
full_run: false | |
- runner: windows | |
full_run: false | |
- runner: ubuntu | |
node: "20" | |
full_run: false | |
runs-on: "${{ matrix.runner }}-latest" | |
env: | |
HANGAR_WING_SPEC: "file:${{ github.workspace }}/wing/winglang-${{ needs.build.outputs.version }}.tgz" | |
HANGAR_WINGCOMPILER_SPEC: "file:${{ github.workspace }}/wingcompiler/winglang-compiler-${{ needs.build.outputs.version }}.tgz" | |
HANGAR_WINGSDK_SPEC: "file:${{ github.workspace }}/wingsdk/winglang-sdk-${{ needs.build.outputs.version }}.tgz" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Download Build Artifacts | |
uses: actions/download-artifact@v2 | |
- name: Setup Node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
- name: Install Dependencies | |
uses: bahmutov/npm-install@v1 | |
with: | |
working-directory: | | |
tools/hangar | |
examples/tests/valid | |
examples/tests/invalid | |
install-command: npm ci | |
- name: Run E2E Tests | |
working-directory: tools/hangar | |
run: | | |
npm run test:generate | |
npm run test -- --shard=${{ matrix.shard }} | |
quality-gate: | |
name: Quality Gate | |
runs-on: ubuntu-latest | |
needs: | |
- build | |
- e2e | |
- benchmarks | |
- unit-tests | |
steps: | |
- name: All good | |
run: echo "Builds and tests passed! 🎉🎉🎉" | |
publish: | |
name: Publish | |
if: ${{ github.event_name == 'push' && github.repository == 'winglang/wing' }} | |
needs: | |
- quality-gate | |
- build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download Build Artifacts | |
uses: actions/download-artifact@v2 | |
- name: Tag commit | |
uses: tvdias/[email protected] | |
if: ${{ needs.build.outputs.last-version != needs.build.outputs.version }} | |
with: | |
repo-token: "${{ secrets.PROJEN_GITHUB_TOKEN }}" | |
tag: "v${{ needs.build.outputs.version }}" | |
- name: Check published VSCode Version | |
id: vscode-version | |
run: echo "version=$(npx -y vsce show Monada.vscode-wing --json | jq '.versions[0].version' -r)" >> $GITHUB_OUTPUT | |
- name: Publish Extension to Visual Studio Marketplace | |
if: ${{ steps.vscode-version.outputs.version != needs.build.outputs.version }} | |
uses: "HaaLeo/publish-vscode-extension@v1" | |
with: | |
pat: ${{ secrets.VS_MARKETPLACE_TOKEN }} | |
registryUrl: "https://marketplace.visualstudio.com" | |
extensionFile: "vscode-wing/vscode-wing.vsix" | |
- name: Login to NPM registry | |
run: npm set //registry.npmjs.org/:_authToken ${{ secrets.NPM_PUBLISH_TOKEN }} | |
- name: Check published WingSDK version | |
id: wingsdk-version | |
run: echo "version=$(npm view @winglang/sdk version)" >> $GITHUB_OUTPUT | |
- name: Publish Wing SDK | |
if: ${{ steps.wingsdk-version.outputs.version != needs.build.outputs.version }} | |
working-directory: wingsdk | |
run: npm publish *.tgz --access public | |
- name: Check published Wing Compiler version | |
id: wingcompiler-version | |
run: echo "version=$(npm view @winglang/compiler version)" >> $GITHUB_OUTPUT | |
- name: Publish Wing Compiler | |
if: ${{ steps.wingcompiler-version.outputs.version != needs.build.outputs.version }} | |
working-directory: wingcompiler | |
run: npm publish *.tgz --access public | |
- name: Check published Wing Console Server version | |
id: wingconsoleserver-version | |
run: echo "version=$(npm view @wingconsole/server version)" >> $GITHUB_OUTPUT | |
- name: Publish Wing Console Server | |
if: ${{ steps.wingconsoleserver-version.outputs.version != needs.build.outputs.version }} | |
working-directory: wingconsoleserver | |
run: npm publish *.tgz --access public | |
- name: Check published Wing Console App version | |
id: wingconsoleapp-version | |
run: echo "version=$(npm view @wingconsole/app version)" >> $GITHUB_OUTPUT | |
- name: Publish Wing Console App | |
if: ${{ steps.wingconsoleapp-version.outputs.version != needs.build.outputs.version }} | |
working-directory: wingconsoleapp | |
run: npm publish *.tgz --access public | |
- name: Check published Wing version | |
id: wing-version | |
run: echo "version=$(npm view winglang version)" >> $GITHUB_OUTPUT | |
- name: Publish Wing | |
if: ${{ steps.wing-version.outputs.version != needs.build.outputs.version }} | |
working-directory: wing | |
run: npm publish *.tgz --access public | |
- name: Rename Docs | |
run: mv docs "docs-${{ needs.build.outputs.version }}.tgz" | |
- name: Write Changelog | |
uses: DamianReeves/[email protected] | |
with: | |
path: "CHANGELOG.md" | |
contents: ${{ needs.build.outputs.changelog }} | |
write-mode: overwrite | |
- name: Compute Checksums | |
run: | | |
mkdir dist | |
mv ./*/*.vsix ./dist | |
mv ./*/*.tgz ./dist | |
mv ./*/*.wasm ./dist | |
mv ./benchmarks/* ./dist | |
cd dist | |
echo '' >> ../CHANGELOG.md | |
echo '### SHA-1 Checksums' >> ../CHANGELOG.md | |
echo '```' >> ../CHANGELOG.md | |
sha1sum --binary * >> ../CHANGELOG.md | |
echo '```' >> ../CHANGELOG.md | |
cat ../CHANGELOG.md | |
- name: Cut Development Release | |
uses: softprops/action-gh-release@v1 | |
with: | |
name: "Wing ${{ needs.build.outputs.version }}" | |
tag_name: "v${{ needs.build.outputs.version }}" | |
body_path: CHANGELOG.md | |
files: dist/* | |
token: ${{ secrets.PROJEN_GITHUB_TOKEN }} |