NPM publish expo-resource-fetcher #29
This file contains hidden or 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: NPM publish expo-resource-fetcher | |
| on: | |
| schedule: | |
| - cron: '01 00 * * *' # Every day at 00:01 UTC | |
| workflow_dispatch: | |
| inputs: | |
| latest-build: | |
| description: 'Whether to publish as a latest build' | |
| required: true | |
| type: boolean | |
| permissions: | |
| id-token: write | |
| contents: read | |
| concurrency: | |
| group: 'npm-expo-resource-fetcher-build' | |
| cancel-in-progress: false | |
| jobs: | |
| build: | |
| if: github.repository == 'software-mansion/react-native-executorch' | |
| runs-on: ubuntu-latest | |
| environment: deployment | |
| permissions: | |
| contents: read | |
| id-token: write | |
| env: | |
| PACKAGE_DIR: packages/expo-resource-fetcher | |
| PACKAGE_VERSION: PLACEHOLDER | |
| PACKAGE_NAME: PLACEHOLDER | |
| TAG: PLACEHOLDER | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22.22.1 | |
| cache: 'yarn' | |
| registry-url: https://registry.npmjs.org/ | |
| - name: Update NPM | |
| run: npm install -g npm@latest | |
| - name: Determine version | |
| working-directory: ${{ env.PACKAGE_DIR }} | |
| run: | | |
| VERSION=$(jq -r .version package.json) | |
| echo "PACKAGE_VERSION=$VERSION" >> $GITHUB_ENV | |
| - name: Assert PACKAGE_VERSION | |
| if: ${{ env.PACKAGE_VERSION == 'PLACEHOLDER' }} | |
| run: exit 1 # this should never happen | |
| - name: Install monorepo dependencies | |
| run: yarn install --immutable | |
| - name: Set tag | |
| run: | | |
| if [[ "${{ inputs.latest-build }}" != "true" ]]; then | |
| echo "TAG=executorch-nightly" >> $GITHUB_ENV | |
| else | |
| echo "TAG=latest" >> $GITHUB_ENV | |
| fi | |
| - name: Assert tag | |
| if: ${{ env.TAG == 'PLACEHOLDER' }} | |
| run: exit 1 # this should never happen | |
| - name: Set nightly version | |
| if: ${{ !inputs.latest-build }} | |
| working-directory: ${{ env.PACKAGE_DIR }} | |
| run: | | |
| VERSION=${{ env.PACKAGE_VERSION }} | |
| IFS='.' read -r MAJOR MINOR PATCH <<< "$VERSION" | |
| GIT_COMMIT=$(git rev-parse HEAD) | |
| DATE=$(date +%Y%m%d) | |
| NIGHTLY_UNIQUE_NAME="${GIT_COMMIT:0:7}-$DATE" | |
| sed -i "3s/.*/ \"version\": \"$MAJOR.$MINOR.$PATCH-nightly-$NIGHTLY_UNIQUE_NAME\",/" package.json | |
| - name: Build core package | |
| working-directory: packages/react-native-executorch | |
| run: yarn prepare | |
| - name: Build package | |
| working-directory: ${{ env.PACKAGE_DIR }} | |
| run: yarn prepare | |
| - name: Pack package | |
| working-directory: ${{ env.PACKAGE_DIR }} | |
| run: npm pack | |
| - name: Restore version | |
| if: ${{ !inputs.latest-build }} | |
| working-directory: ${{ env.PACKAGE_DIR }} | |
| run: | | |
| VERSION=${{ env.PACKAGE_VERSION }} | |
| sed -i "3s/.*/ \"version\": \"$VERSION\",/" package.json | |
| - name: Add package name to env | |
| working-directory: ${{ env.PACKAGE_DIR }} | |
| run: echo "PACKAGE_NAME=$(ls -l | egrep -o "react-native-executorch-expo-resource-fetcher-(.*)(=?\.tgz)")" >> $GITHUB_ENV | |
| - name: Assert package name | |
| if: ${{ env.PACKAGE_NAME == 'PLACEHOLDER' }} | |
| run: exit 1 # this should never happen | |
| - name: Upload package to GitHub | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ env.PACKAGE_NAME }} | |
| path: ${{ env.PACKAGE_DIR }}/${{ env.PACKAGE_NAME }} | |
| - name: Move package to monorepo root | |
| run: mv ${{ env.PACKAGE_DIR }}/${{ env.PACKAGE_NAME }} . | |
| - name: Publish package to npm | |
| run: npm publish $PACKAGE_NAME --tag ${{ env.TAG }} --provenance --access public |