diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 18355c6..e459ad2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -name: Build +name: Build, Publish on: pull_request: @@ -8,13 +8,34 @@ env: NODE_VERSION: 20.x jobs: - setup: + + build: runs-on: ubuntu-latest steps: - - run: echo "Triggered by ${{ github.event_name }} event." - - name: Check out repository code ${{ github.repository }} on ${{ github.ref }} uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Configure Git user + run: | + git config --global user.email "pkgbot@form.io" + git config --global user.name "pkgbot" + + - name: Merge target branch into current branch + run: | + git fetch origin ${{ github.event.pull_request.base.ref }}:${{ github.event.pull_request.base.ref }} + git merge ${{ github.event.pull_request.base.ref }} --no-commit --no-ff + + - name: Check for merge conflicts + run: | + if ! git merge --no-commit --no-ff ${{ github.event.pull_request.base.ref }}; then + echo "Merge conflicts detected." + git merge --abort + exit 1 + else + echo "Merge successful." + fi - name: Set up Node.js ${{ env.NODE_VERSION }} uses: actions/setup-node@v3 @@ -32,23 +53,98 @@ jobs: key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-node- - - build: - needs: setup - runs-on: ubuntu-latest - steps: - - name: Check out repository code ${{ github.repository }} on ${{ github.ref }} - uses: actions/checkout@v3 - - - name: Restore node modules from cache - uses: actions/cache@v3 - with: - path: node_modules - key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node- - name: Build uses: borales/actions-yarn@v4 with: - cmd: build \ No newline at end of file + cmd: build + + - name: Upload build artifact + uses: actions/upload-artifact@v3 + with: + name: build-artifact + path: | + dist/ + lib/ + Changelog.md + README.md + package.json + + publish: + needs: build + runs-on: ubuntu-latest + steps: + - name: Download build artifact + uses: actions/download-artifact@v3 + with: + name: build-artifact + path: ./ + + - name: View downloaded build output + run: ls -a + + # publish: + # needs: [setup, build] + # if: ${{ github.event_name == 'pull_request' && (github.event.action == 'opened' || github.event.action == 'synchronize') }} + # runs-on: ubuntu-latest + # steps: + # - name: Check out repository code ${{ github.repository }} on ${{ github.ref }} + # uses: actions/checkout@v3 + + # - name: Configure Git user + # run: | + # git config --global user.email "pkgbot@form.io" + # git config --global user.name "pkgbot" + + # - name: Add npm token to .npmrc + # run: | + # echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc + + # - name: Set up Node.js ${{ env.NODE_VERSION }} + # uses: actions/setup-node@v3 + # with: + # node-version: ${{ env.NODE_VERSION }} + # cache: 'npm' + # registry-url: 'https://registry.npmjs.org/' + + # - name: Restore node modules from cache + # uses: actions/cache@v3 + # with: + # path: node_modules + # key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }} + # restore-keys: | + # ${{ runner.os }}-node- + + # - name: Build + # uses: borales/actions-yarn@v4 + # with: + # cmd: build + + # - name: Prepare version for publish + # id: prep + # run: | + # # Extract the pull request number and the short SHA of the commit + # PR_NUMBER=$(echo ${{ github.event.number }}) + # COMMIT_SHORT_SHA=$(echo "${{ github.event.pull_request.head.sha }}" | cut -c1-7) + + # # Extract the current version from package.json + # CURRENT_VERSION=$(node -p "require('./package.json').version") + + # # If the current version includes '-rc.', remove it and everything after + # # This step ensures that we start with a base version like '3.0.0' even if it was a release candidate + # BASE_VERSION=$(echo "$CURRENT_VERSION" | cut -d'-' -f1) + + # # Construct the new version string + # NEW_VERSION="${BASE_VERSION}-dev.${PR_NUMBER}.${COMMIT_SHORT_SHA}" + + # # Output the new version for use in subsequent GitHub Actions steps + # echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV + + # - name: Echo version to publish + # run: | + # echo "Version to publish: $NEW_VERSION" + + # - name: Publish to npm + # run: | + # npm version $NEW_VERSION + # yarn publish --tag dev \ No newline at end of file