name: Build All & Release on: push: branches: [master, test/git-actions] tags: - v* jobs: linux-bin-and-snap-release: runs-on: ubuntu-latest steps: - uses: actions/setup-node@v3 with: node-version: 16 - name: Check out Git repository uses: actions/checkout@v4 with: persist-credentials: false # work around for npm installs from git+https://github.com/johannesjo/J2M.git - name: Reconfigure git to use HTTP authentication run: > git config --global url."https://github.com/".insteadOf ssh://git@github.com/ - name: Get npm cache directory id: npm-cache-dir run: | echo "::set-output name=dir::$(npm config get cache)" - uses: actions/cache@v3 id: npm-cache # use this to check for `cache-hit` ==> if: steps.npm-cache.outputs.cache-hit != 'true' with: path: ${{ steps.npm-cache-dir.outputs.dir }} key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - name: Install npm Packages # if: steps.npm-cache.outputs.cache-hit != 'true' run: npm i - name: Lint run: npm run lint - name: Test Unit run: npm run test - name: Test E2E run: npm run e2e - name: Build Frontend & Electron run: npm run build - name: Build/Release Electron app uses: samuelmeuli/action-electron-builder@v1 with: build_script_name: empty github_token: ${{ secrets.github_token }} release: ${{ startsWith(github.ref, 'refs/tags/v') }} env: SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }} - name: Install Snapcraft uses: samuelmeuli/action-snapcraft@v1 env: SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }} # rename to possibly fix release issue - run: find ./app-builds -type f -name '*.snap' -exec sh -c 'x="{}"; mv "$x" "app-builds/sp.snap"' \; # Release to edge if no tag and to candidate if tag - run: snapcraft push app-builds/sp.snap --release edge if: false == startsWith(github.ref, 'refs/tags/v') env: SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }} - run: snapcraft push app-builds/sp.snap --release candidate if: startsWith(github.ref, 'refs/tags/v') env: SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }} mac-bin: runs-on: macos-latest if: startsWith(github.ref, 'refs/tags/v') steps: - uses: actions/setup-node@v3 with: node-version: 16 - name: Echo is Release run: echo "IS_RELEASE $IS_RELEASE, ${{ startsWith(github.ref, 'refs/tags/v') }}" env: IS_RELEASE: ${{ startsWith(github.ref, 'refs/tags/v') }} - name: Check out Git repository uses: actions/checkout@v4 with: persist-credentials: false # work around for npm installs from git+https://github.com/johannesjo/J2M.git - name: Reconfigure git to use HTTP authentication run: > git config --global url."https://github.com/".insteadOf ssh://git@github.com/ - name: Get npm cache directory id: npm-cache-dir run: | echo "::set-output name=dir::$(npm config get cache)" - uses: actions/cache@v3 id: npm-cache # use this to check for `cache-hit` ==> if: steps.npm-cache.outputs.cache-hit != 'true' with: path: ${{ steps.npm-cache-dir.outputs.dir }} key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - name: Install npm Packages # if: steps.npm-cache.outputs.cache-hit != 'true' run: npm i - run: 'echo "$PROVISION_PROFILE" | base64 --decode > embedded.provisionprofile' shell: bash env: PROVISION_PROFILE: ${{secrets.dl_provision_profile}} - name: Prepare for app notarization # Import Apple API key for app notarization on macOS run: | mkdir -p ~/private_keys/ echo '${{ secrets.mac_api_key }}' > ~/private_keys/AuthKey_${{ secrets.mac_api_key_id }}.p8 - name: Lint run: npm run lint - name: Test Unit run: npm run test # - uses: browser-actions/setup-chrome@v1 # id: setup-chrome # - run: | # echo Installed chromium version: ${{ steps.setup-chrome.outputs.chrome-version }} # ${{ steps.setup-chrome.outputs.chrome-path }} --version # Disabled because not working atm: https://github.com/johannesjo/super-productivity/actions/runs/5924016145/job/16060737982 # - name: Test E2E # run: npm run e2e - name: Build Frontend & Electron run: npm run build - name: Build/Release Electron app uses: samuelmeuli/action-electron-builder@v1 with: build_script_name: empty github_token: ${{ secrets.github_token }} mac_certs: ${{ secrets.mac_certs }} mac_certs_password: ${{ secrets.mac_certs_password }} release: ${{ startsWith(github.ref, 'refs/tags/v') }} # env: # macOS notarization API key # API_KEY_ID: ${{ secrets.mac_api_key_id }} # API_KEY_ISSUER_ID: ${{ secrets.mac_api_key_issuer_id }} windows-bin: runs-on: windows-latest if: startsWith(github.ref, 'refs/tags/v') steps: - uses: actions/setup-node@v3 with: node-version: 16 # required because setting via env.TZ does not work on windows - name: Set timezone to Europe Standard Time uses: szenius/set-timezone@v1.2 with: timezoneWindows: 'W. Europe Standard Time' - name: Check out Git repository uses: actions/checkout@v4 with: persist-credentials: false # work around for npm installs from git+https://github.com/johannesjo/J2M.git - name: Reconfigure git to use HTTP authentication run: > git config --global url."https://github.com/".insteadOf ssh://git@github.com/ - name: Get npm cache directory id: npm-cache-dir run: | echo "::set-output name=dir::$(npm config get cache)" - uses: actions/cache@v3 id: npm-cache # use this to check for `cache-hit` ==> if: steps.npm-cache.outputs.cache-hit != 'true' with: path: ${{ steps.npm-cache-dir.outputs.dir }} key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - name: Install npm Packages # if: steps.npm-cache.outputs.cache-hit != 'true' run: npm i - name: Lint run: npm run lint - name: Test Unit run: npm run test - name: Build Frontend & Electron run: npm run build - name: Build/Release Electron app uses: samuelmeuli/action-electron-builder@v1 with: build_script_name: empty github_token: ${{ secrets.github_token }} release: ${{ startsWith(github.ref, 'refs/tags/v') }}