Skip to content
This repository has been archived by the owner on Oct 10, 2024. It is now read-only.

Build and Publish

Build and Publish #92

Workflow file for this run

name: Build and Publish
on:
push:
branches: ["main"]
# We only deploy on tags and main branch
tags:
# Only run on tags that match the following regex
# This will match tags like 1.0.0, 1.0.1, etc.
- "[0-9]+.[0-9]+.[0-9]+"
# Build on pull requests
pull_request:
jobs:
lint_and_test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20]
steps:
# Checkout the repository
- name: Checkout
uses: actions/checkout@v4
# Set node version
- name: set node version
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
# Install Build stuff
- name: Install Dependencies
run: |
npm install
# Eslint
- name: ESlint check
run: |
npm run lint
# Run tests
- name: Run tests
run: |
npm run test
publish:
needs: lint_and_test
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags')
steps:
# Checkout the repository
- name: Checkout
uses: actions/checkout@v4
# Set node version
- name: set node version
uses: actions/setup-node@v4
with:
node-version: 18
# Publish module
- name: Publish
run: |
echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" >> .npmrc
npm version ${{ github.ref_name }}
sed -i 's/VERSION = '\''0.0.1'\''/VERSION = '\''${{ github.ref_name }}'\''/g' src/client.js
npm publish
create_pr_on_public:
if: startsWith(github.ref, 'refs/tags')
runs-on: ubuntu-latest
needs: lint_and_test
steps:
- name: Checkout
uses: actions/checkout@v4
with:
token: ${{ secrets.PUBLIC_CLIENT_WRITE_TOKEN }}
- name: Pull public updates
env: # We cannot use the github bot token to push to the public repo, we have to use one with more permissions
GITHUB_TOKEN: ${{ secrets.PUBLIC_CLIENT_WRITE_TOKEN }}
run: |
set -x
git config --global user.name "GitHub Actions"
git config --global user.email "[email protected]"
git remote add public https://github.com/mistralai/client-js.git
git remote update
# Create a diff of the changes, ignoring the ci workflow
git merge public/main --no-commit --no-ff --no-edit --allow-unrelated-histories --strategy-option ours
# If there are changes, commit them
if ! git diff --quiet; then
git commit -m "Update from public repo"
git push origin ${{github.ref}}
else
echo "No changes to apply"
fi
- name: Push to public repo
env:
GITHUB_TOKEN: ${{ secrets.PUBLIC_CLIENT_WRITE_TOKEN }}
run: |
git checkout public/main
git checkout -b update/${{github.ref_name}}
# write version number to version file
echo ${{github.ref_name}} > version.txt
git add .
git commit -m "Bump version file"
# create a diff of this ref and the public repo
git diff update/${{github.ref_name}} ${{github.ref_name}} --binary -- . ':!.github' > changes.diff
# apply the diff to the current branch
git apply changes.diff
# commit the changes
git add .
git commit -m "Update version to ${{github.ref_name}}"
# push the changes
git push public update/${{github.ref_name}}
# Create a PR from this branch to the public repo
gh pr create --title "Update client to ${{github.ref_name}}" --body "This PR was automatically created by a GitHub Action" --base main --head update/${{github.ref_name}} --repo mistralai/client-js