* chore: 🤖 remove packageManager field from package.json
* chore: 🤖 migrate yarn resolutions to pnpm overrides
* chore: 🤖 generate pnpm-lock.yml by using: pnpm import yarn.lock
* chore: 🤖 remove yarn.lock file
* chore: 🤖 migrate workspace configuration
* chore: 🤖 remove .yarn and .yarnrc.yml config
* chore: 🤖 update .copyright.hcl to ignore root pnpm files
* chore: 🤖 migrate husky pre-commit hook from yarn to pnpm
* chore: 🤖 migrate package.json scripts from yarn to pnpm
* chore: 🤖 update rose package.json & build to use explicit deps
* chore: 🤖 remove unused cp metadata.json command in pjson script
The cp metadata.json to dist was added in:
d19a251
The addons/rose/metadata.json no longer exists so it can't be copied
* chore: 🤖 migrate electron-app package.json scripts to pnpm
* chore: 🤖 create pnpm workspace for electron-app w/ hoisted deps
* chore: 🤖 migrate electron-app yarn lockfile to pnpm lockfile
Used "pnpm import yarn.lock"
* chore: 🤖 migrate electron-app overrides
node-gyp isn't needed since the fork is used via @electron/node-gyp
see: https://github.com/electron/node-gyp?tab=readme-ov-file#node-gyp---nodejs-native-addon-build-tool
* chore: 🤖 add trusted deps to be built to onlyBuiltDependencies
This is a pnpm feature that increases security. By defining these
dependencies they are being trusted to allow install hooks,
including postinstall. See:
https://pnpm.io/settings#onlybuiltdependencies
* chore: 🤖 add electron-app pnpm files to copyright header ignore
* chore: 🤖 remove yarn references from .*ignore files
* chore: 🤖 migrate --yarn to --pnpm for ember-cli-update.json
This isn't clearly documented but something that is supported
and can be found in other ember apps:
https://github.com/search?q=--pnpm+ember-cli-update.json&type=code
* chore: 🤖 migrate ci and related scripts to use pnpm
The cache is migrated to use the cache supported by
actions/setup-node@v4, an action we are already using. This is the
recommended way by pnpm:
https://pnpm.io/continuous-integration#github-actions
This commit also ensures that all github actions are using
consistent versions of actions/setup-node and pnpm/action-setup
* docs: ✏️ update documentation to use pnpm instead of yarn
* chore: 🤖 use explicit asciinema-player dependency
Because we override styles on asciinema-player we depend on their
styles. What might be a minor non-breaking change in their version could
(and did) break our style expectations in our overrides.
* chore: 🤖 run pnpm install and commit lockfile changes
* chore: 🤖 Remove ember-inflector from being overidden
https://github.com/hashicorp/boundary-ui/pull/2828#discussion_r2110380711
* chore: 🤖 remove highlight.js from pnpm overrides
https://github.com/hashicorp/boundary-ui/pull/2828#discussion_r2109847938
* chore: 🤖 remove additional unnecessary files from ignore files
* docs: ✏️ fix pnpm doc links
* chore: 🤖 use corepack to specify packageManager in package.json
* chore: 🤖 let pnpm action in ci use packageManager for version
https://github.com/pnpm/action-setup?tab=readme-ov-file#version
* docs: ✏️ fix broken pnpm website links
94 lines
3.2 KiB
Bash
Executable File
94 lines
3.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Copyright (c) HashiCorp, Inc.
|
|
# SPDX-License-Identifier: BUSL-1.1
|
|
|
|
set -euo pipefail
|
|
|
|
# Configure Git
|
|
git config --global user.email "hc-github-team-secure-boundary@hashicorp.com"
|
|
git config --global user.name "github-team-secure-boundary"
|
|
# Fetch branches from ENT
|
|
git fetch origin
|
|
BRANCH=${1}
|
|
|
|
echo "BRANCH to merge is $BRANCH"
|
|
git checkout "${BRANCH}"
|
|
|
|
# Checkout OSS repo
|
|
git remote add oss-remote https://github.com/hashicorp/boundary-ui.git
|
|
git fetch oss-remote
|
|
|
|
# Merge oss/${BRANCH} into ent/${BRANCH}
|
|
git_merge_branch="${2}"
|
|
git checkout -b "${git_merge_branch}"
|
|
latest_oss_commit="$(git rev-parse --short oss-remote/${BRANCH})"
|
|
echo "Trying to merge the latest oss commit - ${latest_oss_commit} from oss/${BRANCH} into ent/${BRANCH}"
|
|
|
|
if ! errors=$(git merge -m "Merge Boundary UI OSS branch '${BRANCH}' at commit ${latest_oss_commit}" "${latest_oss_commit}"); then
|
|
# Here we can try to auto resolve conflicts
|
|
# This logic will vary from project to project. The below is just an example.
|
|
conflicts=$(git diff --name-only --diff-filter=U)
|
|
printf "Found conflicts:\n${conflicts}\n"
|
|
# Resolve package.json conflicts by taking oss
|
|
if echo "$conflicts" | grep -q package.json; then
|
|
echo "Checking out oss package.json..."
|
|
git checkout --theirs package.json
|
|
git add package.json
|
|
fi
|
|
# Resolve pnpm-lock.yaml conflicts by re-running pnpm install:
|
|
# https://pnpm.io/git#merge-conflicts
|
|
if echo "$conflicts" | grep -q pnpm-lock.yaml; then
|
|
echo "Re-running pnpm install to fix conflicts by regenerating pnpm-lock.yaml..."
|
|
pnpm install
|
|
git add pnpm-lock.yaml
|
|
fi
|
|
|
|
# If we can commit all the changes without conflict, we have resolved everything automatically
|
|
if ! git commit --no-edit; then
|
|
echo "Auto Merge failed, creating a draft PR"
|
|
git merge --abort
|
|
git clean -xfd
|
|
git fetch oss-remote
|
|
git checkout "${OSS_BRANCH}"
|
|
git checkout -b "${OSS_LOCAL_BRANCH}"
|
|
git push -f --set-upstream origin "${OSS_LOCAL_BRANCH}"
|
|
gh pr create \
|
|
--draft \
|
|
--fill-first \
|
|
--label "oss-merge" \
|
|
-B "${BASE_BRANCH}" \
|
|
-H "${OSS_LOCAL_BRANCH}" \
|
|
-a "${ACTOR}" \
|
|
-t "[${BASE_BRANCH/oss\/release\//}] OSS to ENT merge of (${SHA::7})" \
|
|
-b "${BASE_BRANCH/oss\//} upstream merge of (${SHA::7})
|
|
Merge failed, Please fix the conflicts using github UI or using the following commands:
|
|
\`\`\`bash
|
|
git checkout ${BASE_BRANCH}
|
|
git pull
|
|
git checkout ${OSS_LOCAL_BRANCH}
|
|
git merge ${BASE_BRANCH}
|
|
# fix conflicts and commit
|
|
git push origin ${OSS_LOCAL_BRANCH}
|
|
\`\`\`"
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
# Check that there are actually changes to merge by comparing the
|
|
# merge branch to the current checked out branch
|
|
if (git diff ${BRANCH} --exit-code > /dev/null); then
|
|
echo "there are no changes to merge"
|
|
exit 0
|
|
fi
|
|
git push origin "${git_merge_branch}"
|
|
gh pr create \
|
|
--fill-first \
|
|
--label "oss-merge" \
|
|
-B "${BASE_BRANCH}" \
|
|
-H "${MERGE_BRANCH}" \
|
|
-a ${ACTOR} \
|
|
-t "[${BASE_BRANCH/oss\/release\//}] OSS to ENT merge of (${SHA::7})" \
|
|
-b "${BASE_BRANCH/oss\//} upstream merge of (${SHA::7})"
|
|
gh pr merge --auto --merge
|
|
|
|
# This PR will be need to be approved manually |