[workspace] Improve slack release message #347
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 Teraslice NPM Packages, Documents and Docker Image, Create Release | |
on: | |
pull_request: | |
branches: | |
- master | |
types: | |
- closed | |
jobs: | |
build-release: | |
if: github.event.pull_request.merged == true | |
runs-on: ubuntu-latest | |
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 | |
# 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 | |
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 latest npm | |
- name: Publish to docker | |
run: yarn ts-scripts publish -t dev docker | |
create-release-on-teraslice-bump: | |
if: github.event.pull_request.merged == true | |
runs-on: ubuntu-latest | |
needs: build-release | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Install semver-compare-cli | |
run: yarn && yarn add semver-compare-cli | |
- name: Check for teraslice version update | |
id: version_check | |
run: | | |
CURRENT_VERSION=$(jq -r .version package.json) | |
echo "current version:" $CURRENT_VERSION | |
NPM_VERSION=$(yarn npm info teraslice --json | jq -r '.["dist-tags"].latest') | |
echo "npm version:" $NPM_VERSION | |
if ./node_modules/.bin/semver-compare $CURRENT_VERSION gt $NPM_VERSION; then | |
echo "Teraslice version updated from $NPM_VERSION to $CURRENT_VERSION, creating release" | |
echo "version_updated=true" >> $GITHUB_OUTPUT | |
echo "tag: v$CURRENT_VERSION" | |
echo "tag=v$CURRENT_VERSION" >> $GITHUB_OUTPUT | |
else | |
echo "Teraslice version not updated, will not release" | |
echo "version_updated=false" >> $GITHUB_OUTPUT | |
fi | |
- name: Generate a token | |
if: steps.version_check.outputs.version_updated == 'true' | |
id: generate-token | |
uses: actions/create-github-app-token@v1 | |
with: | |
app-id: ${{ vars.RELEASES_APP_ID }} | |
private-key: ${{ secrets.RELEASES_PRIVATE_KEY }} | |
- name: Create Release | |
if: steps.version_check.outputs.version_updated == 'true' | |
uses: softprops/action-gh-release@v2 | |
with: | |
token: ${{ steps.generate-token.outputs.token }} | |
prerelease: true | |
tag_name: ${{ steps.version_check.outputs.tag }} | |
name: ${{ steps.version_check.outputs.tag }} | |
generate_release_notes: true | |
build-docs: | |
if: github.event.pull_request.merged == true | |
runs-on: ubuntu-latest | |
needs: build-release | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 22 | |
registry-url: 'https://registry.npmjs.org' | |
cache: 'yarn' | |
- name: Build documentation | |
run: yarn && ./scripts/build-documentation.sh # output in website/build | |
- name: Check Output | |
run: find ./website/build | |
- name: Upload artifact | |
uses: actions/upload-pages-artifact@v3 | |
with: | |
path: ./website/build | |
publish-docs: | |
if: github.event.pull_request.merged == true | |
runs-on: ubuntu-latest | |
needs: build-docs | |
permissions: | |
pages: write # to deploy to Pages | |
id-token: write | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
steps: | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v4 |