11

As you guessed, build not necessarily means "compile". Building is a process of creating software from sources, which might include stuff like gathering dependencies, compiling, archiving, transforming code in any way, but also testing, deploying to different environments and promoting the artifacts between them.


9

Based on the comments to my question, and some basic testing the following seems to work: Use nested parallel statements. (Thanks @lawnmowerlatte) Although today (May 15th 2017) Jenkins Blue ocean does not visualise this properly. Possible solutions discussed here


6

It depends on the artifact repository you are using but in general, you tag the artifacts in the repository to indicate their state. This can specify it has passed some level of quality gate, some approval, or what ever is required to move through the stages. I would say you tag the artifact as to it's state, not move between artifact repositories. A ...


6

We've had exactly the same problem - our build stage needs to use information from two separate locations. To solve this in a generic manner, I've created two general purpose Lambdas - one that will merge artifacts, and one that will extract specific files from an artifact. In both cases a new artifact is created that can be passed on to a subsequent ...


6

I'm not overly familiar with Docker particularly but it sounds a lot like issues one would get when building a normal .NET application or java app with the need to store their external dependencies (DLL or jar). To solve this I'm quite fond of artifactories. Two of the most popular are sonatype's Nexus and JFrog's Artifactory. Both offer a free Open Source ...


5

Yes, there is: If your commit message contains [ci skip] or [skip ci], using any capitalization, the commit will be created but the pipeline will be skipped. Alternatively, one can pass the ci.skip Git push option if using Git 2.10 or newer: git push -o ci.skip From: GitLab CI YAML documentation - "Skipping jobs"


4

Specifically in answer to your 3rd question, if you are willing to look outside of the Jenkins Ecosystem there are alternatives out there that might be of value to you. For my clients who use the Microsoft Stack and have fewer than four teams, I have been recommending the use of AppVeyor it is highly tuned for the .NET Stack and integrated very naturally ...


4

Well, you can pass multiple goals to maven in command line simply by passing them as arguments. Skipping test require a java system property that you can also pass as an argument to the command line. For packaging a maven artifact, executing a sonar analysis with the maven goal but skipping executing the tests you should use : mvn package sonar:sonar -...


4

