From 81b51b6faf4fd31d0166fc142bd171f78a26759f Mon Sep 17 00:00:00 2001 From: Maxim Schram <maxim@skripted.io> Date: Wed, 4 Oct 2023 13:38:52 -0400 Subject: [PATCH] ci: rebase CCI to GHA migration --- .github/workflows/ci-cd.yml | 87 +++++++++++++++++++++++++++++++++++++ .gitignore | 3 ++ .nvmrc | 1 + 3 files changed, 91 insertions(+) create mode 100644 .github/workflows/ci-cd.yml create mode 100644 .nvmrc diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml new file mode 100644 index 00000000..d7bad9c2 --- /dev/null +++ b/.github/workflows/ci-cd.yml @@ -0,0 +1,87 @@ +name: CI/CD + +on: + workflow_dispatch: # Allows you to run this workflow manually from the Actions tab + pull_request: # Runs whenever a pull request is created or updated + push: # Runs whenever a commit is pushed to the repository + branches: [master, develop, hotfix/*] + +concurrency: + group: "${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}" + cancel-in-progress: true + +permissions: + contents: write # publish a GitHub release + pages: write # deploy to GitHub Pages + issues: write # comment on released issues + pull-requests: write # comment on released pull requests + +jobs: + ci-cd: + runs-on: ubuntu-latest + env: + TRIGGER_DEPLOY: ${{ startsWith(github.ref, 'refs/heads/master') || startsWith(github.ref, 'refs/heads/hotfix') || startsWith(github.ref, 'refs/heads/develop') || startsWith(github.ref, 'refs/heads/beta') }} + steps: + - uses: actions/checkout@v4 + - uses: wagoid/commitlint-github-action@v5 + if: github.event_name == 'pull_request' + - uses: actions/setup-node@v3 + with: + cache: "npm" + node-version-file: ".nvmrc" + + - name: Info + run: | + cat <<EOF + Node version: $(node --version) + NPM version: $(npm --version) + GitHub ref: ${{ github.ref }} + GitHub head ref: ${{ github.head_ref }} + EOF + + - name: Install dependencies + run: npm ci + + - name: Install Playwright browsers + run: npx playwright install-deps + + - name: Setup & Test + run: | + mkdir -p ./test/results + npm test + + - name: Generate release version + run: | + export RELEASE_TIMESTAMP=$(date +'%Y%m%d%H%M%S') + export VPKG=$($(npm bin)/json -f package.json version) + export VERSION=${VPKG}-prerelease.${RELEASE_TIMESTAMP} + + echo "RELEASE_VERSION=${VERSION}" >> $GITHUB_ENV + + if [[ "${GITHUB_REF##*/}" == hotfix/* ]]; then + echo "NPM_TAG=hotfix" >> $GITHUB_ENV + else + echo "NPM_TAG=latest" >> $GITHUB_ENV + fi + + - name: Build + run: | + npm run build + npm --no-git-tag-version version $VERSION + + - name: Deploy to NPM (do a dry-run if not on master, develop, or hotfix/*) + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + NPM_TAG: ${{ env.NPM_TAG }} + run: | + message=$([[ "$TRIGGER_DEPLOY" == "false" ]] && echo "DRY RUN of" || echo "Deploying") + echo "$message version $RELEASE_VERSION to $NPM_TAG" + npm set //registry.npmjs.org/:_authToken=$NPM_TOKEN + npm publish --tag $NPM_TAG $([[ "$TRIGGER_DEPLOY" == "false" ]] && echo "--dry-run") + + - name: Check Release Version and Create Tag + run: | + if npm info | grep -q $RELEASE_VERSION; then + git tag $RELEASE_VERSION + git push origin $RELEASE_VERSION + fi diff --git a/.gitignore b/.gitignore index 2f382587..52d1b83a 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,6 @@ npm-* # Build /dist /playground + +# Act +.secrets \ No newline at end of file diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..6f7f377b --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v16