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: Publish Release Teraslice NPM Packages and Docker Image | |
on: | |
release: | |
types: [published] | |
jobs: | |
build-release: | |
runs-on: ubuntu-latest | |
outputs: | |
teraslice_version: ${{ steps.teraslice-version.outputs.teraslice_version }} | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
steps: | |
- name: Register npm token | |
run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc | |
- name: Verify npm authentication | |
run: npm whoami | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Retrieve Teraslice version | |
id: teraslice-version | |
run: | | |
TERASLICE_VERSION=$(jq -r .version package.json) | |
echo "teraslice_version=$TERASLICE_VERSION" >> $GITHUB_OUTPUT | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 22 | |
registry-url: 'https://registry.npmjs.org' | |
cache: 'yarn' | |
- name: Install and build packages | |
run: yarn && yarn setup | |
- name: Verify npm authentication within yarn | |
env: | |
CI_NPM_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
run: yarn npm whoami | |
- name: Publish to npm | |
env: | |
CI_NPM_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
run: yarn ts-scripts publish -t tag npm | |
docker-build-publish: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [18, 22] | |
steps: | |
# we login to docker to publish new teraslice image | |
- name: Login to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Setup Node ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: 'yarn' | |
- name: Install and build packages | |
run: yarn && yarn setup | |
- name: Publish to docker | |
run: yarn ts-scripts publish -t tag -n ${{ matrix.node-version }} docker | |
slack-announcement: | |
needs: [build-release, docker-build-publish] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Announce release in Slack releases channel | |
id: announce-release | |
uses: slackapi/[email protected] | |
with: | |
method: chat.postMessage | |
token: ${{ secrets.SLACK_BOT_TOKEN }} | |
payload: | | |
channel: ${{ vars.SLACK_RELEASES_CHANNEL_ID }} | |
text: | | |
Teraslice version `v${{ needs.build-release.outputs.teraslice_version }}` has been released. | |
Please review and revise the automated release notes: | |
https://github.com/terascope/teraslice/releases/tag/v${{ needs.build-release.outputs.teraslice_version }} | |
NPM release: https://www.npmjs.com/package/teraslice/v/${{ needs.build-release.outputs.teraslice_version }} | |
Docker images: https://github.com/terascope/teraslice/pkgs/container/teraslice | |
- name: Failed Announcement Response | |
if: ${{ steps.announce-release.outputs.ok == 'false' }} | |
run: echo "Slackbot API failure response - ${{ steps.announce-release.outputs.response }}" |