x-site_matrix: &site_matrix - site: "test" dest: "/var/www/crashtest" config_file: "test.json" # - site: "harbor" # dest: /var/www/harbor # secret_key: "CONFIG_HARBOR" # - site: "atlantis" # dest: /var/www/atlantis # secret_key: "CONFIG_ATLANTIS" # - site: "amiral" # dest: /var/www/amiral # secret_key: "CONFIG_AMIRAL" name: Build and deploy all on: push: branches: - main jobs: build: runs-on: docker strategy: matrix: include: *site_matrix steps: - name: Debug Matrix run: | echo "Full Matrix Site: '${{ matrix.site }}'" echo "Full Matrix Config: '${{ matrix.config_file }}'" echo "Dump Matrix Context: " echo '${{ toJSON(matrix) }}' - name: Checkout git repository uses: actions/checkout@v4 with: path: "source" - name: Retrieve configs uses: actions/checkout@v4 with: repository: ${{ secrets.CONFIG_REPO }} token: ${{ secrets.CONFIG_REPO_TOKEN }} path: "configs" - name: Install pnpm uses: pnpm/action-setup@v4 with: version: 10 - name: Setup Nodejs uses: actions/setup-node@v4 with: node-version: 22 - name: Install dependencies and config run: | cp ./configs/${{ matrix.config_file }} ./source/src/data/content.json cd ./source pnpm install - name: Build the project run: pnpm run build with: path: "source" - name: Save the result for deployment uses: actions/upload-artifact@v4 with: name: build-${{ matrix.site }} path: "source/dist/" deploy: needs: build runs-on: docker strategy: matrix: *site_matrix steps: - name: Setup SSH env: SSH_KEY: ${{ secrets.SSH_PRIVATE_KEY }} run: | mkdir -p ~/.ssh echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa ssh-keyscan -p ${{ secrets.SERVER_PORT }} -H ${{ secrets.SERVER_IP }} >> ~/.ssh/known_hosts - name: Push run: | rsync -avz -e "ssh -p ${{ secrets.SERVER_PORT }}" --delete ./dist/ ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_IP }}:${{ matrix.dest }} notify: needs: deploy runs-on: docker if: always() # Always run steps: - name: Send Discord Notification uses: https://github.com/appleboy/discord-action@master with: color: ${{ needs.deploy.result == 'success' && '48867' || '16711680' }} message: | **Deployment Report** **Status:** ${{ needs.deploy.result }} **Repo:** ${{ github.repository }} **Commit:** ${{ github.sha }} webhook_id: ${{ secrets.DISCORD_WEBHOOK_ID }} webhook_token: ${{ secrets.DISCORD_WEBHOOK_TOKEN }} # For later # - name: Send Matrix Notification # uses: s707/matrix-action@master # with: # server_url: https://matrix.org # room_id: ${{ secrets.MATRIX_ROOM_ID }} # access_token: ${{ secrets.MATRIX_ACCESS_TOKEN }} # message: "Deployment of ${{ gitea.repository }} finished with status: ${{ needs.deploy.result }}"