Code on Github/Gitlab/Bitbucket

Game development with Board Game Arena Studio
User avatar
Tisaac
Posts: 2736
Joined: 26 August 2014, 21:28

Re: Code on Github/Gitlab/Bitbucket

Post by Tisaac »

grivin wrote: 13 July 2020, 11:35
Draasill wrote: 25 May 2020, 15:20 Note about github, it would be great that projects all have a tag "boardgamearena" in order for them to appear on the search : https://github.com/topics/boardgamearena
nice idea.
Updated mine with #boardgamearena (was using #board-game-arena and #bga)
I've also added mine ;)
User avatar
Spukyta
Posts: 6
Joined: 11 May 2020, 16:01

Re: Code on Github/Gitlab/Bitbucket

Post by Spukyta »

mujina93 wrote: 11 July 2020, 15:32 @Spukyta are you able to sync with the VSCode extension? I get a permission denied when I try to sync local -> remote
Hi @mujina93, I also got "permission denied" error because the remote path should not end with "/". I've already corrected it in my previous post and it's working now.

Code: Select all

{
    "name": "BGA",
    "host": "1.studio.boardgamearena.com",
    "protocol": "sftp",
    "port": 22,
    "username": "YOUR_SFTP_USERNAME",
    "password": "YOUR_SFTP_PWD",
    "remotePath": "/YOUR_FOLDER_NAME",   
    "uploadOnSave": true
} 
User avatar
Matthijs Kooijman
Posts: 2
Joined: 26 April 2020, 18:44

Re: Code on Github/Gitlab/Bitbucket

Post by Matthijs Kooijman »

I'm rather new to BGA, but have a lot of experience in open software contributions. I'd like to emphasize that having proper, public source control can really help to lower the barrier for external contributions and collaboration on software. So I'd recommend any developer to host their code on github or similar. It would be even nicer if BGA studio could somehow integrate external repositories to make them easier to work with and encourage people to work with them, but even without that, external repositories (along with pullrequests and related discussions about changes) can make a big difference, I think.

Anyway, I also noticed this thread mentioned tagging repositories on github and someone mentione you can auto-deplay to BGA using github actions, so I took the liberty of adding these as a recommendation and suggestion respectively at http://en.doc.boardgamearena.com/Tools_ ... on_Control, and also reworded that section a bit.
User avatar
mavit
Posts: 36
Joined: 15 September 2016, 20:20

Re: Code on Github/Gitlab/Bitbucket

Post by mavit »

Matthijs Kooijman wrote: 21 September 2020, 09:29 I'm rather new to BGA, but have a lot of experience in open software contributions. I'd like to emphasize that having proper, public source control can really help to lower the barrier for external contributions and collaboration on software. So I'd recommend any developer to host their code on github or similar. It would be even nicer if BGA studio could somehow integrate external repositories to make them easier to work with and encourage people to work with them, but even without that, external repositories (along with pullrequests and related discussions about changes) can make a big difference, I think.
Hear hear!

I don't even think any fancy Studio integration is necessarily needed. Something as simple as an optional new "forge_url" field in gameinfos.inc.php, surfaced on the /gamepanel page, would make a big difference, I think.
User avatar
RockAndSka
Posts: 13
Joined: 19 August 2015, 20:36

Re: Code on Github/Gitlab/Bitbucket

Post by RockAndSka »

No changes since all those discussion ? :|

Without changing all the process in place, adding a git development process should be not too hard and would have as consequence to help developers to join and submit patches.

As an idea (I use github just only as an example)
  • all games are under BGA github organization with their own repository
    • today, looking for repository on github tagged with #boardgamearena doesn't allow devs to know if it is the main repository or not
  • the repository could be public or private
    • depending of the licence or legal issue, access to some repositories could be locked
  • all BGA studios games licences are linked to a github repository
    • dev could find the main code easily
    • dev could fork the repository directly from github
      • since forked are linked to main repository, devs could easily see all forks and their achievement and decide to start from them or from scratch
  • main branch is the one used on main BGA site
    • when merging in this branch, a github action push to the main SFPT server
  • dev branch is the one used on BGA studio for review by devs / admin / validator
    • when merging in this branch, a github action push to the studio SFPT server
For a dev, starting to work on new feature / bug fix could be
  • fork the main game repository
  • Add to studio our game repository (to create sftp settings)
  • Create SFTP secrets for dev branch on our fork
  • do some code changes and push them back to our dev fork branch
  • code is pushed by github action to our Studio project and ready to be tested by the dev
  • do a merge request on dev branch with our dev fork branch
  • if merged on dev, code is pushed by github action to DEV Studio and ready to be tested by all developers ( a sort of pre-release )

Investigating some time in this could be of great value for all

Regards,
JeroenDemeyer
Posts: 9
Joined: 04 May 2021, 18:00

Re: Code on Github/Gitlab/Bitbucket

Post by JeroenDemeyer »

One advantage which hasn't really been mentioned would be the ability to see the history of the game code. There have been cases where a new release breaks something. Then it would be useful to be able to revert that part of the code and try to fix it in a better way.

