Skip to content

Commit

Permalink
feat: implement release-please release workflow (#442)
Browse files Browse the repository at this point in the history
  • Loading branch information
scolladon committed Feb 14, 2023
1 parent fcf9e02 commit d79891b
Show file tree
Hide file tree
Showing 17 changed files with 669 additions and 2,004 deletions.
32 changes: 32 additions & 0 deletions .github/actions/install/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Install
description: Install dependencies

inputs:
prod-context:
required: false
description: drive installation mode
default: false

runs:
using: composite
steps:
- name: Cache prep
id: yarn-cache-dir-path
run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
shell: bash

- name: Cache yarn
uses: actions/cache@v3
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: cache-${{ inputs.node-version }}-${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}

- name: Install dependencies in production mode
if: ${{ inputs.prod-context == 'true' }}
run: yarn install --immutable --immutable-cache --check-cache --frozen-lockfile --prod
shell: bash

- name: Install dependencies in integration mode
if: ${{ inputs.prod-context == 'false' }}
run: yarn install --immutable --immutable-cache --check-cache --frozen-lockfile
shell: bash
9 changes: 7 additions & 2 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
versioning-strategy: increase

- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
interval: "daily"
versioning-strategy: increase
commit-message:
prefix: "build"
Expand Down
45 changes: 0 additions & 45 deletions .github/workflows/main.yml

This file was deleted.

31 changes: 31 additions & 0 deletions .github/workflows/manual-deprecate-versions.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Deprecate versions

on:
workflow_dispatch:
inputs:
version-expression:
description: version number (semver format) or range to deprecate
required: true
type: string
rationale:
description: explain why this version is deprecated. No message content will un-deprecate the version
type: string


jobs:
deprecate:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3

- name: Setup node
uses: actions/setup-node@v3
with:
node-version: 16
registry-url: https://registry.npmjs.org/

- name: Change version
run: npm deprecate sfdx-git-delta@$"${{ github.event.inputs.version-expression }}" "${{ github.event.inputs.rationale }}"
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Manage Versions
name: Manage versions

on:
workflow_dispatch:
Expand All @@ -23,14 +23,14 @@ jobs:
steps:
- name: Checkout sources
uses: actions/checkout@v3

- name: Setup node
uses: actions/setup-node@v3
with:
node-version: 14.x
node-version: 16
registry-url: https://registry.npmjs.org/

- name: Change version
run: npm dist-tag add "sfdx-git-delta@${{ github.event.inputs.version-number }}" "${{ github.event.inputs.version-alias }}"
run: npm dist-tag add sfdx-git-delta@${{ github.event.inputs.version-number }} ${{ github.event.inputs.version-alias }}
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
61 changes: 61 additions & 0 deletions .github/workflows/on-main-push.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Main

on:
push:
branches:
- main
paths-ignore:
- "**.md"
- "img/**"

jobs:
build:
uses: ./.github/workflows/reusable-build.yml
secrets: inherit

prepare-release:
needs: build
runs-on: ubuntu-latest
outputs:
release_created: ${{ steps.release.outputs.release_created }}
steps:
- uses: google-github-actions/release-please-action@v3
id: release
with:
release-type: node
package-name: sfdx-git-delta
token: ${{ secrets.RELEASE_PAT }}

release:
needs: prepare-release
runs-on: ubuntu-latest
if: ${{ needs.prepare-release.outputs.release_created == 'true' }}
steps:
- name: Checkout sources
uses: actions/checkout@v3

- name: Setup node
uses: actions/setup-node@v3
with:
node-version: 16
registry-url: https://registry.npmjs.org/

- name: Publish to npm
run: yarn publish --access public --tag "latest-rc"
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}

test-release:
needs: release
runs-on: ubuntu-latest
steps:
- name: Install sfdx-cli
run: npm install -g sfdx-cli

- name: Install new plugin version
run: echo y | sfdx plugins:install "sfdx-git-delta@latest-rc"

- name: Test new plugin version
run: sfdx sgd:source:delta --help


15 changes: 15 additions & 0 deletions .github/workflows/on-published-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: Published release communication

on:
release:
types:
- published

jobs:
release:
steps:
- uses: apexskier/github-release-commenter@v1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
comment-template: |
Shipped in [release \`{release_tag}\`]({release_link}).
Original file line number Diff line number Diff line change
Expand Up @@ -4,60 +4,78 @@ on:
pull_request:
branches:
- main
paths-ignore:
- "**.md"
- "img/**"

jobs:
build-check:
commit-lint:
runs-on: ubuntu-latest
if: ${{ github.event.pull_request.head.repo.full_name == github.repository }}
steps:
- name: Checkout sources
uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Lint commits
uses: wagoid/commitlint-github-action@v5
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: ${{ secrets.GITHUB_TOKEN }}

npm-lint:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3

- name: Setup node
uses: actions/setup-node@v3
with:
node-version: '14.x'
node-version: 16
registry-url: https://registry.npmjs.org/

- name: Cache prep
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Check outdated dependencies
run: yarn outdated
continue-on-error: true

- name: Cache yarn
uses: actions/cache@v3
id: yarn-cache
- name: Audit dependencies
run: yarn audit
continue-on-error: true

source-lint:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3

- name: Setup node
uses: actions/setup-node@v3
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
node-version: 16
registry-url: https://registry.npmjs.org/

- name: Install dependencies
run: yarn install --immutable --immutable-cache --check-cache --frozen-lockfile
- name: Setup node
uses: ./.github/actions/install

- name: Lint sources
uses: wearerequired/lint-action@v2
with:
eslint: true
continue-on-error: true

- name: Build plugin
run: yarn pack

- name: Unit test
run: yarn test:coverage --runInBand

- name: Check dependencies
run: yarn outdated
continue-on-error: true

- name: Upload coverage
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
continue-on-error: true


build:
uses: ./.github/workflows/reusable-build.yml
secrets: inherit

installation-check:
needs: [build, source-lint]
strategy:
matrix:
os: [macos-latest, windows-latest, ubuntu-latest]
Expand All @@ -71,42 +89,23 @@ jobs:
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}

- name: Install sfdx-cli
run: npm install -g sfdx-cli # yarn installation is not working on Windows

- name: Install dependencies
run: yarn install --immutable --immutable-cache --check-cache --frozen-lockfile --prod

- name: Setup dependencies, cache and install in prod context
uses: ./.github/actions/install
with:
prod-context: true

- name: Install build dependencies
run: yarn add @salesforce/dev-config typescript

- name: Build plugin
run: yarn pack

- name: Install sfdx-cli
run: npm install -g sfdx-cli

- name: Install plugin
run: sfdx plugins:link .

- name: Installation test
- name: Test installation
run: sfdx sgd:source:delta --help

commit-lint:
runs-on: ubuntu-latest
if: ${{ github.event.pull_request.head.repo.full_name == github.repository }}
steps:
- name: Checkout sources
uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Lint commits
uses: wagoid/commitlint-github-action@v5
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: ${{ secrets.GITHUB_TOKEN }}
Loading

0 comments on commit d79891b

Please sign in to comment.