Skip to content

build: publish beta package when building pull request #817

build: publish beta package when building pull request

build: publish beta package when building pull request #817

Workflow file for this run

---
name: CI
on:
pull_request:
branches:
- main
paths-ignore:
- "**.md"
- "img/**"
# Manage concurrency to stop running jobs and start new ones in case of new commit pushed
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
commit-lint:
runs-on: ubuntu-latest
if: ${{ github.event.pull_request.head.repo.full_name == github.repository }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 18
- name: Setup dependencies, cache and install
uses: ./.github/actions/install
- name: Lint commits
uses: wagoid/commitlint-github-action@v5
env:
NODE_PATH: ${{ github.workspace }}/node_modules
continue-on-error: true
pull-request-lint:
runs-on: ubuntu-latest
steps:
- name: Lint PR
uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ github.token }}
npm-lint:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 18
- name: Setup dependencies, cache and install
uses: ./.github/actions/install
- name: Check outdated dependencies
run: npm outdated
- name: Check unused dependencies
run: yarn lint:dependencies
- name: Audit dependencies
run: yarn npm audit
megalinter:
runs-on: ubuntu-latest
steps:
# Git Checkout
- name: Checkout Code
uses: actions/checkout@v4
# MegaLinter
- name: MegaLinter
# You can override MegaLinter flavor used to have faster performances
# More info at https://megalinter.io/latest/flavors/
uses: oxsecurity/megalinter/flavors/javascript@v7
env:
# All available variables are described in documentation
# https://megalinter.io/latest/config-file/
APPLY_FIXES: all
VALIDATE_ALL_CODEBASE: true
# ADD CUSTOM ENV VARIABLES HERE TO OVERRIDE VALUES OF .mega-linter.yml AT THE ROOT OF YOUR REPOSITORY
- uses: actions/upload-artifact@v4
if: always()
with:
name: megalinter-reports
path: |
megalinter-reports
mega-linter.log
build:
uses: ./.github/workflows/reusable-build.yml
secrets: inherit
publish-beta:
needs: [build]
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 18
registry-url: 'https://registry.npmjs.org'
- name: Setup dependencies, cache and install
uses: ./.github/actions/install
- uses: jwalton/gh-find-current-pr@master
id: pr-number
- name: Set beta channel value
run: |
echo "BETA_CHANNEL=beta-${{ steps.pr-number.outputs.pr }}" >> "$GITHUB_ENV"
- name: Setup Vals
run: |
git config --global user.email "[email protected]"
git config --global user.name "$BETA_CHANNEL"
- name: Publish $BETA_CHANNEL channel
run: |
CURRENT_VERSION=$(cat package.json | jq -r '.version')
BETA_TAG=$BETA_CHANNEL-${{ github.run_id }}-${{github.run_attempt}}
npm version "$CURRENT_VERSION-$BETA_TAG"
yarn npm publish --access public --tag $BETA_CHANNEL
env:
YARN_NPM_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
- name: Write a comment that will be deleted at the end of the job
uses: thollander/actions-comment-pull-request@v2
with:
message: |
Published under this [`$BETA_CHANNEL`](https://www.npmjs.com/package/sfdx-git-delta/v/$BETA_CHANNEL) channel.
To install it:
```sh
$ sfdx plugins:install sfdx-git-delta@$BETA_CHANNEL
```
Happy QA!
comment_tag: beta-publish
mode: recreate
e2e-check:
needs: [build]
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-latest]
node: [18, 20]
cli: [sfdx-cli, '@salesforce/cli']
runs-on: ${{ matrix.os }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "yarn-cache=$(yarn config get cacheFolder)" >> "$GITHUB_OUTPUT"
shell: bash
- uses: actions/cache@v4
with:
path: ${{ steps.yarn-cache-dir-path.outputs.yarn-cache }}
key: ${{ runner.os }}-${{ matrix.node }}-yarn-${{ hashFiles('**/yarn.lock') }}
- name: Install dependencies
run: yarn install --immutable --check-cache
- name: Build plugin
run: yarn pack
- name: Install cli
run: npm install -g ${{matrix.cli}}
- name: Install plugin
run: |
yarn set version classic
sfdx plugins:link .
sfdx plugins
- name: Checkout e2e test subject
uses: actions/checkout@v4
with:
ref: 'e2e/head'
fetch-depth: 0
path: ./e2e
- name: E2E Tests
working-directory: ./e2e
run: |
yarn
yarn test:e2e