On top of the obvious advantages, git is also simply a tool that most developers are experienced with. So it feels more "natural" to work with git than the current BGA studio workflow.
vincentt
Posts: 254
Joined: 01 September 2017, 17:25

Re: Code on Github/Gitlab/Bitbucket

Post by vincentt »

Hi

We created https://github.com/bga-devs for this. Jurica is going to be admin of it to help people migrate to it :)
This of course while we wait for git implementation for studio :)
Any one is welcome in the organization

Cheers
John Riston
Posts: 3
Joined: 30 September 2013, 19:42

Re: Code on Github/Gitlab/Bitbucket

Post by John Riston »

Spukyta wrote: 25 May 2020, 14:02 Hi all,
I have a repo in GitHub and I use a GitHub Action so the code is pushed via SFTP to BGA studio server each time I push to master.
The credit of the action goes to its creator: https://github.com/SamKirkland/FTP-Deploy-Action
Steps:
1 - Create a secret in the repo to store the FTP password (Repo -> Settings -> Secrets -> New secret) and name it (in example below YOUR_BGA_FTP_PASSWORD), so you can use it in an Action.
2 - Create a new Action with the code below changing the data in caps (Repo -> Actions -> New workflow -> set up a workflow yourself).
3 - Commit and enjoy! :mrgreen:

Code: Select all

on: push
name: Publish Website over SFTP
jobs:
  FTP-Deploy-Action:
    name: FTP-Deploy-Action
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2.1.0
      with:
        fetch-depth: 2

    - name: FTP-Deploy-Action
      uses: SamKirkland/FTP-Deploy-Action@3.1.1
      with:
        ftp-server: sftp://1.studio.boardgamearena.com/YOUR_GAME_FOLDER/
        ftp-username: YOUR_BGA_USER_NAME
        ftp-password: ${{ secrets.YOUR_BGA_FTP_PASSWORD }}
        git-ftp-args: --insecure # if your certificate is setup correctly this can be removed (see known-hosts argument)
When I'm fixing small things I enable SFTP sync in Visual Studio Code with an extension (https://marketplace.visualstudio.com/it ... imomo.sftp ) and the following conf. To disable it change "uploadOnSave" to false.

Code: Select all

{
    "name": "BGA",
    "host": "1.studio.boardgamearena.com",
    "protocol": "sftp",
    "port": 22,
    "username": "YOUR_USERNAME",
    "password": "YOUR_SFTP_PWD",
    "remotePath": "/YOUR_FOLDER_NAME",   
    "uploadOnSave": true
} 
I tried to use the above workflow but it did not work for me. Here's my config:

Code: Select all

on: push
name: Publish Website over SFTP
jobs:
  FTP-Deploy-Action:
    name: FTP-Deploy-Action
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2.1.0
      with:
        fetch-depth: 2

    - name: FTP-Deploy-Action
      uses: SamKirkland/FTP-Deploy-Action@3.1.2
      with:
        ftp-server: sftp://1.studio.boardgamearena.com/heartsjriston
        ftp-username: ristonj
        ftp-password: ${{ secrets.BGA_SFTP_PASSWORD }}
        git-ftp-args: --insecure
 
Here's the error I got:

Code: Select all

Uploading files
  /usr/bin/git ftp push --force --auto-init --verbose --syncroot=./ --user=ristonj --passwd=*** --insecure sftp://1.studio.boardgamearena.com/heartsjriston
  Fri Sep 22 23:32:52 UTC 2023: git-ftp version 1.6.0 running on Linux 6b8de88ab72e 6.2.0-1011-azure #11~22.04.1-Ubuntu SMP Wed Aug 23 19:26:19 UTC 2023 x86_64 GNU/Linux
  Fri Sep 22 23:32:52 UTC 2023: Forced mode enabled.
  Fri Sep 22 23:32:52 UTC 2023: Auto init if needed.
  Fri Sep 22 23:32:52 UTC 2023: Using syncroot ./ if exists.
  Fri Sep 22 23:32:52 UTC 2023: Insecure SSL/TLS connection allowed
  Fri Sep 22 23:32:52 UTC 2023: Syncroot is './'.
  Fri Sep 22 23:32:52 UTC 2023: fatal: Not a Git project? Exiting...
Error: The process '/usr/bin/git' failed with exit code 8
I used another workflow and I got it to work (based on this Stack Overflow comment: https://stackoverflow.com/a/77140431/30085):

Code: Select all

name: Deploy via SFTP
on:
  push:
    branches:
      - main
jobs:
  deploy:
    name: Deploy
    runs-on: ubuntu-latest
    if: github.event_name == 'push'
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: Deploy files via SFTP
        uses: pressidium/lftp-mirror-action@v1
        with:
          # SFTP credentials
          host: 1.studio.boardgamearena.com
          port: 22
          user: ristonj
          pass: ${{ secrets.BGA_SFTP_PASSWORD }}
          # lftp settings
          onlyNewer: true
          settings: 'sftp:auto-confirm=yes'
          # Mirror command options
          localDir: '.'
          remoteDir: '/heartsjriston'
          reverse: true
          ignoreFile: '.lftp_ignore'
          options: '--verbose'
 
Can someone else check and see if the SamKirkland git workflow still works for them? Thanks.
Post Reply

Return to “Developers”