--- name: Build on: schedule: - cron: "0 0 * * *" workflow_dispatch: inputs: gitRef: description: "Emacs git ref to build" required: true default: "master" extraPlanArgs: Description: "Extra plan args" required: false default: "" extraBuildArgs: Description: "Extra build args" required: false default: "" extraReleaseArgs: Description: "Extra release args" required: false default: "" jobs: build-and-publish: runs-on: macos-10.15 steps: - name: Checkout emacs-builds repo uses: actions/checkout@v2 with: path: releaser - name: Checkout build-emacs-for-macos repo uses: actions/checkout@v2 with: repository: jimeh/build-emacs-for-macos ref: "0.4.14" path: builder - uses: ruby/setup-ruby@v1 with: ruby-version: 2.7 - uses: actions/setup-go@v2 with: go-version: 1.16 - name: Compile github-release tool run: >- go build -o ./github-release ./cmd/github-release working-directory: releaser - name: Plan build run: >- ./releaser/github-release --plan plan.yml plan --work-dir '${{ github.workspace }}' ${{ github.event.inputs.extraPlanArgs }} ${{ github.event.inputs.gitRef }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Show plan run: >- cat plan.yml - name: Check if planned release and asset already exist id: check continue-on-error: true run: >- ./releaser/github-release --plan plan.yml check env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Install dependencies if: steps.check.outcome == 'failure' run: >- brew bundle --file=builder/Brewfile - name: Build Emacs if: steps.check.outcome == 'failure' run: >- ./builder/build-emacs-for-macos --plan=plan.yml --work-dir '${{ github.workspace }}' --native-full-aot ${{ github.event.inputs.extraReleaseArgs }} - name: Publish release if: steps.check.outcome == 'failure' run: >- ./releaser/github-release --plan plan.yml publish ${{ github.event.inputs.extraReleaseArgs }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}