name: Artifact on: push: tags: [ 'v*' ] release: types: [released] workflow_dispatch: inputs: version: description: 'Release version' required: true jobs: build: runs-on: ubuntu-latest steps: - name: Checkout source code uses: actions/checkout@v4 - name: Setup Node uses: actions/setup-node@v3 with: node-version: 22.x - name: Cache node_modules uses: actions/cache@v4 id: cache-npm-packages with: path: node_modules key: ${{ runner.OS }}-build-${{ hashFiles('**/package-lock.json') }} - name: Install NPM dependencies if: steps.cache-npm-packages.outputs.cache-hit != 'true' run: npm ci --legacy-peer-deps - name: Cache build frontend uses: actions/cache@v4 id: cache-build-frontend with: path: frontend key: ${{ runner.os }}-frontend-${{ github.sha }} - name: Run build production application run: npm run buildfrontend - name: Cache build backend uses: actions/cache@v4 id: cache-build-backend with: path: backend key: ${{ runner.os }}-backend-${{ github.sha }} - name: Run build backend server run: npm run buildbackend deploy: runs-on: ubuntu-latest needs: build steps: - name: Checkout source code uses: actions/checkout@v4 - name: Cache build frontend uses: actions/cache@v4 id: cache-build-frontend with: path: frontend key: ${{ runner.os }}-frontend-${{ github.sha }} - name: Cache build backend uses: actions/cache@v4 id: cache-build-backend with: path: backend key: ${{ runner.os }}-backend-${{ github.sha }} - name: Compress files env: VERSION: "${{ github.event.release.tag_name || github.event.inputs.version || '' }}" run: | tar -czf /tmp/rtl-build-$VERSION.tar.gz frontend backend rtl.js package.json package-lock.json zip -r /tmp/rtl-build-$VERSION.zip frontend backend rtl.js package.json package-lock.json - uses: actions/upload-artifact@v4 with: name: rtl-build-${{ github.event.release.tag_name || github.event.inputs.version || '' }} path: | /tmp/rtl-build-${{ github.event.release.tag_name || github.event.inputs.version || '' }}.tar.gz /tmp/rtl-build-${{ github.event.release.tag_name || github.event.inputs.version || '' }}.zip