Skip to content

GitLab

    • GitLab: the DevOps platform
    • Explore GitLab
    • Install GitLab
    • How GitLab compares
    • Get started
    • GitLab docs
    • GitLab Learn
  • Pricing
  • Talk to an expert
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
    • Switch to GitLab Next
    • Menu
    Projects Groups Snippets
  • Get a free trial
  • Sign up
  • Login
  • Sign in / Register
  • A Armagetron Advanced
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 29
    • Issues 29
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
    • Requirements
  • Merge requests 2
    • Merge requests 2
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
    • Test Cases
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Container Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Code review
    • Insights
    • Issue
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar

GitLab 15.0 has launched! Please visit Breaking changes in 15.0 and 15.0 Removals to see which breaking changes may impact your workflow.

  • Armagetron Advanced
  • Armagetron Advanced
  • Issues
  • #14
Closed
Open
Created May 31, 2020 by Manuel Moos@zmanuelOwner

Integrated build system

Releases so far have been managed by the separate Build Helpers project. That has proven to be unreliable:

  • The host system needs to be set up just right
  • Even though the build is make-based, it likes to redo steps and break things that rely on checksums
  • It is not possible to integrate it into CI

So we need something new. Requirements:

  • The entire build must be defined in the main source project. External references are fine, but they need to be pinned to specific revisions.
  • The build needs to be largely independent of the host configuration.
  • It needs to integrate with CI.
  • It also needs to be testable locally without going mad, i.e. without requiring rebuilding all to test a deployment step.
  • It needs to automatically deploy to launchpad files, our PPA and ZeroInstall

Choices: To allow local testing, the new system is also make based. To factor out host dependencies, all builds that are later released are done in Docker containers (a bootstrap build is done on the host). This keeps the CI yaml file reasonably simple, it just does some setup and delegates the core work to make. To allow automatic deployment, a custom own GitLab runner was set up that has the secrets required for deployment in its configuration; deployment jobs can only run on it and will only run on protected branches.

Edited Jun 01, 2020 by Manuel Moos
Assignee
Assign to
Time tracking