Merge pull request #516 from tgstation/dependabot/npm_and_yarn/swagge… #534
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: Deploy code | |
on: | |
push: | |
branches: | |
- next | |
- back-patch | |
workflow_dispatch: | |
jobs: | |
deploy: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [20.x] | |
steps: | |
- name: Install Native Dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y expect-dev | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-tags: true | |
- name: Check if version is tagged | |
id: get-tag | |
run: | | |
set +ea | |
git describe --exact-match HEAD | |
if [ $? -eq 0 ]; then | |
echo "deploy_tag=$(git describe --exact-match HEAD)" >> $GITHUB_OUTPUT | |
else | |
echo "deploy_tag=FAILED" >> $GITHUB_OUTPUT | |
fi | |
- name: Restore Yarn cache | |
uses: actions/cache@v4 | |
with: | |
path: .yarn/cache | |
key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Setup Yarn | |
run: corepack enable | |
- name: Install Yarn Dependencies | |
run: | | |
unbuffer yarn install --immutable | tee yarn_output.log | |
if cat yarn_output.log | grep YN0060; then | |
echo "Detected incompatible peer dependencies!" | |
exit 1 | |
fi | |
- name: Compile | |
if: steps.get-tag.outputs.deploy_tag != 'FAILED' | |
run: yarn run build --env GITHUB_CD --env GITHUB_SHA=$GITHUB_SHA --env GITHUB_TAG="${{ steps.get-tag.outputs.deploy_tag }}" | |
- name: Compile (no tag) | |
if: steps.get-tag.outputs.deploy_tag == 'FAILED' | |
run: yarn run build --env GITHUB_CD --env GITHUB_SHA=$GITHUB_SHA | |
#Safety against pushing broken code | |
- name: Run ESLint | |
run: yarn eslint "**/*.{js,jsx,ts,tsx}" | |
- name: Create workdir | |
run: | | |
git fetch origin live | |
git worktree add $HOME/webpanellive origin/live | |
touch $HOME/webpanellive/.nojekyll | |
- name: Copy files | |
run: | | |
export WEBPANEL_VERSION=$(node -pe "require('./package.json').version") | |
export API_VERSION=$(node -pe "require('./package.json').tgs_api_version") | |
rm -rf $HOME/webpanellive/api/$API_VERSION | |
rm -rf $HOME/webpanellive/webpanel/$WEBPANEL_VERSION | |
mkdir -p $HOME/webpanellive/webpanel/$WEBPANEL_VERSION | |
cp ./dist/* $HOME/webpanellive/webpanel/$WEBPANEL_VERSION -R | |
cd $HOME/webpanellive/api | |
ln -s ../webpanel/$WEBPANEL_VERSION $API_VERSION | |
- name: Deploy to Github | |
if: steps.get-tag.outputs.deploy_tag != 'FAILED' | |
run: | | |
cd $HOME/webpanellive | |
git config --local user.email "161980869+tgstation-server-ci[bot]@users.noreply.github.com" | |
git config --local user.name "tgstation-server-ci[bot]" | |
git add * | |
git commit -m "Update webpanel" | |
git pull --rebase origin live | |
git push origin HEAD:live |