diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index deff2924f2e..4153bbd1478 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -209,82 +209,82 @@ 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"] - # 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/action-setup@v2.2.4 - # with: - # version: ${{ env.PNPM_VERSION }} - - # - name: Setup Node - # uses: actions/setup-node@v3 - # with: - # cache: "pnpm" - # node-version: ${{ matrix.node }} - - # - name: Download Dist Artifacts - # uses: actions/download-artifact@v3 - # with: - # name: dist - # path: dist - - # - name: Install dependencies - # run: pnpm install --frozen-lockfile --ignore-scripts --filter hangar --filter examples-valid --filter examples-invalid - - # - 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 }} + 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: Setup pnpm + uses: pnpm/action-setup@v2.2.4 + with: + version: ${{ env.PNPM_VERSION }} + + - name: Setup Node + uses: actions/setup-node@v3 + with: + cache: "pnpm" + node-version: ${{ matrix.node }} + + - name: Download Dist Artifacts + uses: actions/download-artifact@v3 + with: + name: dist + path: dist + + - name: Install dependencies + run: pnpm install --frozen-lockfile --ignore-scripts --filter hangar --filter examples-valid --filter examples-invalid + + - 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 @@ -313,7 +313,7 @@ jobs: publish: name: Publish - # if: ${{ github.event_name == 'push' && github.repository == 'winglang/wing' && github.ref == 'refs/heads/main' }} + if: ${{ github.event_name == 'push' && github.repository == 'winglang/wing' && github.ref == 'refs/heads/main' }} needs: - quality-gate - build @@ -322,36 +322,29 @@ jobs: - name: Download Build Artifacts uses: actions/download-artifact@v3 - # - name: Tag commit - # uses: tvdias/github-tagger@v0.0.1 - # 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/github-tagger@v0.0.1 + 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 }} + 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" + npm publish "$file" --access public done working-directory: dist @@ -379,11 +372,11 @@ jobs: 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: 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 }}