Skip to content

Instantly share code, notes, and snippets.

@umanghome
Last active April 27, 2024 19:23
Show Gist options
  • Star 37 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • 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
@plutotechdev
Copy link

how do i add node version here

@SivasakthiMTR
Copy link

This is replacing all the files in the target branch. Is there any way to add new files to existing folder in target branch?

@micaelomota
Copy link

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [14.x]

    steps:
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
    
    - name: Install dependencies
      run: yarn install
    

@catalinux
Copy link

@SivasakthiMTR did you find any solution?

This is replacing all the files in the target branch. Is there any way to add new files to existing folder in target branch?

https://github.com/s0/git-publish-subdir-action

It says:

By default, this action will clear the target branch of any pre-existing files, and only keep those that are defined in the target FOLDER when the action was run.

@umanghome
Copy link
Author

@catalinux @SivasakthiMTR Does CLEAR_GLOBS_FILE not work?

@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