Skip to content

ci: migrates from hub to gh CLI #124 #138

ci: migrates from hub to gh CLI #124

ci: migrates from hub to gh CLI #124 #138

Workflow file for this run

name: Merge to main
on:
push:
branches:
- main
release:
types: [created]
env:
GIT_USER: 'GitHub Actions'
GIT_EMAIL: 'github-actions[bot]@users.noreply.github.com'
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
jobs:
build:
runs-on: ${{ matrix.os }}
if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }}
strategy:
matrix:
os: [windows-latest, macos-latest, ubuntu-latest]
node-version: [16, 18, 20]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Install Python setup tools
run: pip install setuptools
- name: Set git credentials
run: |
git config --global user.email ${{ env.GIT_USER }}
git config --global user.name ${{ env.GIT_EMAIL }}
- name: Install dependencies
run: yarn
- name: Create initial release
run: yarn release
- name: Build binaries
run: yarn build
- name: Run tests
run: yarn test
- name: Report coverage
run: yarn codecov
- name: Upload js bundle
uses: actions/upload-artifact@v2
with:
name: js-bundle
path: dist
- name: Upload binary artifact
uses: actions/upload-artifact@v2
with:
name: binary-artifact
path: build/stage
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
persist-credentials: false
- name: Pull latest
run: git pull origin main
- name: Install Vuepress
run: yarn add vuepress@next -D
- name: Build documentation
run: yarn docs:build
- name: Create CNAME Record
run: echo "symbology.dev" > build/docs/CNAME
- name: Deploy to GitHub Pages
uses: JamesIves/github-pages-deploy-action@3.7.1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GIT_CONFIG_NAME: ${{ env.GIT_USER }}
GIT_CONFIG_EMAIL: ${{ env.GIT_EMAIL }}
BRANCH: gh-pages
FOLDER: build/docs
CLEAN: true
release:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: TriPSs/conventional-changelog-action@v3
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
git-user-name: ${{ env.GIT_USER }}
git-user-email: ${{ env.GIT_EMAIL }}
tag-prefix: 'v'
release-count: '0'
skip-on-empty: false
upload-binaries:
needs: release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Download binary artifacts
uses: actions/download-artifact@v2
with:
name: binary-artifact
path: build/stage
- name: Upload binary artifacts to release
# only one folder will be present in build/stage, which is named the new version number
# extract this name and set it as the release name, then upload artifact binaries to it
run: |
set -x
assets=()
for asset in ./build/stage/**/*; do
assets+=("$asset")
done
RELEASE_VERSION=$(echo $(ls build/stage| head -1))
gh release create -t "v$RELEASE_VERSION" "$RELEASE_VERSION" "${assets[@]}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
publish-npm:
needs: release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Pull latest
run: git pull origin main
- name: Download js bundle
uses: actions/download-artifact@v2
with:
name: js-bundle
path: dist
- uses: actions/setup-node@v1
with:
node-version: 20
registry-url: https://registry.npmjs.org/
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}