I had a similar situation in which I wanted to nest other parallel jobs threads inside another parallel one. This code worked for me: def performDeploymentStages(String node, String app) { stage("build") { echo "Building the app [${app}] on node [${node}]" } stage("deploy") { echo "Deploying the app ${app}] on node [${node}]" ...


4

You might want to explore immutable architecture. Steps CI with static analysis(Sonarqube, because free!), pushing version artefacts to Nexus. Base Image using Packer. These must be revisited from time to time. Base Image has security hardening, log shippers, monitoring tools etc. Environment/Application specific images from Base image. healthCheck and ...


4

I have actually solved the problem by cloning repository directly in codebuild: Pass GitHub token: - { Name: GITHUB_TOKEN, Value: {Ref: GitHubToken } } - { Name: GITHUB_BRANCH, Value: {Ref: GitHubBranch } } # Execute git clone in install step: - git clone --single-branch --depth=1 -b $GITHUB_BRANCH https://gitorgname:$GITHUB_TOKEN@...


3

The indentation looks incorrect for the artifacts section in your buildspec-test.yml file. It is nested under the phases section. That way it is not being output properly and can't be picked up by the next build. It should be the same as in your second file. version: 0.2 phases: build: commands: - $ANDROID_HOME/tools/bin/sdkmanager "build-tools;...


3

This discussion gives a pretty good suggestion on how to accomplish what I want. https://discuss.circleci.com/t/does-circleci-2-0-work-with-monorepos/10378/11


3

There is currently an issue open to share Gradle cache between containers: https://github.com/gradle/gradle/issues/851 I think the best solution at the moment is to bake as many dependencies in to the Docker image as possible, and then use a volume to share between sequential builds, limiting it to one concurrent build per host. You can mount the cache on ...


3

Problems with golden images are that you have to store a full system image with overhead of data which is not build-specific, and using conventions for configuration to make deploy process the same for all versions. TL;DR: Infrastructure as a Code, version-specific storage for data outside the app package. The problem is easily solved by storing config ...


3

Any organization that needs the level of control you've specified is essentially forced into the preapproval process ("walled garden"). It's a pain for developers, but it's a necessary process to keep the company safe. I've even heard of companies with programs that scan all their workstations regularly to find and remove unapproved software. It's worth ...


2

Pipeline as Code (PaC) means that the CI/CD configuration will be stored in the VCS instead of in the CI/CD tool itself, e.g. configuring it manually by using a UI. Any experiences what can be the "critical mass" where this investment is a clear pay-off and not an overkill? Imagine that more than 100 jobs have been configured manually the last couple ...


2

There are enterprise tools that manage these opensource dependencies namely Jfrog Artifactory with the Xray feature and Inedo ProGet with features for license filtering and vulnerability scanning. Basically, allows you to restrict or permit download of package so companies can set policies to ensure development isn't breaking rights of use or building ...


2

Currently my team uses Jira, and it's RapidBoard agile thing. We aren't using real agile, but it's nice to schedule work loads for the next week. Jira can be super complex, but we Have our tickets set up to: New -->InProgress -->Done +-> Won't Do It can be linked to github or to Bitstream, etc. which is nice. If you want more complex code ...


2

As of Sep 4 2018 Amazon added support for multiple input sources: https://aws.amazon.com/about-aws/whats-new/2018/08/aws-codebuild-adds-ability-to-create-build-projects-with-multiple-input-sources-and-output-artifacts/ From documentation: { "name": "sample-project", "source": { "type": "S3", "location": "bucket/sample.zip" }, "secondarySources": [ { ...


2

The answer is: it depends. Before I answer, I need to provide definitions for a couple of terms to prevent ambiguity. 1) Deploy is defined as the act of changing executables in an environment. This might mean that new source is copied over, and some process is restarted. Or a new version of a docker container is placed into an orchestrator - doesn't really ...


2

I managed to setup an environment that does what I described above. Here are the full details: Launch a template that creates a CodeCommit repository for the application. This repository will be used to store both the source code and the CloudFormation (CF) templates to create the required infrastructure for the application; Launch a template that creates a ...


2

As this question is quite high-level, I give a high level answer. Technically, if there is an incident, you would normally enforce a shutdown of a running container and a replacement with a newer image with an implementation of the change request resulting from the incident. How much automation will be possible to get there, I think it really dependends on ...


2

We're using CircleCI with Go monorepo. Here’s how it’s done: Define a job for each service in circle config yaml. A git push triggers CircleCI job that finds which services are part of the change. For each service run a CircleCI job with: { "build_parameters": { "CIRCLE_JOB": "my-service" } } Also, published as an open source: https://github....


2

I was unable to find a way to configure the build to behave like I wanted. Instead I needed to start using the TeamCity API to achieve this. In the build.sh and test.sh file that TC runs, I extended the failure function (simple bash function we call whenever our build script fails): teamcityFailure () { . ./cancel_build_chain.sh echo "##teamcity[...


2

I noticed that the description for the filepath properties of the pack command is different than the descriptions in the test and publish commands: Pattern to search for csproj or nuspec files to pack. You can separate multiple patterns with a semicolon, and you can make a pattern negative by prefixing it with '-:'. Example: **/*.csproj;-:**/*.Tests.csproj ...


2

You can indeed build RPMs on Debian. You need the rpm and rpmbuild8 packages: I tried it with a docker container: docker run --rm -it debian bash -c 'apt-get update && \ apt-get -y install rpm librpmbuild8 && which rpmbuild' More info on packages: The following additional packages will be installed: dbus debugedit libapparmor1 ...


2

The stock Azure Pipelines app for Slack does not support that workflow of uploading artifacts to Slack. You could use this marketplace task and upload your release notes artifact with it. Bonus points suggestion, if you are going down the release notes path I would take a look at using Richard Fennell's Generate Release Notes task in combination with the ...


2

One possible answer could come from the reason for using multiple branches as basis for environments in the first place. In some organisations (typically for large scale projects and often for historical reasons) it is desired to allow for cherry-picking hot fixes in each environment to limit the amount of changes (thus the risk) picked up in each iteration ...


1

Welcome to devops.stackexchange.com. What works best is dependent upon the team. Find a good tool for the team and perhaps change that when the circumstances change. Also you might do a little thinking ahead to work out what approach might be best fit for the near future (e.g., will my team expand? will my number of servers expand? will I have a security ...


Only top voted, non community-wiki answers of a minimum length are eligible