Skip to content

Commit

Permalink
PR deploy
Browse files Browse the repository at this point in the history
  • Loading branch information
kpears201 committed Nov 10, 2023
1 parent ec65124 commit 59e82f6
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 39 deletions.
50 changes: 19 additions & 31 deletions .github/workflows/release-github.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,43 +35,36 @@ jobs:
run: 'echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > .npmrc'
- name: Install dependencies
run: npm ci
- name: Set explicit npm dist-tag default
if: github.ref_name == 'main'
- name: Set main tags
if: github.ref_name == 'main' && github.event_name != 'pull_request'
run: |
echo "NPM_DIST_TAG=latest" >> $GITHUB_ENV
echo "RELEASE_CHANNEL=latest" >> $GITHUB_ENV
- name: Override npm dist-tag for non-main releases
if: github.ref_name != 'main'
echo 'NPM_DIST_TAG="--tag latest"' >> $GITHUB_ENV
echo "DOCS_TAG=latest" >> $GITHUB_ENV
- name: Set next tags
if: github.ref_name == 'next' && github.event_name != 'pull_request'
run: |
echo "Setting NPM_DIST_TAG to '${{ github.ref_name }}'"
echo "NPM_DIST_TAG=${{ github.ref_name }}" >> $GITHUB_ENV
- name: Override release channel for non-main releases
if: github.ref_name != 'main'
echo 'NPM_DIST_TAG="--tag next"' >> $GITHUB_ENV
echo "DOCS_TAG=next" >> $GITHUB_ENV
- name: Set PR tags
if: github.ref_name != 'main' && github.ref_name != 'next' && github.event_name == 'pull_request'
run: |
echo "Setting RELEASE_CHANNEL to '$(node ./src/js/version.mjs channel $NPM_DIST_TAG)' using branch name '$NPM_DIST_TAG'"
echo "RELEASE_CHANNEL=$(node ./src/js/version.mjs channel $NPM_DIST_TAG)" >> $GITHUB_ENV
- name: Override release channel for PRs
if: github.event_name == 'pull_request'
run: |
echo "Setting RELEASE_CHANNEL to '$(node ./src/js/version.mjs channel ${{ github.head_ref }})' using branch name ${{ github.head_ref }}"
echo "RELEASE_CHANNEL=$(node ./src/js/version.mjs channel ${{ github.head_ref }})" >> $GITHUB_ENV
echo 'NPM_DIST_TAG=""' >> $GITHUB_ENV
echo "DOCS_TAG=${{ github.head_ref }}" >> $GITHUB_ENV
- name: Release mono-artifact to GitHub
if: (github.ref_name != 'main' && github.event_name != 'pull_request') || github.event_name == 'workflow_dispatch'
env:
GITHUB_TOKEN: ${{ secrets.SEMANTIC_RELEASE_BOT_PAT }} # <-- Allows semantic-release-bot to push changes to protected branches
npm_config_tag: ${{ env.NPM_DIST_TAG }} # <-- For main, this is `latest.` Otherwise, `next`, `next-major`, etc. See ./.releaserc for release branch config.
run: npx semantic-release
- name: Dry-run mono-artifact
if: (github.ref_name == 'main' && github.event_name != 'workflow_dispatch') || github.event_name == 'pull_request'
env:
GITHUB_TOKEN: ${{ secrets.SEMANTIC_RELEASE_BOT_PAT }} # <-- Allows semantic-release-bot to push changes to protected branches
npm_config_tag: ${{ env.NPM_DIST_TAG }} # <-- For main, this is `latest.` Otherwise, `next`, `next-major`, etc. See ./.releaserc for release branch config.
run: npx semantic-release --dry-run
- name: Build artifacts for feature branches
if: github.ref_name != 'main' && github.ref_name != 'next'
run: |
# npm version prerelease --preid $RELEASE_CHANNEL --workspaces --git-tag-version false
# npm version prerelease --preid $RELEASE_CHANNEL --workspaces --include-workspace-root --git-tag-version false
$(node ./src/js/version.mjs latest-prerelease ${{ github.ref_name }})
npm version prerelease --preid ${{ github.ref_name }} --workspaces --git-tag-version false
npm run dist
- name: Check if semantic-release created a build
id: check_build
Expand All @@ -82,35 +75,30 @@ jobs:
if: steps.check_build.outputs.files_exists == 'true' && github.event_name != 'pull_request' && (github.ref_name != 'main' || github.event_name == 'workflow_dispatch')
env:
NPM_TOKEN: ${{ secrets.SEMANTIC_RELEASE_NPM_TOKEN }} # <-- Allows semantic-release to publish to npm without 2 factor auth.
npm_config_tag: ${{ env.NPM_DIST_TAG }} # <-- For main, this is `latest.` Otherwise, `next`, `next-major`, etc. See ./.releaserc for release branch config.
run: |
echo "NPM DIST TAG :: " ${{ env.NPM_DIST_TAG }}
echo "Release Channel :: " $RELEASE_CHANNEL
npm publish --tag $RELEASE_CHANNEL --workspaces
npm publish $NPM_DIST_TAG --workspaces
- name: Dry-run Firebolt SDKs to NPM
if: steps.check_build.outputs.files_exists == 'true' && (github.ref_name == 'main' && github.event_name != 'workflow_dispatch')
env:
NPM_TOKEN: ${{ secrets.SEMANTIC_RELEASE_NPM_TOKEN }} # <-- Allows semantic-release to publish to npm without 2 factor auth.
npm_config_tag: ${{ env.NPM_DIST_TAG }} # <-- For main, this is `latest.` Otherwise, `next`, `next-major`, etc. See ./.releaserc for release branch config.
run: npm publish --tag $RELEASE_CHANNEL --workspaces --dry-run
run: npm publish $NPM_DIST_TAG --workspaces --dry-run
- name: Checkout firebolt GitHub.io repository
if: steps.check_build.outputs.files_exists == 'true'
env:
GITHUB_TOKEN: ${{ secrets.SEMANTIC_RELEASE_BOT_PAT }} # <-- Allows semantic-release-bot to push changes to protected branches
npm_config_tag: ${{ env.NPM_DIST_TAG }} # <-- For main, this is `latest.` Otherwise, `next`, `next-major`, etc. See ./.releaserc for release branch config.
run: |
cd /tmp
git clone https://rdkcentral:[email protected]/rdkcentral/firebolt.git ./firebolt-docs
- name: Release docs to GitHub.io
if: steps.check_build.outputs.files_exists == 'true'
if: steps.check_build.outputs.files_exists == 'true' && (github.ref_name == 'main' || github.ref_name != 'next' || github.event_name != 'pull_request')
env:
GITHUB_TOKEN: ${{ secrets.SEMANTIC_RELEASE_BOT_PAT }} # <-- Allows semantic-release-bot to push changes to protected branches
# npm_config_tag: ${{ env.NPM_DIST_TAG }} # <-- For main, this is `latest.` Otherwise, `next`, `next-major`, etc. See ./.releaserc for release branch config.
run: |
npm run publish:docs /tmp/firebolt-docs $RELEASE_CHANNEL
npm run publish:docs /tmp/firebolt-docs $DOCS_TAG
cd /tmp/firebolt-docs
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
git add --all
git diff-index --quiet HEAD || git commit -m "chore: Publish $RELEASE_CHANNEL"
git diff-index --quiet HEAD || git commit -m "chore: Publish $DOCS_TAG"
git push
40 changes: 32 additions & 8 deletions src/js/version.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import { readFile, writeFile } from 'fs/promises'
import path from 'path'
import { exec } from 'child_process'

