diff --git a/.github/workflows/manual-publish.yml b/.github/workflows/manual-publish.yml new file mode 100644 index 000000000..f5e02f21e --- /dev/null +++ b/.github/workflows/manual-publish.yml @@ -0,0 +1,72 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: Manual Publish Release + +on: + workflow_dispatch: + +jobs: + release: + name: Publish Release + runs-on: ubuntu-latest + permissions: write-all + steps: + - name: Checkout Repo + uses: actions/checkout@master + with: + # This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits + fetch-depth: 0 + + - name: Setup Node.js 18 + uses: actions/setup-node@master + with: + node-version: 18 + + - name: Install Dependencies & build + run: npm install && npm run build + + - name: Create .npmrc + run: | + cat << EOF > "$HOME/.npmrc" + @google:registry=https://wombat-dressing-room.appspot.com + //wombat-dressing-room.appspot.com/:_authToken=$NPM_TOKEN + EOF + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + + - name: Set up user info for git committing + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + + - name: NPM publish + run: npx @changesets/cli publish + + - name: Git tags + # list tags then try to push them + run: | + git for-each-ref refs/tags + git push --follow-tags + + - name: Create Github release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + NEWEST_TAG=$(git describe --tags --abbrev=0) + gh release create "$NEWEST_TAG" \ + --repo="$GITHUB_REPOSITORY" \ + --title="$NEWEST_TAG" \ + --generate-notes \ + --verify-tag