Something went wrong. Try again.
Rules-based browser launcher for TUI + GNOME. switchyard.aly.codes
Something went wrong. Try again.
5.1 kB · 145 lines
YAML
at master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146on: push: branches: [master] tags: - "v*" pull_request: branches: [master] workflow_dispatch: inputs: publish: description: "Publish to AMO, Chrome Web Store, and GitHub Releases" type: boolean default: falsename: CIconcurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: truejobs: test: name: "Test" runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - uses: actions/setup-go@v6 with: go-version: "1.25" - uses: extractions/setup-just@v4 - name: Check generated Flatpak Go module sources run: | scripts/generate-flatpak-go-modules.py git diff --exit-code -- flatpak/go-modules.json - name: Test internal packages with coverage run: just test-coverage - name: Display coverage summary run: | echo "## Test Coverage Summary" >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY go tool cover -func=coverage.out >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY - name: Upload coverage report uses: actions/upload-artifact@v7 with: name: coverage-report path: coverage.out
build-webextension: name: "Build WebExtension" runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - uses: actions/setup-node@v6 with: node-version: "lts/*" - uses: extractions/setup-just@v4 - name: Bundle extension for Firefox and Chrome run: just bundle-extension - name: Validate Firefox manifest run: jq -e '.background.scripts == ["build/background.js"] and (.background.service_worker | not)' firefox-extension/manifest.json - name: Validate Chrome manifest run: | unzip -p switchyard-webextension-chrome.zip manifest.json > /tmp/manifest.chrome.json jq -e '.background.service_worker == "build/background.js" and (.background.scripts | not) and (.key | not)' /tmp/manifest.chrome.json - uses: actions/upload-artifact@v7 with: name: firefox-extension path: firefox-extension - uses: actions/upload-artifact@v7 with: name: chrome-extension path: switchyard-webextension-chrome.zip
build-flatpak: name: "Build Flatpak" runs-on: ubuntu-latest container: image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-50 options: --privileged steps: - uses: actions/checkout@v7 - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 with: bundle: io.github.alyraffauf.Switchyard.Devel-${{ github.sha }}-x86_64.flatpak manifest-path: flatpak/io.github.alyraffauf.Switchyard.Devel.yml cache-key: flatpak-builder arch: x86_64
publish-amo: name: "Publish to AMO" if: startsWith(github.ref, 'refs/tags/') || (github.event_name == 'workflow_dispatch' && inputs.publish) needs: [build-webextension] runs-on: ubuntu-latest steps: - uses: actions/setup-node@v6 with: node-version: "lts/*" - uses: actions/download-artifact@v8 with: name: firefox-extension path: firefox-extension - name: Submit to AMO run: npx web-ext sign --source-dir=firefox-extension --channel=listed --approval-timeout=0 --api-key=${{ secrets.AMO_JWT_ISSUER }} --api-secret=${{ secrets.AMO_JWT_SECRET }}
publish-cws: name: "Publish to Chrome Web Store" if: startsWith(github.ref, 'refs/tags/') || (github.event_name == 'workflow_dispatch' && inputs.publish) needs: [build-webextension] runs-on: ubuntu-latest steps: - uses: actions/setup-node@v6 with: node-version: "lts/*" - uses: actions/download-artifact@v8 with: name: chrome-extension path: . - name: Submit to Chrome Web Store run: npx chrome-webstore-upload-cli@3 upload --source switchyard-webextension-chrome.zip --auto-publish env: EXTENSION_ID: ${{ secrets.CWS_EXTENSION_ID }} CLIENT_ID: ${{ secrets.CWS_CLIENT_ID }} CLIENT_SECRET: ${{ secrets.CWS_CLIENT_SECRET }} REFRESH_TOKEN: ${{ secrets.CWS_REFRESH_TOKEN }}
publish-github: name: "Publish GitHub Release" if: startsWith(github.ref, 'refs/tags/') || (github.event_name == 'workflow_dispatch' && inputs.publish) needs: [build-flatpak, test, publish-amo, publish-cws] runs-on: ubuntu-latest permissions: contents: write steps: - name: Download Flatpak bundles uses: actions/download-artifact@v8 with: pattern: io.github.alyraffauf.Switchyard.Devel-${{ github.sha }}-*.flatpak merge-multiple: true - name: Create Release uses: softprops/action-gh-release@v3 with: files: | *.flatpak draft: false prerelease: false generate_release_notes: true fail_on_unmatched_files: true