From 64dd070d67db24b283c155d19e6f467f5ee0ecff Mon Sep 17 00:00:00 2001 From: Liam DeBeasi Date: Wed, 10 Nov 2021 12:52:00 -0500 Subject: [PATCH] build(dev-build): correctly pass secrets to publish task (#24194) --- .github/workflows/dev-build.yml | 63 +++++++++++++++++++++++++++++++-- .scripts/common.js | 60 ++++++++++++------------------- .scripts/release-dev.js | 16 ++++----- 3 files changed, 90 insertions(+), 49 deletions(-) diff --git a/.github/workflows/dev-build.yml b/.github/workflows/dev-build.yml index e6b75e472f..c9ed9dccc7 100644 --- a/.github/workflows/dev-build.yml +++ b/.github/workflows/dev-build.yml @@ -1,18 +1,75 @@ name: 'Ionic Dev Build' on: - workflow_dispatch: + workflow_dispatch jobs: dev-build: runs-on: ubuntu-latest + outputs: + version: ${{ steps.devBuild.outputs.version }} steps: - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 + - uses: actions/setup-node@v2 with: node-version: 15.x + registry-url: 'https://registry.npmjs.org' + - name: Install Dependencies + run: npm install + shell: bash - name: Create Dev Build run: npm run release.dev -- --skip-prompt shell: bash + - name: Publish Core + run: npm publish --tag dev + working-directory: ./core env: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + - name: Publish Docs + run: npm publish --tag dev + working-directory: ./docs + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + - name: Publish Angular + run: npm publish --tag dev + working-directory: ./angular + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + - name: Publish Angular Server + run: npm publish --tag dev + working-directory: ./packages/angular-server + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + - name: Publish React + run: npm publish --tag dev + working-directory: ./packages/react + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + - name: Publish React Router + run: npm publish --tag dev + working-directory: ./packages/react-router + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + - name: Publish Vue + run: npm publish --tag dev + working-directory: ./packages/vue + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + - name: Publish Vue Router + run: npm publish --tag dev + working-directory: ./packages/vue-router + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + - name: Wrap Up + id: devBuild + run: | + val=$(grep version package.json | sed 's/.*"version": "\(.*\)".*/\1/') + echo "::set-output name=version::$val" + working-directory: ./core + get-version: + name: Get your dev build! + runs-on: ubuntu-latest + needs: [dev-build] + steps: + - run: echo ${{ needs.dev-build.outputs.version }} + diff --git a/.scripts/common.js b/.scripts/common.js index f43d416397..e8ddfad4b4 100644 --- a/.scripts/common.js +++ b/.scripts/common.js @@ -199,6 +199,16 @@ function preparePackage(tasks, package, version, install) { }); } +function installDevPackage(tasks, package) { + const projectRoot = projectPath(package); + const pkg = readPkg(package); + + tasks.push({ + title: `${pkg.name}: npm install`, + task: () => execa('npm', ['install', '--legacy-peer-deps'], { cwd: projectRoot }) + }); +} + function prepareDevPackage(tasks, package, version) { const projectRoot = projectPath(package); const pkg = readPkg(package); @@ -211,20 +221,20 @@ function prepareDevPackage(tasks, package, version) { title: `${pkg.name}: npm link @ionic/core`, task: () => execa('npm', ['link', '@ionic/core', '--legacy-peer-deps'], { cwd: projectRoot }) }); - - if (package === 'packages/react-router') { - projectTasks.push({ - title: `${pkg.name}: npm link @ionic/react`, - task: () => execa('npm', ['link', '@ionic/react', '--legacy-peer-deps'], { cwd: projectRoot }) - }); - } } projectTasks.push({ title: `${pkg.name}: update ionic/core dep to ${version}`, task: () => { - updateDependency(pkg, '@ionic/core', version); - writePkg(package, pkg); + + /** + * At this point, the version for the package + * has been changed so we need to re-fetch the + * package contents so we do not overwrite it. + */ + const updatedPackage = readPkg(package); + updateDependency(updatedPackage, '@ionic/core', version); + writePkg(package, updatedPackage); } }); @@ -233,7 +243,7 @@ function prepareDevPackage(tasks, package, version) { task: () => execa('npm', ['run', 'build'], { cwd: projectRoot }) }); - if (package === 'core' || package === 'packages/react') { + if (package === 'core') { projectTasks.push({ title: `${pkg.name}: npm link`, task: () => execa('npm', ['link'], { cwd: projectRoot }) @@ -278,17 +288,6 @@ function updatePackageVersions(tasks, packages, version) { } }); } - - if (package === 'packages/react-router') { - tasks.push({ - title: `${package} update @ionic/react dependency, if present ${dim(`(${version})`)}`, - task: async () => { - const pkg = readPkg(package); - updateDependency(pkg, '@ionic/react', version); - writePkg(package, pkg); - } - }); - } }); } @@ -320,7 +319,7 @@ function copyPackageToDist(tasks, packages) { } function publishPackages(tasks, packages, version, npmTag = 'latest') { - // first verify version + // verify version packages.forEach(package => { if (package === 'core') { return; @@ -337,22 +336,6 @@ function publishPackages(tasks, packages, version, npmTag = 'latest') { } }); }); - - // Publish - packages.forEach(package => { - let projectRoot = projectPath(package); - - if (package === 'packages/angular-server' || package === 'angular') { - projectRoot = path.join(projectRoot, 'dist') - } - - tasks.push({ - title: `${package}: publish to ${npmTag} tag`, - task: async () => { - await execa('npm', ['publish', '--tag', npmTag], { cwd: projectRoot }); - } - }); - }); } function updateDependency(pkg, dependency, version) { @@ -382,6 +365,7 @@ function copyCDNLoader(tasks, version) { } module.exports = { + installDevPackage, checkTestDist, checkGit, askNpmTag, diff --git a/.scripts/release-dev.js b/.scripts/release-dev.js index af24835296..1bf90dccf7 100644 --- a/.scripts/release-dev.js +++ b/.scripts/release-dev.js @@ -33,7 +33,14 @@ async function main() { const tasks = []; - await setPackageVersionChanges(packages, devVersion); + packages.forEach(package => { + common.installDevPackage(tasks, package); + }); + + tasks.push({ + title: 'Set package version changes', + task: async () => await setPackageVersionChanges(packages, devVersion) + }) packages.forEach(package => { common.prepareDevPackage(tasks, package, devVersion); @@ -50,10 +57,6 @@ async function main() { console.log('\n', red(err), '\n'); process.exit(1); } - - orgPkg.forEach(pkg => { - fs.writeFileSync(pkg.filePath, pkg.packageContent); - }); } async function askDevVersion(devVersion) { @@ -83,9 +86,6 @@ async function setPackageVersionChanges(packages, version) { if (package !== 'core') { const pkg = common.readPkg(package); common.updateDependency(pkg, '@ionic/core', version); - if(package === 'packages/react-router') { - common.updateDependency(pkg, '@ionic/react', version); - } common.writePkg(package, pkg); } const projectRoot = common.projectPath(package);