-
Notifications
You must be signed in to change notification settings - Fork 119
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a0eec8c
commit 1cce7b5
Showing
5 changed files
with
160 additions
and
33 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
name: Auto approve | ||
|
||
on: | ||
pull_request: | ||
types: [labeled] | ||
|
||
jobs: | ||
auto-approve: | ||
if: | | ||
github.actor == 'foxbot76' && | ||
github.event.label.name == 'automated pr 🔧' | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: hmarr/auto-approve-action@v4 | ||
with: | ||
github-token: ${{ secrets.GITHUB_TOKEN }} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
name: Official release | ||
|
||
on: | ||
workflow_dispatch: # Manually on demand | ||
inputs: | ||
versionBump: | ||
description: 'Type of version bump' | ||
required: true | ||
default: 'patch' | ||
type: choice | ||
options: | ||
- patch | ||
- minor | ||
- major | ||
|
||
jobs: | ||
publish-config: | ||
runs-on: ubuntu-20.04 | ||
|
||
strategy: | ||
matrix: | ||
node: [20.x] # This should be LTS | ||
|
||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 # Fetch the history, or this action won't work | ||
|
||
- name: Use Node.js ${{ matrix.node }} | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: ${{ matrix.node }} | ||
|
||
- name: Install dependencies | ||
run: npm ci | ||
|
||
- name: Test | ||
run: npm test | ||
|
||
- name: Prepare release | ||
env: | ||
VERSION_BUMP: ${{ inputs.versionBump }} | ||
run: | | ||
git config --global user.email "[email protected]" | ||
git config --global user.name "Github Action" | ||
npm run release -- ${VERSION_BUMP} | ||
- name: Determine the version bump | ||
id: version | ||
uses: actions/github-script@v7 | ||
with: | ||
result-encoding: string | ||
script: | | ||
const package = require('./package.json'); | ||
return package.version | ||
- name: Extract the commit body | ||
id: extract_release | ||
# The body may be multiline, therefore we need to escape some characters | ||
run: | | ||
VERSION="${{ github.ref }}" | ||
VERSION=${VERSION##*/v} | ||
echo "::set-output name=VERSION::$VERSION" | ||
BODY=$(git show -s --format=%b) | ||
BODY="${BODY//'%'/'%25'}" | ||
BODY="${BODY//$'\n'/'%0A'}" | ||
BODY="${BODY//$'\r'/'%0D'}" | ||
echo "::set-output name=BODY::$BODY" | ||
- name: Create Pull Request | ||
id: cpr | ||
uses: peter-evans/create-pull-request@v6 | ||
with: | ||
token: ${{ secrets.PR_TOKEN }} | ||
commit-message: "[OFFICIAL RELEASE] ${{ steps.version.outputs.result }}" | ||
committer: foxbot76 <[email protected]> | ||
author: foxbot76 <[email protected]> | ||
signoff: false | ||
branch: official-release | ||
delete-branch: true | ||
title: "[OFFICIAL RELEASE] ${{ steps.version.outputs.result }}" | ||
body: | | ||
${{ steps.extract_release.outputs.BODY }} | ||
labels: | | ||
automated pr 🔧 | ||
assignees: foxbot76 | ||
draft: false |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -81,95 +81,115 @@ jobs: | |
|
||
- name: Run local tests | ||
run: npm test | ||
# - name: Run unit tests | ||
# run: npm run test:unit | ||
# - name: Run integration tests # (linux/osx) | ||
# if: startsWith(runner.OS, 'windows') == false | ||
# run: DEBUG=testing:* npm run test:integration | ||
# - name: Run integration tests # (windows) | ||
# if: startsWith(runner.OS, 'windows') | ||
# run: set DEBUG=testing:* & npm run test:integration | ||
|
||
# Deploys the final package to NPM | ||
deploy: | ||
|
||
# Merges and deploys the final package to NPM | ||
auto-merge: | ||
needs: [adapter-tests] | ||
|
||
# Trigger this step only when a commit on master is tagged with a version number | ||
if: | | ||
contains(github.event.head_commit.message, '[skip ci]') == false && | ||
github.event_name == 'push' && | ||
startsWith(github.ref, 'refs/tags/') | ||
always() && | ||
github.event_name == 'pull_request' | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- id: automerge | ||
name: automerge | ||
uses: "pascalgn/[email protected]" | ||
env: | ||
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" | ||
MERGE_LABELS: "automated pr 🔧" | ||
MERGE_FILTER_AUTHOR: "foxbot76" | ||
MERGE_FORKS: "false" | ||
MERGE_DELETE_BRANCH: "false" | ||
UPDATE_LABELS: "automated pr 🔧" | ||
MERGE_METHOD: "squash" | ||
MERGE_COMMIT_MESSAGE: "pull-request-title-and-description" | ||
|
||
- name: Checkout code | ||
if: steps.automerge.outputs.mergeResult == 'merged' | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 # Fetch the history, or this action won't work | ||
ref: 'main' | ||
|
||
- name: Use Node.js ${{ matrix.node-version }} | ||
if: steps.automerge.outputs.mergeResult == 'merged' | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: 20.x | ||
|
||
- name: Extract the version and commit body from the tag | ||
- name: Determine version | ||
if: steps.automerge.outputs.mergeResult == 'merged' | ||
id: version | ||
uses: actions/github-script@v7 | ||
with: | ||
result-encoding: string | ||
script: | | ||
return require('./package.json').version; | ||
- name: Extract the commit body | ||
if: steps.automerge.outputs.mergeResult == 'merged' | ||
id: extract_release | ||
# The body may be multiline, therefore we need to escape some characters | ||
run: | | ||
VERSION="${{ github.ref }}" | ||
VERSION=${VERSION##*/} | ||
VERSION=${VERSION##*v} | ||
echo "::set-output name=VERSION::$VERSION" | ||
BODY=$(git show -s --format=%b) | ||
BODY="${BODY//'%'/'%25'}" | ||
BODY="${BODY//$'\n'/'%0A'}" | ||
BODY="${BODY//$'\r'/'%0D'}" | ||
echo "::set-output name=BODY::$BODY" | ||
- name: Install Dependencies | ||
if: steps.automerge.outputs.mergeResult == 'merged' | ||
run: npm install | ||
|
||
- name: Create a clean build | ||
if: steps.automerge.outputs.mergeResult == 'merged' | ||
run: npm run build | ||
|
||
- name: Publish package to npm | ||
if: steps.automerge.outputs.mergeResult == 'merged' | ||
run: | | ||
npm config set //registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }} | ||
npm whoami | ||
npm publish | ||
- name: Create Github Release | ||
uses: actions/create-release@v1 | ||
if: steps.automerge.outputs.mergeResult == 'merged' | ||
uses: ncipollo/release-action@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
tag_name: ${{ github.ref }} | ||
release_name: Release v${{ steps.extract_release.outputs.VERSION }} | ||
tag: v${{ steps.version.outputs.result }} | ||
name: Release v${{ steps.version.outputs.result }} | ||
draft: false | ||
# Prerelease versions create pre-releases on GitHub | ||
prerelease: ${{ contains(steps.extract_release.outputs.VERSION, '-') }} | ||
prerelease: ${{ contains(steps.version.outputs.result, '-') }} | ||
body: ${{ steps.extract_release.outputs.BODY }} | ||
|
||
- name: Notify Sentry.io about the release | ||
if: steps.automerge.outputs.mergeResult == 'merged' | ||
run: | | ||
npm i -g @sentry/cli | ||
export SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }} | ||
export SENTRY_URL=https://sentry.iobroker.net | ||
export SENTRY_ORG=iobroker | ||
export SENTRY_PROJECT=iobroker-javascript | ||
export SENTRY_VERSION=iobroker.javascript@${{ steps.extract_release.outputs.VERSION }} | ||
export SENTRY_VERSION=iobroker.javascript@${{ steps.version.outputs.result }} | ||
sentry-cli releases new $SENTRY_VERSION | ||
sentry-cli releases set-commits $SENTRY_VERSION --auto | ||
sentry-cli releases finalize $SENTRY_VERSION | ||
# Add the following line BEFORE finalize if sourcemap uploads are needed | ||
# sentry-cli releases files $SENTRY_VERSION upload-sourcemaps build/ | ||
|
||
- name: Notify Sentry.io about the release of frontend | ||
if: steps.automerge.outputs.mergeResult == 'merged' | ||
run: | | ||
npm i -g @sentry/cli | ||
export SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }} | ||
export SENTRY_URL=https://sentry.iobroker.net | ||
export SENTRY_ORG=iobroker | ||
export SENTRY_PROJECT=iobroker-javascript-react | ||
export SENTRY_VERSION=iobroker.javascript-react@${{ steps.extract_release.outputs.VERSION }} | ||
export SENTRY_VERSION=iobroker.javascript-react@${{ steps.version.outputs.result }} | ||
sentry-cli releases new $SENTRY_VERSION | ||
sentry-cli releases set-commits $SENTRY_VERSION --auto | ||
sentry-cli releases finalize $SENTRY_VERSION | ||
sentry-cli releases finalize $SENTRY_VERSION |
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
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