Skip to content

v1.0.3 - Stop using peerDependencies #162

v1.0.3 - Stop using peerDependencies

v1.0.3 - Stop using peerDependencies #162

Workflow file for this run

# Based on projen template from packages/microapps-cdk/.github/workflows/release.yml
name: Release Packages
on:
# Can enable this when the push builds skip deploy
# push:
# branches:
# - 'main'
release:
types: [published]
jobs:
install-deps:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/configure-nodejs
with:
lookup-only: 'true' # We only want to lookup from the cache - if a hit, this job does nothing
version:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.get_version.outputs.version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Get version from git tag
id: get_version
run: echo "version=$(git describe --tags $(git rev-list --tags --max-count=1))" >> $GITHUB_OUTPUT
- name: Output version
run: echo "The version is ${{ steps.get_version.outputs.version }}"
#
# CDK Construct
#
release:
name: Build CDK Construct
needs: [install-deps, version]
runs-on: ubuntu-latest
permissions:
contents: write
outputs:
latest_commit: ${{ steps.git_remote.outputs.latest_commit }}
env:
CI: 'true'
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set git identity
run: |-
git config user.name "github-actions"
git config user.email "github-actions@github.com"
- uses: ./.github/actions/configure-nodejs
- name: Build All TypeScript
run: yarn build
- name: Run Lint
run: yarn lint
- name: Run Node Tests
env:
NODE_ENV: test
run: yarn test
- name: Install CDK Construct Deps
working-directory: packages/microapps-cdk/
run: yarn install --frozen-lockfile
- name: Prepare the Release
working-directory: packages/microapps-cdk/
run: npx projen release
- name: Apply Version to Everything (Deployer / Datalib)
run: |
echo "Version is ${{needs.version.outputs.version }}"
node scripts/version.js ${{needs.version.outputs.version }}
- name: Check for new commits
id: git_remote
run: echo latest_commit="$(git ls-remote origin -h ${{ github.ref }} | cut -f1)" >> $GITHUB_OUTPUT
- name: Upload CDK Construct Artifact
if: ${{ steps.git_remote.outputs.latest_commit == github.sha }}
uses: actions/upload-artifact@v4
with:
name: build-artifact
path: packages/microapps-cdk/dist
release_github:
name: Publish to GitHub Releases
needs: release
runs-on: ubuntu-latest
permissions:
contents: write
if: needs.release.outputs.latest_commit == github.sha
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: build-artifact
path: dist
- name: Prepare Repository
run: mv dist .repo
- name: Collect GitHub Metadata
run: mv .repo/dist dist
- name: Release
run: errout=$(mktemp); gh release create $(cat dist/releasetag.txt) -R $GITHUB_REPOSITORY -F dist/changelog.md -t $(cat dist/releasetag.txt) --target $GITHUB_REF 2> $errout && true; exitcode=$?; if [ $exitcode -ne 0 ] && ! grep -q "Release.tag_name already exists" $errout; then cat $errout; exit $exitcode; fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPOSITORY: ${{ github.repository }}
GITHUB_REF: ${{ github.ref }}
#
# Publish Tool
#
release-publish-tool:
needs: [release, version]
name: Build Publish Tool
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/configure-nodejs
- name: Check for new commits
id: git_remote
run: echo latest_commit="$(git ls-remote origin -h ${{ github.ref }} | cut -f1)" >> $GITHUB_OUTPUT
- name: Apply Version to Everything (Deployer / Datalib)
run: |
echo "Version is ${{needs.version.outputs.version }}"
node scripts/version.js ${{needs.version.outputs.version }}
- name: Build Publish TypeScript
run: yarn build:publish
- name: Upload Publish Tool artifact
uses: actions/upload-artifact@v4
with:
name: publish-tool-dist
path: |
packages/pwrdrvr/
!packages/pwrdrvr/node_modules/
- name: Upload Publish Tool - Convenience artifact
uses: actions/upload-artifact@v4
with:
name: publish-tool-dist-convenience
path: |
packages/microapps-publish/
!packages/microapps-publish/node_modules/
- name: Upload Datalib artifact
uses: actions/upload-artifact@v4
with:
name: datalib-dist
path: |
packages/microapps-datalib/
!packages/microapps-datalib/node_modules/
- name: Upload Router Lib artifact
uses: actions/upload-artifact@v4
with:
name: router-lib-dist
path: |
packages/microapps-router-lib/
!packages/microapps-router-lib/node_modules/
release_npm:
name: Publish to npm
needs: release
runs-on: ubuntu-latest
permissions:
contents: read
if: needs.release.outputs.latest_commit == github.sha
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: build-artifact
path: dist
- name: Prepare Repository
run: mv dist .repo
- name: Install Dependencies
run: cd .repo && yarn install --check-files --frozen-lockfile
- name: Create js artifact
run: cd .repo && npx projen package:js
- name: Collect js Artifact
run: mv .repo/dist dist
- name: Release
run: npx -p publib@latest publib-npm
env:
NPM_DIST_TAG: latest
NPM_REGISTRY: registry.npmjs.org
NPM_TOKEN: ${{ secrets.NPMJSORG_PUBLISH_TOKEN }} # publib requires NPM_TOKEN as an env var
release_npm_publish_tool:
name: Publish to npm - Publish Tool
needs: [release, release_npm, release-publish-tool]
runs-on: ubuntu-latest
permissions:
contents: read
if: needs.release.outputs.latest_commit == github.sha
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- name: Download Publish Tool build artifacts
uses: actions/download-artifact@v4
with:
name: publish-tool-dist
path: packages/pwrdrvr
- name: Download Publish Tool - Convenience build artifacts
uses: actions/download-artifact@v4
with:
name: publish-tool-dist-convenience
path: packages/microapps-publish
- name: Download Datalib build artifacts
uses: actions/download-artifact@v4
with:
name: datalib-dist
path: packages/microapps-datalib
- name: Download Router Lib build artifacts
uses: actions/download-artifact@v4
with:
name: router-lib-dist
path: packages/microapps-router-lib
#
# Publish other non-JSII Artifacts to NPM
#
- name: NPM registry authentication
run: npm set //registry.npmjs.org/:_authToken ${{ secrets.NPMJSORG_PUBLISH_TOKEN }}
- name: Release Publish Tool - NPM
working-directory: packages/pwrdrvr/
run: |
npm publish
- name: Release Publish Tool - Convenience - NPM
working-directory: packages/microapps-publish/
run: |
npm publish
- name: Release DataLib - NPM
working-directory: packages/microapps-datalib/
run: |
npm publish
- name: Release Router Lib - NPM
working-directory: packages/microapps-router-lib/
run: |
npm publish --access public
release_maven:
name: Publish to Maven Central
needs: release
runs-on: ubuntu-latest
permissions:
contents: read
if: needs.release.outputs.latest_commit == github.sha
steps:
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 11.x
- uses: actions/setup-node@v4
with:
node-version: 18
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: build-artifact
path: dist
- name: Prepare Repository
run: mv dist .repo
- name: Install Dependencies
run: cd .repo && yarn install --check-files --frozen-lockfile
- name: Create java artifact
run: cd .repo && npx projen package:java
- name: Collect java Artifact
run: mv .repo/dist dist
- name: Release
run: npx -p publib@latest publib-maven
env:
MAVEN_GPG_PRIVATE_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }}
MAVEN_GPG_PRIVATE_KEY_PASSPHRASE: ${{ secrets.MAVEN_GPG_PRIVATE_KEY_PASSPHRASE }}
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
MAVEN_STAGING_PROFILE_ID: ${{ secrets.MAVEN_STAGING_PROFILE_ID }}
MAVEN_ENDPOINT: https://s01.oss.sonatype.org
release_pypi:
name: Publish to PyPI
needs: release
runs-on: ubuntu-latest
permissions:
contents: read
if: needs.release.outputs.latest_commit == github.sha
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: build-artifact
path: dist
- name: Prepare Repository
run: mv dist .repo
- name: Install Dependencies
run: cd .repo && yarn install --check-files --frozen-lockfile
- name: Create python artifact
run: cd .repo && npx projen package:python
- name: Collect python Artifact
run: mv .repo/dist dist
- name: Release
run: npx -p publib@latest publib-pypi
env:
TWINE_USERNAME: ${{ secrets.TWINE_USERNAME }}
TWINE_PASSWORD: ${{ secrets.TWINE_PASSWORD }}
release_nuget:
name: Publish to NuGet Gallery
needs: release
runs-on: ubuntu-latest
permissions:
contents: read
if: needs.release.outputs.latest_commit == github.sha
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- uses: actions/setup-dotnet@v4
with:
dotnet-version: 3.x
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: build-artifact
path: dist
- name: Prepare Repository
run: mv dist .repo
- name: Install Dependencies
run: cd .repo && yarn install --check-files --frozen-lockfile
- name: Create dotnet artifact
run: cd .repo && npx projen package:dotnet
- name: Collect dotnet Artifact
run: mv .repo/dist dist
- name: Release
run: npx -p publib@latest publib-nuget
env:
NUGET_API_KEY: ${{ secrets.NUGET_MICROAPPS }}