diff --git a/.github/workflows/github-release.yml b/.github/workflows/github-release.yml new file mode 100644 index 00000000..e2a4483e --- /dev/null +++ b/.github/workflows/github-release.yml @@ -0,0 +1,136 @@ +name: Publish package to Github + +on: + workflow_dispatch: + +jobs: + update-release-branch: + runs-on: ubuntu-latest + + steps: + - name: Checkout the repository + uses: actions/checkout@v3 + with: + ref: main + fetch-depth: 0 + persist-credentials: false + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + cache: "npm" + node-version: "21.7.3" + + - name: Update release branch + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + + # Check out or create the 'release' branch + git checkout -B release + + # Merge changes from 'main' into 'release' + git merge main --no-edit + + git remote set-url origin https://x-access-token:${{ secrets.INST_TOKEN }}@github.com/contentstack/live-preview-sdk.git + + # Push the updated release branch + git push origin release + + run-semantic-release: + needs: update-release-branch + runs-on: ubuntu-latest + + steps: + - name: Checkout the release branch + uses: actions/checkout@v3 + with: + fetch-depth: 0 + persist-credentials: false + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + cache: "npm" + node-version: "21.7.3" + + - name: Force branch to release + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + + git remote set-url origin https://x-access-token:${{ secrets.INST_TOKEN }}@github.com/contentstack/live-preview-sdk.git + + git pull + + echo "Current branch:" + git branch --show-current + + git checkout release + + echo "Current branch:" + git branch --show-current + + - name: Show current branches + run: git branch -a + + - name: Show current remotes + run: git remote -v + + - name: Reconfigure git to use HTTP authentication + run: git config --global url."https://${{ secrets.INST_TOKEN }}@github.com/".insteadOf ssh://git@github.com/ + + - name: Install dependencies + run: npm ci + env: + GITHUB_TOKEN: ${{ secrets.INST_TOKEN }} + NPM_TOKEN: ${{ secrets.INST_TOKEN }} + + - name: Run build + run: npm run build + env: + GITHUB_TOKEN: ${{ secrets.INST_TOKEN }} + NPM_TOKEN: ${{ secrets.INST_TOKEN }} + + - name: Create version + env: + GITHUB_TOKEN: ${{ secrets.INST_TOKEN }} + NPM_TOKEN: ${{ secrets.INST_TOKEN }} + run: npm version patch + + - name: Run semantic-release + env: + GITHUB_TOKEN: ${{ secrets.INST_TOKEN }} + NPM_TOKEN: ${{ secrets.INST_TOKEN }} + run: npm publish + + - name: Commit and push changes + run: | + git add -A + git commit -m "chore(release): update release branch [skip ci]" || echo "No changes to commit" + git push origin release || echo "No changes to push" + + create-pr: + needs: run-semantic-release + runs-on: ubuntu-latest + + steps: + - name: Checkout the release branch + uses: actions/checkout@v3 + with: + ref: main + fetch-depth: 0 + persist-credentials: false + + - name: Set email and name for git + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + git remote set-url origin https://x-access-token:${{ secrets.INST_TOKEN }}@github.com/contentstack/live-preview-sdk.git + + git pull + + - name: Create pull request + run: gh pr create -B main -H release --title 'Merge release into main [skip ci]' --body 'This PR syncs the changes from the release branch back into the main branch.' + env: + GITHUB_TOKEN: ${{ secrets.INST_TOKEN }} diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..fb795cb1 --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN} +@contentstack:registry=https://npm.pkg.github.com \ No newline at end of file