April 2021 Summaries
5 posts from Semaphore
Filter
Month:
Year:
Post Summaries
Back to Blog
Monorepos are gaining popularity in the JavaScript community due to their ability to host multiple applications within a single repository, enhancing collaboration and simplifying repository management. Tools like Yarn, with its version 2 release in 2020, have introduced features beneficial for monorepos, such as zero installs, plug'n'play dependency management, and workspaces to efficiently manage dependencies across projects. This text explores setting up a monorepo using Yarn workspaces and Semaphore's CI/CD platform, focusing on creating a pipeline that only builds and tests recently changed applications, thus saving time and resources. The setup involves organizing JavaScript applications into workspaces, utilizing Yarn's package management features, and configuring Semaphore for change-based execution to optimize the build process. The guide also covers integrating multiple applications with conditional execution based on changes, ultimately facilitating a streamlined, automated continuous deployment process.
Apr 29, 2021
2,141 words in the original blog post.
Monorepos, which are large code repositories encompassing multiple projects, often challenge conventional continuous integration due to their complex workflows and frequent updates. Semaphore uniquely supports monorepos by introducing the change_in function, which allows for change-based execution by skipping pipeline jobs for code that hasn't been altered, reducing unnecessary resource expenditure. This function enables targeted execution within a monorepo by monitoring specific files or folders for changes and updating only the relevant parts of the pipeline. The article provides a detailed guide on setting up monorepo workflows using Semaphore, illustrating with examples from the semaphore-demo-monorepo project, which includes services written in different programming languages. It also discusses the use of change_in for automatic promotions and parametrized promotions to optimize pipeline efficiency and maintain a unified release process across multiple projects within a monorepo.
Apr 20, 2021
1,786 words in the original blog post.
In the realm of software development, automated testing is a crucial process that ensures the quality and reliability of software before it reaches customers, although it can sometimes complicate development when overdone. Automated tests, ranging from unit tests to end-to-end tests, verify that software components and features function as intended, helping to mitigate the biases of developers and the inefficiencies of manual testing. The concept was notably advanced by the Agile Software Development movement, emphasizing rapid feedback and safe code modification. Quality Assurance (QA) teams play a pivotal role in this process, ensuring that testing is efficient and effective without overburdening developers or testers. Despite misconceptions that automated testing slows down development or merely finds bugs, it is an investment in a robust, failure-resistant environment that facilitates faster and more reliable code alterations. A well-structured testing strategy involves starting with meaningful, automated tests and progressively building a comprehensive suite that serves as a safety net, reducing risk and enhancing development speed over time. This approach is integral to continuous integration and continuous deployment (CI/CD) practices, which support automated feedback and ensure that software changes are validated and isolated from development environments.
Apr 14, 2021
2,364 words in the original blog post.
In a podcast episode of Observy McObservface with Jonan Scheffler, discussions revolved around several key topics including the shipping mindset promoted by the Ruby on Rails community, the balance between optimizing for productivity versus configurability, and the evolution from Test-Driven Development (TDD) practitioners to the inception of Semaphore. The conversation also touched on the notion that containers may not be suitable for everyone and offered insights on how to avoid unnecessary complexity. The podcast aims to engage listeners with these themes, inviting them to subscribe and participate in further discussions on Discord.
Apr 08, 2021
94 words in the original blog post.
Semaphore aims to enhance the CI/CD experience for engineers by providing robust support for monorepo projects, introducing features that simplify the setup and maintenance of these complex version-controlled repositories. Initially, Semaphore introduced the change_in function to optimize pipeline efficiency by skipping unchanged code, and based on user feedback, they have now rolled out additional enhancements such as an initialization step, UI indicators, an exclude parameter, and glob pattern support to improve reliability, configuration simplicity, and troubleshooting ease. These updates are beneficial for monorepo users, like BlueLabs, who have seen significant improvements in build times, as well as for users with multirepo setups who can now create custom workflows, skip unnecessary checks, and refine deployment strategies. Semaphore provides resources such as documentation, demos, and YAML references to assist users in implementing these features, and encourages community engagement through platforms like Discord.
Apr 07, 2021
629 words in the original blog post.