Skip to content

Updates release notes #53

Updates release notes

Updates release notes #53

Workflow file for this run

name: Release
on:
push:
branches:
- "!*"
tags:
- "v*"
jobs:
build:
if: github.repository_owner == 'pnp'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js 20
uses: actions/setup-node@v4
with:
node-version: 20
registry-url: 'https://registry.npmjs.org'
- name: Cache node modules
id: cache
uses: actions/cache@v4
with:
path: |
**/node_modules
key: node_modules-ubuntu-latest-20-${{ hashFiles('**/npm-shrinkwrap.json') }}
- name: Restore dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: npm ci
- name: Build
run: npm run build
- name: Compress output
run: tar -cvf build.tar --exclude node_modules ./
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: build
path: build.tar
test:
if: github.repository_owner == 'pnp'
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
with:
name: build
- name: Unpack build artifact
run: tar -xvf build.tar && rm build.tar
- name: Use Node.js 20
uses: actions/setup-node@v4
with:
node-version: 20
registry-url: 'https://registry.npmjs.org'
- name: Cache node modules
id: cache
uses: actions/cache@v4
with:
path: |
**/node_modules
key: node_modules-ubuntu-latest-20-${{ hashFiles('**/npm-shrinkwrap.json') }}
- name: Restore dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: npm ci
- name: Cache .eslintcache
id: eslintcache
uses: actions/cache@v4
with:
path: |
.eslintcache
key: eslintcache-${{ matrix.os }}-${{ hashFiles('npm-shrinkwrap.json', '.eslintrc.cjs') }}
- name: Test
run: npm test
env:
NODE_OPTIONS: '--max_old_space_size=4096'
- name: Compress output
if: always()
run: tar -cvf coverage.tar coverage
- uses: actions/upload-artifact@v4
if: always()
with:
name: coverage
path: coverage.tar
test_docs:
if: github.repository_owner == 'pnp'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Cache node modules
id: cache
uses: actions/cache@v4
with:
path: |
**/docs/node_modules
key: docs_node_modules-${{ hashFiles('**/docs/package-lock.json') }}
- name: Restore dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: npm ci
working-directory: docs
- name: Build docs
run: npm run build
working-directory: docs
publish:
if: github.repository_owner == 'pnp'
needs: [test, test_docs]
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
steps:
- uses: actions/download-artifact@v4
with:
name: build
- name: Unpack build artifact
run: tar -xvf build.tar && rm build.tar
- name: Use Node.js 20
uses: actions/setup-node@v4
with:
node-version: 20
registry-url: 'https://registry.npmjs.org'
- name: Cache node modules
id: cache
uses: actions/cache@v4
with:
path: |
**/node_modules
key: node_modules-ubuntu-latest-20-${{ hashFiles('**/npm-shrinkwrap.json') }}
- name: Restore dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: npm ci
- name: Publish @latest
run: npm publish --access public --provenance
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
deploy_docker:
if: github.repository_owner == 'pnp'
needs: publish
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
with:
name: build
- name: Unpack build artifact
run: tar -xvf build.tar && rm build.tar
- name: Use Node.js 20
uses: actions/setup-node@v4
with:
node-version: 20
registry-url: 'https://registry.npmjs.org'
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Extract version from package
id: package_version
run: |
echo "version=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT
- name: Wait for npm publish
run: node scripts/wait-npm-publish.js latest ${{ steps.package_version.outputs.version }}
- name: Build and push ${{ steps.package_version.outputs.version }}
uses: docker/build-push-action@v5
with:
push: true
tags: m365pnp/cli-microsoft365:${{ steps.package_version.outputs.version }}
build-args: |
CLI_VERSION=${{ steps.package_version.outputs.version }}
- name: Build and push latest
uses: docker/build-push-action@v5
with:
push: true
tags: m365pnp/cli-microsoft365:latest
build-args: |
CLI_VERSION=${{ steps.package_version.outputs.version }}