name: Jan Build Electron App on: push: tags: ['v*.*.*'] jobs: build-macos: runs-on: macos-latest environment: production permissions: contents: write steps: - name: Getting the repo uses: actions/checkout@v3 - name: Installing node uses: actions/setup-node@v1 with: node-version: 20 - name: Install jq uses: dcarbone/install-jq-action@v2.0.1 - name: Get tag id: tag uses: dawidd6/action-get-tag@v1 - name: Update app version base on tag run: | if [[ ! "${VERSION_TAG}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then echo "Error: Tag is not valid!" exit 1 fi jq --arg version "${VERSION_TAG#v}" '.version = $version' electron/package.json > /tmp/package.json mv /tmp/package.json electron/package.json env: VERSION_TAG: ${{ steps.tag.outputs.tag }} - name: Get Cer for code signing run: base64 -d <<< "$CODE_SIGN_P12_BASE64" > /tmp/codesign.p12 shell: bash env: CODE_SIGN_P12_BASE64: ${{ secrets.CODE_SIGN_P12_BASE64 }} - uses: apple-actions/import-codesign-certs@v2 with: p12-file-base64: ${{ secrets.CODE_SIGN_P12_BASE64 }} p12-password: ${{ secrets.CODE_SIGN_P12_PASSWORD }} - name: Install yarn dependencies run: | yarn install yarn build:plugins-darwin - name: Build and publish app run: | yarn build:publish-darwin env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} CSC_LINK: "/tmp/codesign.p12" CSC_KEY_PASSWORD: ${{ secrets.CODE_SIGN_P12_PASSWORD }} CSC_IDENTITY_AUTO_DISCOVERY: "true" APPLE_ID: ${{ secrets.APPLE_ID }} APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }} build-windows-x64: runs-on: windows-latest permissions: contents: write steps: - name: Getting the repo uses: actions/checkout@v3 - name: Installing node uses: actions/setup-node@v1 with: node-version: 20 - name: Install jq uses: dcarbone/install-jq-action@v2.0.1 - name: Get tag id: tag uses: dawidd6/action-get-tag@v1 - name: Update app version base on tag shell: bash run: | if [[ ! "${VERSION_TAG}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then echo "Error: Tag is not valid!" exit 1 fi jq --arg version "${VERSION_TAG#v}" '.version = $version' electron/package.json > /tmp/package.json mv /tmp/package.json electron/package.json env: VERSION_TAG: ${{ steps.tag.outputs.tag }} - name: Install yarn dependencies run: | yarn config set network-timeout 300000 yarn install yarn build:plugins - name: Build and publish app run: | yarn build:publish-win32 env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} build-linux-x64: runs-on: ubuntu-latest environment: production env: SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_TOKEN }} permissions: contents: write steps: - name: Getting the repo uses: actions/checkout@v3 - name: Installing node uses: actions/setup-node@v1 with: node-version: 20 - name: Install jq uses: dcarbone/install-jq-action@v2.0.1 - name: Install Snapcraft uses: samuelmeuli/action-snapcraft@v2 - name: Get tag id: tag uses: dawidd6/action-get-tag@v1 - name: Update app version base on tag run: | if [[ ! "${VERSION_TAG}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then echo "Error: Tag is not valid!" exit 1 fi jq --arg version "${VERSION_TAG#v}" '.version = $version' electron/package.json > /tmp/package.json mv /tmp/package.json electron/package.json env: VERSION_TAG: ${{ steps.tag.outputs.tag }} - name: Install yarn dependencies run: | yarn config set network-timeout 300000 yarn install yarn build:plugins - name: Build and publish app run: | yarn build:publish-linux env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} update_release_draft: needs: [build-macos, build-windows-x64, build-linux-x64] permissions: # write permission is required to create a github release contents: write # write permission is required for autolabeler # otherwise, read permission is required at least pull-requests: write runs-on: ubuntu-latest steps: # (Optional) GitHub Enterprise requires GHE_HOST variable set #- name: Set GHE_HOST # run: | # echo "GHE_HOST=${GITHUB_SERVER_URL##https:\/\/}" >> $GITHUB_ENV # Drafts your next Release notes as Pull Requests are merged into "master" - uses: release-drafter/release-drafter@v5 # (Optional) specify config name to use, relative to .github/. Default: release-drafter.yml # with: # config-name: my-config.yml # disable-autolabeler: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}