Using GitLab CI/CD with Railway
GitLab CI/CD is a powerful continuous integration (CI) and continuous deployment (CD) system. In this post, we talk about how you can use GitLab CI/CD to automate your deployments on Railway.
If you haven't used it before, GitLab CI/CD allows you to automate several parts of your development workflow. Think about building your app, catching bugs, and maintaining code standards; the possibilities are endless. Recently, within our Discord, we've had a couple of users ask us how they'd go about deploying their app on Railway using GitLab so we thought it'd be a good idea to publish a short tutorial doing just that.
Railway provisions project tokens. They can be used in environments where you cannot login (CI in our case). It let’s CLI access all the variables and logs associated with a specific project and environment.
You can create a new project token on the Settings
page of your project dashboard within the Tokens
submenu.
Create project token
Once you’ve created your project token, you can add it to your repository secrets on GitLab by visiting the Variables
submenu under CI/CD settings.
Repository secrets
stages:
- deploy
deploy-railway:
stage: deploy
image: ubuntu
only:
- pushes
- main
script:
- apt-get update && apt-get install -y curl
- curl -fsSL https://railway.app/install.sh | sh
- railway up --service=$RAILWAY_SERVICE_NAME -d
The pipeline configuration shared above is pretty self-explanatory. The deploy job gets triggered on each push to the main
branch. Upon triggering, it installs Railway CLI using curl
and deploys your application to the specified service on Railway!
While this was a very basic example of deploying your application on Railway using GitLab CI/CD, you can do all sorts of things. We have users who use nixpacks (Railway’s build system) to dry-run their apps before deploying.
Let us know if you would like Railway to add direct GitLab integration by up-voting/commenting on this post or if you have any thoughts/feedback regarding this post. The easiest way to reach us is our Discord server.