Skip to content

Instantly share code, notes, and snippets.

@umanghome
Last active May 12, 2024 14:27
Show Gist options
  • Save umanghome/30527c68cd605dfef8702a832ff14fd5 to your computer and use it in GitHub Desktop.
Save umanghome/30527c68cd605dfef8702a832ff14fd5 to your computer and use it in GitHub Desktop.
GitHub Action: Generate a build and push to another branch
# .github/workflows/publish.yml
name: Generate a build and push to another branch
on:
push:
branches:
- master # Remove this line if your primary branch is "main"
- main # Remove this line if your primary branch is "master"
jobs:
build:
runs-on: ubuntu-latest
name: Build and Push
steps:
- name: git-checkout
uses: actions/checkout@v2
- name: Install all dependencies
run: npm install
- name: Build
run: npm run build # The build command of your project
- name: Push
uses: s0/git-publish-subdir-action@develop
env:
REPO: self
BRANCH: build # The branch name where you want to push the assets
FOLDER: build # The directory where your assets are generated
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # GitHub will automatically add this - you don't need to bother getting a token
MESSAGE: "Build: ({sha}) {msg}" # The commit message
@vdegenne
Copy link

That's really helpful, thanks

@vdegenne
Copy link

@micaelomota No need to write all that, just

      - uses: actions/setup-node@v3
        with:
          node-version: '18.x'

@rkorom
Copy link

rkorom commented Sep 18, 2023

First of all, thanks! Can I specify the directory that I would like to build? Becase I have a frontend and backend separated directory in same repository.

@umanghome
Copy link
Author

umanghome commented Sep 18, 2023

@rkorom Yes, you can add a step that contains a cd command. Let me know if that doesn't work or if you still need help.

@Tpleme
Copy link

Tpleme commented Oct 9, 2023

@rkorom

First of all, thanks! Can I specify the directory that I would like to build? Becase I have a frontend and backend separated directory in same repository.

You can specify the default directory after the build name and before the steps, for the coming steps by doing so:
Imagining that the build folder is inside a folder named "client"

    defaults:
        run:
          working-directory: ./client

keep in mind that but doing this you need to specify the FOLDER param on s0/git-publish-subdir-action@develop to ./client/build instead of just build

@ThatBlockyPenguin
Copy link

I'm getting this error:

remote: Write access to repository not granted.
fatal: unable to access 'https://github.com/<repo>.git/': The requested URL returned error: 403

Error: Process exited with code: 128:
remote: Write access to repository not granted.
fatal: unable to access 'https://github.com/<repo>.git/': The requested URL returned error: 403

    at ChildProcess.<anonymous> (/home/runner/work/_actions/s0/git-publish-subdir-action/develop/action/dist/index.js:11966:20)
    at ChildProcess.emit (node:events:513:[28](https://github.com/<repo>/actions/runs/7593337563/job/20683765413#step:5:29))
    at maybeClose (node:internal/child_process:1100:16)
    at Process.ChildProcess._handle.onexit (node:internal/child_process:[30](https://github.com/<repo>/actions/runs/7593337563/job/20683765413#step:5:31)4:5)

<repo> is my repository's path ("org/repo").

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment