Skip to content

Workflow file for this run

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 }}"