Merge pull request #1091 from newrelic/sunny/bump-theme #2480
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release | |
on: | |
push: | |
branches: | |
- develop | |
repository_dispatch: | |
types: [semantic-release] | |
env: | |
THIRD_PARTY_GIT_AUTHOR_EMAIL: [email protected] | |
THIRD_PARTY_GIT_AUTHOR_NAME: svc-docs-eng-opensource-bot | |
jobs: | |
job-generate-third-party-notices: | |
runs-on: ubuntu-latest | |
steps: | |
# Checkout fetch-depth: 2 because there's a check to see if package.json | |
# was updated, and need at least 2 commits for the check to function properly | |
- name: Checkout repo | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 2 | |
- name: Setup Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- name: Download Cached Deps | |
id: cache-node-modules | |
uses: actions/cache@v3 | |
env: | |
cache-name: node-modules | |
with: | |
path: '**/node_modules' | |
key: ${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('**/yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-${{ env.cache-name }}- | |
- name: Install Dependencies | |
run: yarn install --frozen-lockfile | |
- name: Install OSS CLI | |
run: | | |
sudo yarn global add @newrelic/newrelic-oss-cli | |
- name: Generate Third Party Notices | |
id: generate-notices | |
run: | | |
if [ ! -f "third_party_manifest.json" ]; then | |
echo "::error::third_party_manifest.json is missing. Must generate using the newrelic-oss-cli." | |
exit 1 | |
fi | |
# latest commit | |
LATEST_COMMIT=$(git rev-parse HEAD) | |
# latest commit where package.json was changed | |
LAST_CHANGED_COMMIT=$(git log -1 --format=format:%H --full-diff package.json) | |
if [ $LAST_CHANGED_COMMIT = $LATEST_COMMIT ]; then | |
git config user.email "${{ env.THIRD_PARTY_GIT_AUTHOR_EMAIL }}" | |
git config user.name "${{ env.THIRD_PARTY_GIT_AUTHOR_NAME }}" | |
oss third-party manifest | |
oss third-party notices | |
git add third_party_manifest.json | |
git add THIRD_PARTY_NOTICES.md | |
git commit -m 'chore: update third-party manifest and notices [skip-cd]' | |
echo "commit=true" >> $GITHUB_OUTPUT | |
else | |
echo "No change in package.json, not regenerating third-party notices" | |
fi | |
- name: Temporarily disable branch protection | |
id: disable-branch-protection | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{ secrets.DOCS_ENG_BOT_TOKEN }} | |
previews: luke-cage-preview | |
script: | | |
const result = await github.rest.repos.updateBranchProtection({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
branch: 'develop', | |
restrictions: null, | |
enforce_admins: null, | |
required_pull_request_reviews: null, | |
required_status_checks: null | |
}) | |
console.log("Result:", result) | |
- name: Push Commit | |
if: steps.generate-notices.outputs.commit == 'true' | |
uses: ad-m/[email protected] | |
with: | |
github_token: ${{ secrets.DOCS_ENG_BOT_TOKEN }} | |
branch: develop | |
- name: Re-enable branch protection | |
id: enable-branch-protection | |
if: always() | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{ secrets.DOCS_ENG_BOT_TOKEN }} | |
previews: luke-cage-preview | |
script: | | |
const result = await github.rest.repos.updateBranchProtection({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
branch: 'develop', | |
required_status_checks: null, | |
restrictions: { | |
users: [], | |
teams: ['docs-engineering'] | |
}, | |
enforce_admins: true, | |
required_pull_request_reviews: { | |
dismiss_stale_reviews: true, | |
required_approving_review_count: 1 | |
} | |
}) | |
console.log("Result:", result) | |
job-generate-release: | |
runs-on: ubuntu-latest | |
needs: [job-generate-third-party-notices] | |
steps: | |
# Checkout ref: develop because previous job potentially committed third_party_notices and | |
# we need to checkout latest to pick up that commit | |
- name: Checkout repo | |
uses: actions/checkout@v3 | |
with: | |
ref: develop | |
- name: Setup Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- name: Install dependencies | |
run: yarn install --frozen-lockfile | |
- name: Temporarily disable branch protection | |
id: disable-branch-protection | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{ secrets.DOCS_ENG_BOT_TOKEN }} | |
previews: luke-cage-preview | |
script: | | |
const result = await github.rest.repos.updateBranchProtection({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
branch: 'develop', | |
required_status_checks: null, | |
restrictions: null, | |
enforce_admins: null, | |
required_pull_request_reviews: null | |
}) | |
console.log("Result:", result) | |
- name: Release | |
env: | |
# Use svc-docs-eng-opensource-bot for authoring commits done by | |
# semantic-release (rather than using @semantic-release-bot) | |
GIT_AUTHOR_NAME: 'svc-docs-eng-opensource-bot' | |
GIT_AUTHOR_EMAIL: '[email protected]' | |
GIT_COMMITTER_NAME: 'svc-docs-eng-opensource-bot' | |
GIT_COMMITTER_EMAIL: '[email protected]' | |
GITHUB_TOKEN: ${{ secrets.DOCS_ENG_BOT_TOKEN }} | |
run: npx semantic-release@^18.0.0 | |
- name: Re-enable branch protection | |
id: enable-branch-protection | |
if: always() | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{ secrets.DOCS_ENG_BOT_TOKEN }} | |
previews: luke-cage-preview | |
script: | | |
const result = await github.rest.repos.updateBranchProtection({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
branch: 'develop', | |
required_status_checks: null, | |
restrictions: { | |
users: [], | |
teams: [] | |
}, | |
enforce_admins: true, | |
required_pull_request_reviews: { | |
dismiss_stale_reviews: true, | |
required_approving_review_count: 1 | |
} | |
}) | |
console.log("Result:", result) |