process.argv.shift()
process.argv.shift()
Expand All @@ -10,22 +11,22 @@ const task = process.argv.shift()

let inWorkspace = false
let packageJson = await readFile(path.join('.', 'package.json'))
.then(bytes => bytes.toString())
.then(JSON.parse)
.then(bytes => bytes.toString())
.then(JSON.parse)

if (!packageJson.workspaces) {
inWorkspace = true
packageJson = await readFile(path.join('..', '..', '..', 'package.json'))
.then(bytes => bytes.toString())
.then(JSON.parse)
.then(bytes => bytes.toString())
.then(JSON.parse)
}

const packageMain = packageJson

if (task === 'sync') {

console.log()

await Promise.all(packageMain.workspaces.map(async workspace => {
console.log(`Updating ${workspace}/package.json to version ${packageMain.version}.`)
const packageWorkspace = await readFile(path.join('.', workspace, 'package.json'))
Expand All @@ -40,8 +41,8 @@ if (task === 'sync') {
else if (task === 'channel') {
const branch = process.argv.shift()
const releaserc = await readFile(path.join('.', '.releaserc'))
.then(bytes => bytes.toString())
.then(JSON.parse)
.then(bytes => bytes.toString())
.then(JSON.parse)

// default to 'test' channel if branch is unknown
const config = releaserc.branches.find(b => b.name === branch) || { channel: branch.replace('/', '-') }
Expand Down Expand Up @@ -76,4 +77,27 @@ else if (task === 'validate') {
}))


} else if (task === 'latest-prerelease') {
const prerelease = process.argv.shift()
console.log('prerelease : ' + prerelease)
exec("npm show @firebolt-js/sdk versions --json", (error, result, errlog) => {
if (error) {
console.error(`error: ${error.message}`);
return;
}
let versions = JSON.parse(result).sort().reverse()
let matches = versions.filter(v => {
if (v.indexOf('-') !== -1) {
let prerel = v.substring(v.indexOf('-') + 1)
return prerel.startsWith(prerelease + '.')
}
return false
})
if (matches.length > 0) {
console.log('Setting package version to ' + matches[0])
exec("npm version " + matches[0] + " --workspaces")
return matches[0]
}
return null
});
}

0 comments on commit 59e82f6

Please sign in to comment.