Use short SHA to label evento-portal commit in build pipeline #38
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: build 🏭 integrate ⛙ zip 🗜️ | |
on: | |
push: | |
branches: [main] | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [18] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v3 | |
with: | |
path: dist | |
key: build-${{ github.sha }} | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: npm | |
- name: Build 🏭 | |
run: | | |
npm install | |
npm run build:prod | |
cp README.md dist && cp -r doc dist | |
integrate: | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- uses: actions/cache@v3 | |
with: | |
path: dist | |
key: build-${{ github.sha }} | |
- name: Checkout evento-portal | |
uses: actions/checkout@v4 | |
with: | |
repository: bkd-mba-fbi/evento-portal | |
token: ${{ secrets.WEBAPP_TO_PORTAL_TOKEN }} | |
path: ./evento-portal | |
- name: Copy new build to event-portal | |
run: | | |
# Replace all files except settings.js and index.html with the new build, deleting any obsolete files | |
rsync -av --exclude={settings.js,index.html} --delete dist/webapp-schulverwaltung/ evento-portal/public/apps/webapp-schulverwaltung/ | |
# Replace the styles in the existing index.html with those generated by the new build | |
# Slashes and backslashes have to be escaped in sed's input string | |
TMP=$(grep -o '<style>@import.*</noscript>' dist/webapp-schulverwaltung/index.html | sed 's/\\/\\\\/g' | sed 's/\//\\\//g') | |
sed -i "s/.*@import.*/ $TMP/" evento-portal/public/apps/webapp-schulverwaltung/index.html | |
- name: Commit and push to evento-portal | |
run: | | |
cd ./evento-portal | |
if [ -z "$(git status -s)" ]; then | |
echo "Nothing to commit" | |
else | |
git config user.name github-actions | |
git config user.email [email protected] | |
git add . | |
SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-8) | |
git commit -m "Add webapp-schulverwaltung build $SHORT_SHA" | |
git push | |
fi | |
zip: | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v3 | |
with: | |
path: dist | |
key: build-${{ github.sha }} | |
- name: Zip 🗜️ | |
run: | | |
(cd dist && zip --recurse-paths webapp-schulverwaltung.zip *) | |
mv dist/webapp-schulverwaltung dist/app | |
sed -e "s~https://eventotest.api~$API_URL~g" dist/app/settings.example.js > dist/app/settings.js | |
- name: Upload | |
uses: JamesIves/[email protected] | |
with: | |
branch: gh-pages # The branch the action should deploy to. | |
folder: dist # The folder the action should deploy. |