I have hit so many issues and limitations on GitLab which is just simply possible on GitHub. Here's a few of my rants with GitLab
1. The smallest unit of action on GitLab is a whole job, on GitHub, that's a task. So all of the actions or templated files can perform a single task instead of a whole job. This granularity is incredibly useful and lets my team create a catalog of actions that our downstream teams can simply include and compose it over a variety of tools and frameworks.
2. You cannot share secrets between jobs. This was just outright ridiculous when it meant that in each new job you have to fetch an STS token even though the token from a previous job would suffice. So much repetition. When you have a template like fetching AWS credentials using OIDC, that's the only thing you can do. Hence proving point 1.
3. Multiple workflow files instead of a single `.gitlab.yml` with a scrambled mess of rules
4. Dynamic services, in GitHub it is effortless to build a matrix AND have services spun up from it. The amount of duplication this reduces is insane.
name: Test Actions
on:
push:
branches:
- main
jobs:
preTest:
runs-on: ubuntu-latest
outputs:
services: ${{ steps.services.outputs.serviceJson }}
steps:
- uses: actions/checkout@v3
- run: echo "serviceJson=$(cat .github/workflows/demo.json | jq -c)" >> "$GITHUB_OUTPUT"
id: services
shell: bash
test:
runs-on: ubuntu-latest
needs: [preTest]
services: ${{ fromJson(needs.preTest.outputs.services ) }}
steps:
- run: echo "Hello"
shell: bash