ci: migrates from hub to gh CLI #124 #138
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: 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 }} |