Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
skyrpex committed Jul 19, 2023
1 parent 83613cf commit dcb0f81
Showing 1 changed file with 152 additions and 200 deletions.
352 changes: 152 additions & 200 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,12 +81,18 @@ jobs:
env:
SEGMENT_WRITE_KEY: ${{ secrets.SEGMENT_WRITE_KEY }}

- name: Upload Dist Artifacts
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: dist
path: dist/*.tgz

- name: Upload WingC WASM
uses: actions/upload-artifact@v3
with:
name: wingc
path: libs/wingcompiler/wingc.wasm

- name: Check git diff of VSCode Extension
id: git-diff-vscode-wing
run: |
Expand Down Expand Up @@ -203,92 +209,89 @@ jobs:
- name: Create Markdown report
run: node scripts/benchmark_json_to_table.mjs

e2e-test:
name: "E2E / ${{ matrix.runner }} + Node${{ matrix.node }} [${{ matrix.shard }}]"
runs-on: "${{ matrix.runner }}-latest"
needs:
- build
strategy:
fail-fast: true
matrix:
runner: [windows, macos, ubuntu]
node: ["18", "20"]
shard: ["1/2", "2/2"]
# shard: ["1/4", "2/4", "3/4", "4/4"]
# shard: ["1/3", "2/3", "3/3"]
# shard: ["1/8", "2/8", "3/8", "4/8", "5/8", "6/8", "7/8", "8/8"]
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
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 1

- name: Setup pnpm
uses: pnpm/[email protected]
with:
version: ${{ env.PNPM_VERSION }}

- name: Setup Node
uses: actions/setup-node@v3
with:
cache: "pnpm"
node-version: ${{ matrix.node }}
# e2e-test:
# name: "E2E / ${{ matrix.runner }} + Node${{ matrix.node }} [${{ matrix.shard }}]"
# runs-on: "${{ matrix.runner }}-latest"
# 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
# steps:
# - name: Checkout
# uses: actions/checkout@v3
# with:
# fetch-depth: 1

- name: Download Dist Artifacts
uses: actions/download-artifact@v3
with:
name: dist
path: dist
# - name: Setup pnpm
# uses: pnpm/[email protected]
# with:
# version: ${{ env.PNPM_VERSION }}

- name: Install dependencies
run: pnpm install --frozen-lockfile --ignore-scripts --filter hangar --filter examples-valid --filter examples-invalid
# - name: Setup Node
# uses: actions/setup-node@v3
# with:
# cache: "pnpm"
# node-version: ${{ matrix.node }}

- name: Run Hangar Tests
working-directory: tools/hangar
run: |
pnpm test:generate
pnpm run test --shard=${{ matrix.shard }} --update=${{ matrix.runner == 'ubuntu' && matrix.node == '18' }}
# - name: Download Dist Artifacts
# uses: actions/download-artifact@v3
# with:
# name: dist
# path: dist

- name: Create mutation if needed
# we only care about the diff in our standard dev env
if: matrix.runner == 'ubuntu' && matrix.node == '18'
id: diff
env:
RAW_SHARD: ${{ matrix.shard }}
run: |
SHARD=$(echo $RAW_SHARD | sed 's/\//of/g')
DIFF_NAME="e2e-$SHARD.diff"
git add --all
git diff --staged --binary --patch > $DIFF_NAME
if [ -s $DIFF_NAME ]; then
echo "diff=true" >> $GITHUB_OUTPUT
echo "diff_name=$DIFF_NAME" >> $GITHUB_OUTPUT
fi
# - name: Install dependencies
# run: pnpm install --frozen-lockfile --ignore-scripts --filter hangar --filter examples-valid --filter examples-invalid

- name: Upload mutation
if: matrix.runner == 'ubuntu' && matrix.node == '18' && steps.diff.outputs.diff == 'true'
uses: actions/upload-artifact@v3
with:
name: ${{ steps.diff.outputs.diff_name }}
path: ${{ steps.diff.outputs.diff_name }}
# - name: Run Hangar Tests
# working-directory: tools/hangar
# run: |
# pnpm test:generate
# pnpm run test --shard=${{ matrix.shard }} --update=${{ matrix.runner == 'ubuntu' && matrix.node == '18' }}

# - name: Create mutation if needed
# # we only care about the diff in our standard dev env
# if: matrix.runner == 'ubuntu' && matrix.node == '18'
# id: diff
# env:
# RAW_SHARD: ${{ matrix.shard }}
# run: |
# SHARD=$(echo $RAW_SHARD | sed 's/\//of/g')
# DIFF_NAME="e2e-$SHARD.diff"
# git add --all
# git diff --staged --binary --patch > $DIFF_NAME
# if [ -s $DIFF_NAME ]; then
# echo "diff=true" >> $GITHUB_OUTPUT
# echo "diff_name=$DIFF_NAME" >> $GITHUB_OUTPUT
# fi

# - name: Upload mutation
# if: matrix.runner == 'ubuntu' && matrix.node == '18' && steps.diff.outputs.diff == 'true'
# uses: actions/upload-artifact@v3
# with:
# name: ${{ steps.diff.outputs.diff_name }}
# path: ${{ steps.diff.outputs.diff_name }}

quality-gate:
name: Quality Gate
runs-on: ubuntu-latest
needs:
- build
- e2e-test
# - e2e-test
- benchmark
- test
steps:
Expand All @@ -308,130 +311,79 @@ jobs:
- name: All good
run: echo "Builds and tests passed! 🎉🎉🎉"

# publish:
# name: Publish
# if: ${{ github.event_name == 'push' && github.repository == 'winglang/wing' && github.ref == 'refs/heads/main' }}
# needs:
# - quality-gate
# - build
# runs-on: ubuntu-latest
# steps:
# - name: Download Build Artifacts
# uses: actions/download-artifact@v3
publish:
name: Publish
# if: ${{ github.event_name == 'push' && github.repository == 'winglang/wing' && github.ref == 'refs/heads/main' }}
needs:
- quality-gate
- build
runs-on: ubuntu-latest
steps:
- name: Download Build Artifacts
uses: actions/download-artifact@v3

# - 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: 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: Publish Extension to Visual Studio Marketplace
if: needs.build.outputs.vscode-wing-changed == 'true'
run: echo "Publishing VSCode Extension"
# - name: Publish Extension to Visual Studio Marketplace
# if: needs.build.outputs.vscode-wing-changed == 'true'
# uses: "HaaLeo/publish-vscode-extension@v1"
# with:
# pat: ${{ secrets.VS_MARKETPLACE_TOKEN }}
# registryUrl: "https://marketplace.visualstudio.com"
# extensionFile: "vscode-wing/vscode-wing.vsix"
# dependencies: false

# - name: Login to NPM registry
# run: npm set //registry.npmjs.org/:_authToken ${{ secrets.NPM_PUBLISH_TOKEN }}

- name: Publish npm packages
# run: |
# for file in *.tgz; do
# npm publish "$file" --access public
# done
run: |
for file in *.tgz; do
echo "publish $file"
done
working-directory: dist

# - name: Publish Extension to Visual Studio Marketplace
# if: needs.build.outputs.vscode-wing-changed == 'true'
# uses: "HaaLeo/publish-vscode-extension@v1"
# with:
# pat: ${{ secrets.VS_MARKETPLACE_TOKEN }}
# registryUrl: "https://marketplace.visualstudio.com"
# extensionFile: "vscode-wing/vscode-wing.vsix"
# dependencies: false

# - 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 Design System version
# id: wingconsoledesignsystem-version
# run: echo "version=$(npm view @wingconsole/design-system version)" >> $GITHUB_OUTPUT

# - name: Publish Wing Console Design System
# if: ${{ steps.wingconsoledesignsystem-version.outputs.version != needs.build.outputs.version }}
# working-directory: wingconsoledesignsystem
# run: npm publish *.tgz --access public

# - name: Check published Wing Console UI version
# id: wingconsoleui-version
# run: echo "version=$(npm view @wingconsole/ui version)" >> $GITHUB_OUTPUT

# - name: Publish Wing Console UI
# if: ${{ steps.wingconsoleui-version.outputs.version != needs.build.outputs.version }}
# working-directory: wingconsoleui
# 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: Rename Docs
run: mv docs "docs-${{ needs.build.outputs.version }}.tgz"

# - 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 }}
- name: Write Changelog
uses: DamianReeves/[email protected]
with:
path: "CHANGELOG.md"
contents: ${{ needs.build.outputs.changelog }}
write-mode: overwrite

- name: Compute Checksums
run: |
mv ./*/*.vsix ./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 }}

0 comments on commit dcb0f81

Please sign in to comment.