name: Build and Release on Tag on: push: tags: - 'v*' permissions: contents: write jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: ['lts/*'] steps: - uses: actions/checkout@v5 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} - run: npm i -g grunt-cli - run: npm install - run: grunt deploy-image: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - name: get-npm-version id: package-version uses: martinbeentjes/npm-get-version-action@v1.3.1 - name: Set up QEMU uses: docker/setup-qemu-action@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 - name: Login to Docker Hub uses: docker/login-action@v4 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push Docker image run: | echo "Using Dockerfile:" sed -n '1,20p' Dockerfile docker buildx build \ --file ./Dockerfile \ --pull \ --platform linux/amd64,linux/arm64 \ -t patrikx3/p3x-redis-ui:latest \ -t patrikx3/p3x-redis-ui:${{ steps.package-version.outputs.current-version }} \ . \ --push package-and-release-macos: runs-on: macos-latest steps: - uses: actions/checkout@v5 - name: Set up Node.js uses: actions/setup-node@v6 with: node-version: 'lts/*' - name: Install dependencies run: | yarn install rm -rf node_modules/cpu-features/ # - name: Decode and Install Certificates # env: # CERTIFICATE_P12_BASE64: ${{ secrets.CERTIFICATE_P12_BASE64 }} # CERTIFICATE_P12_PASSWORD: ${{ secrets.CERTIFICATE_P12_PASSWORD }} # run: | # echo $CERTIFICATE_P12_BASE64 | base64 --decode > certificate.p12 # security create-keychain -p actions temp.keychain # security import certificate.p12 -k ~/Library/Keychains/temp.keychain -P "$CERTIFICATE_P12_PASSWORD" -T /usr/bin/codesign # security list-keychains -s temp.keychain # security default-keychain -s temp.keychain # security unlock-keychain -p actions temp.keychain # security set-key-partition-list -S apple-tool:,apple: -s -k actions temp.keychain - name: Build and package macOS app # env: # APPLE_ID: ${{ secrets.APPLE_ID }} # APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} # APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }} # DEBUG: "*" run: npm run publish-macos # - name: Upload macOS build to GitHub Release uses: softprops/action-gh-release@v2.5.0 with: tag_name: ${{ github.ref_name }} token: ${{ github.token }} fail_on_unmatched_files: true overwrite_files: true files: | dist/*.dmg dist/*.zip dist/*.blockmap dist/latest-mac.yml package-and-release-windows: runs-on: windows-latest steps: - uses: actions/checkout@v5 - name: Set up Node.js uses: actions/setup-node@v6 with: node-version: 'lts/*' - name: Install dependencies run: | yarn install if (Test-Path "node_modules/cpu-features") { Remove-Item -Recurse -Force node_modules/cpu-features } shell: pwsh - name: Build and package Windows app run: npm run publish-windows env: GH_TOKEN: ${{ github.token }} GITHUB_TOKEN: ${{ github.token }} - name: Upload Windows build to GitHub Release uses: softprops/action-gh-release@v2.5.0 with: token: ${{ github.token }} fail_on_unmatched_files: true overwrite_files: true files: | dist/*.exe dist/*.blockmap dist/latest.yml