diff --git a/.github/actions/publish/action.yml b/.github/actions/publish/action.yml new file mode 100644 index 0000000..e453bc5 --- /dev/null +++ b/.github/actions/publish/action.yml @@ -0,0 +1,18 @@ +name: Set Version And Publish + +inputs: + version: + required: true + token: + required: true + +runs: + using: "composite" + steps: + - name: Set Version + run: npm version "${{ inputs.version }}" --no-git-tag-version --no-commit-hooks + + - name: Publish + run: npm publish + env: + NODE_AUTH_TOKEN: ${{ inputs.token }} diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml new file mode 100644 index 0000000..c7dab83 --- /dev/null +++ b/.github/actions/setup/action.yml @@ -0,0 +1,32 @@ +name: Setup Runtime and Dependencies + +inputs: + token: + required: true + +runs: + using: "composite" + steps: + - name: Setup node 18 + uses: actions/setup-node@v3 + with: + node-version: '18' + registry-url: https://npm.pkg.github.com/ + scope: '@openphone' + + - name: Checkout + uses: actions/checkout@v3 + + - name: Cache dependencies + id: cache + uses: actions/cache@v3 + with: + path: ./node_modules + key: modules-${{ hashFiles('package-lock.json') }} + + - name: Run CI + if: steps.cache.outputs.cache-hit != 'true' + run: npm ci + shell: bash + env: + NODE_AUTH_TOKEN: ${{inputs.token}} diff --git a/.github/workflows/build-and-publish-typescript-project-client.yml b/.github/workflows/build-and-publish-typescript-project-client.yml new file mode 100644 index 0000000..1ed1853 --- /dev/null +++ b/.github/workflows/build-and-publish-typescript-project-client.yml @@ -0,0 +1,30 @@ +name: Build Client + +on: + workflow_call: + secrets: + token: + description: 'The GitHub/npm token' + required: true + +jobs: + getver: + uses: OpenPhone/gha/.github/workflows/getver.yml@v4 + + build-client: + name: Build and Publish Client + runs-on: ubuntu-22.04 + needs: getver + if: github.event_name == 'push' + defaults: + run: + working-directory: ./client + steps: + - name: Build + uses: OpenPhone/gha/.github/workflows/build-typescript-project-client.yml@v4 + + - name: Publish + uses: OpenPhone/gha/.github/actions/publish@v4 + with: + token: ${{ inputs.token }} + version: ${{ needs.getver.outputs.version }} diff --git a/.github/workflows/build-and-publish-typescript-project-types.yml b/.github/workflows/build-and-publish-typescript-project-types.yml new file mode 100644 index 0000000..49b1083 --- /dev/null +++ b/.github/workflows/build-and-publish-typescript-project-types.yml @@ -0,0 +1,30 @@ +name: Build Application + +on: + workflow_call: + secrets: + token: + description: 'The GitHub/npm token' + required: true + +jobs: + getver: + uses: OpenPhone/gha/.github/workflows/getver.yml@v4 + + build-types: + name: Build and Publish Types + runs-on: ubuntu-22.04 + needs: getver + if: github.event_name == 'push' + defaults: + run: + working-directory: ./types + steps: + - name: Build + uses: OpenPhone/gha/.github/workflows/build-typescript-project-types.yml@v4 + + - name: Publish + uses: OpenPhone/gha/.github/actions/publish@v4 + with: + token: ${{ inputs.token }} + version: ${{ needs.getver.outputs.version }} diff --git a/.github/workflows/build-and-publish-typescript-project.yml b/.github/workflows/build-and-publish-typescript-project.yml new file mode 100644 index 0000000..a69e86a --- /dev/null +++ b/.github/workflows/build-and-publish-typescript-project.yml @@ -0,0 +1,27 @@ +name: Build Application + +on: + workflow_call: + secrets: + token: + description: 'The GitHub/npm token' + required: true + +jobs: + getver: + uses: OpenPhone/gha/.github/workflows/getver.yml@v4 + + build: + name: Build and Publish Types + runs-on: ubuntu-22.04 + needs: getver + if: github.event_name == 'push' + steps: + - name: Build + uses: OpenPhone/gha/.github/workflows/build-typescript-project.yml@v4 + + - name: Publish + uses: OpenPhone/gha/.github/actions/publish@v4 + with: + token: ${{ inputs.token }} + version: ${{ needs.getver.outputs.version }} diff --git a/.github/workflows/build-typescript-project-client.yml b/.github/workflows/build-typescript-project-client.yml new file mode 100644 index 0000000..6af2bbc --- /dev/null +++ b/.github/workflows/build-typescript-project-client.yml @@ -0,0 +1,30 @@ +name: Build Client + +on: + workflow_call: + secrets: + token: + description: 'The GitHub/npm token' + required: true + +jobs: + build-client: + name: Build Client + runs-on: ubuntu-22.04 + defaults: + run: + working-directory: ./client + steps: + - name: Setup + uses: OpenPhone/gha/.github/actions/setup@v4 + with: + token: ${{ secrets.token }} + + - name: Lint + run: npm run lint + + - name: Build + run: npm run build + + - name: Test + run: npm node . diff --git a/.github/workflows/build-typescript-project-types.yml b/.github/workflows/build-typescript-project-types.yml new file mode 100644 index 0000000..0d39ace --- /dev/null +++ b/.github/workflows/build-typescript-project-types.yml @@ -0,0 +1,27 @@ +name: Build Types + +on: + workflow_call: + secrets: + token: + description: 'The GitHub/npm token' + required: true + +jobs: + build-types: + name: Build Types + runs-on: ubuntu-22.04 + defaults: + run: + working-directory: ./types + steps: + - name: Setup + uses: OpenPhone/gha/.github/actions/setup@v4 + with: + token: ${{ secrets.token }} + + - name: Build + run: npm run build + + - name: Test + run: npm node . diff --git a/.github/workflows/build-typescript-project.yml b/.github/workflows/build-typescript-project.yml new file mode 100644 index 0000000..0a7d5ad --- /dev/null +++ b/.github/workflows/build-typescript-project.yml @@ -0,0 +1,30 @@ +name: Build Application + +on: + workflow_call: + secrets: + token: + description: 'The GitHub/npm token' + required: true + +jobs: + build: + name: Build + runs-on: ubuntu-22.04 + steps: + - name: Setup + uses: OpenPhone/gha/.github/actions/setup@v4 + with: + token: ${{ secrets.token }} + + - name: Lint + run: npm run lint + + - name: Typecheck + run: npm run typecheck + + - name: Build + run: npm run build + + - name: Run + run: node . diff --git a/.github/workflows/getsha.yml b/.github/workflows/getsha.yml new file mode 100644 index 0000000..7fe4986 --- /dev/null +++ b/.github/workflows/getsha.yml @@ -0,0 +1,20 @@ +name: Get GitHub SHA + +on: + workflow_call: + outputs: + sha: + value: ${{ jobs.getsha.outputs.sha }} + +jobs: + getsha: + name: Get SHA + runs-on: ubuntu-22.04 + + outputs: + sha: ${{ steps.getsha.outputs.sha }} + + steps: + - id: getsha + shell: bash + run: echo "sha=${GITHUB_SHA::8}" >> $GITHUB_OUTPUT diff --git a/.github/workflows/getver.yml b/.github/workflows/getver.yml new file mode 100644 index 0000000..ea2210f --- /dev/null +++ b/.github/workflows/getver.yml @@ -0,0 +1,21 @@ +name: Get Version from Tag + +on: + workflow_call: + outputs: + version: + value: ${{ jobs.getver.outputs.version }} + +jobs: + getver: + name: Get Version + runs-on: ubuntu-22.04 + + outputs: + version: ${{ steps.vertag.outputs.version }} + + steps: + - id: vertag + shell: bash + if: startsWith(github.ref, 'refs/tags/v') + run: echo "version=${GITHUB_REF/refs\/tags\/v/}" >> $GITHUB_OUTPUT