Skip to content

Tagged Release Publisher #128

Tagged Release Publisher

Tagged Release Publisher #128

name: Tagged Release Publisher
permissions:
id-token: write
contents: write
actions: write
deployments: write
pull-requests: read
on:
workflow_dispatch:
jobs:
create-tagged-release:
name: Build and Create Tagged Release
runs-on: ubuntu-latest
steps:
- name: Checkout source code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get tag
uses: project-error/get-tag@v1.0
with:
environment: "prod"
prerelease: false
id: get_tag
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Bump manifest version
run: node .github/actions/bump-manifest-version.js
env:
TGT_RELEASE_VERSION: ${{ steps.get_tag.outputs.release_tag }}
- name: Push manifest change
uses: EndBug/add-and-commit@v8
with:
add: fxmanifest.lua
push: true
author_name: Manifest Bumper
author_email: 41898282+github-actions[bot]@users.noreply.github.com
message: "chore: bump manifest version to ${{ steps.get_tag.outputs.release_tag }}"
- name: Checkout source code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install pnpm
uses: pnpm/action-setup@v2.2.2
with:
version: 7.29.1
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: 16.x
cache: 'pnpm'
- name: Install dependencies
run: pnpm i --frozen-lockfile
- name: Run build
run: REACT_APP_VERSION=${{ steps.get_tag.outputs.VERSION_TAG }} pnpm build
#- name: Create Sentry Release (NPWD)
# run: |
# curl -sL https://sentry.io/get-cli/ | bash
# export SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}
# export SENTRY_ORG=project-error
# export SENTRY_PROJECT=npwd
# export SENTRY_URL=https://sentry.projecterror.dev/
# export VERSION=${{ steps.get_tag.outputs.VERSION_TAG }}
# sentry-cli releases new "$VERSION"
# sentry-cli releases set-commits "$VERSION" --auto
# sentry-cli releases files "$VERSION" upload-sourcemaps resources/html --ext map --url-prefix '~/resources/html'
# sentry-cli releases finalize "$VERSION"
# sentry-cli releases deploys "$VERSION" new -e production
- name: Bundle built files
run: |
mkdir -p ./temp/npwd/dist
cp ./{LICENSE,README.md,config.json,import.sql,fxmanifest.lua} ./temp/npwd/
cp -r ./dist/{game,html} ./temp/npwd/dist
cd ./temp && zip -r ../npwd.zip ./npwd
- name: Create Release
uses: "project-error/release-action@v2.1"
id: auto_release
with:
environment: "prod"
title: NPWD ${{ steps.get_tag.outputs.release_tag }}
prerelease: false
automatic_release_tag: ${{ steps.get_tag.outputs.release_tag }}
files: npwd.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload artifacts
run: |
curl -L \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
-H "Content-Type: application/octet-stream" \
"https://uploads.github.com/repos/project-error/npwd/releases/${{ steps.auto_release.outputs.release_id }}/assets?name=npwd.zip" \
--data-binary "@npwd.zip"
build-npwd-packages:
name: Build NPWD packages
runs-on: ubuntu-latest
needs: create-tagged-release
steps:
- name: Get tag
run: echo ::set-output name=VERSION_TAG::${GITHUB_REF/refs\/tags\//}
id: get_tag
- name: Checkout source code
uses: actions/checkout@v2
with:
fetch-depth: 0
ref: ${{ github.ref }}
- name: Install pnpm
uses: pnpm/action-setup@v2.2.2
with:
version: 7.29.1
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: 16.x
cache: 'pnpm'
- name: Install dependencies
run: pnpm i --frozen-lockfile
# Build all packages
- name: Build @npwd/types
run: |
pnpm generate:typings
cd ./packages/npwd-types
git config user.email "chip@projecterror.dev"
git config user.name "itschip"
pnpm version --new-version ${{ steps.get_tag.outputs.release_tag }}
- name: Release @npwd/types
uses: JS-DevTools/npm-publish@v1
with:
token: ${{ secrets.NPM_TOKEN }}
package: './packages/npwd-types/package.json'
access: 'public'
- name: Build @npwd/hooks
run: |
cd ./packages/npwd-hooks
pnpm build
git config user.email "chip@projecterror.dev"
git config user.name "itschip"
pnpm version --new-version ${{ steps.get_tag.outputs.release_tag }}
- name: Release @npwd/hooks
uses: JS-DevTools/npm-publish@v1
with:
token: ${{ secrets.NPM_TOKEN }}
package: './packages/npwd-hooks/package.json'
access: 'public'