<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Ci on Micha Kops&#39; Tech Notes</title>
    <link>https://www.hascode.com/tags/ci/</link>
    <description>Recent content in Ci on Micha Kops&#39; Tech Notes</description>
    <generator>Hugo -- 0.147.8</generator>
    <language>en</language>
    <copyright>Copyright © 2010 - 2025 Micha Kops. #213243b1d6e8932079e09227d3f3ed0c806cd0c9</copyright>
    <lastBuildDate>Fri, 28 Mar 2025 00:00:00 +0100</lastBuildDate>
    <atom:link href="https://www.hascode.com/tags/ci/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>CVE Scanning and Guided Remediation with OSV Scanner</title>
      <link>https://www.hascode.com/cve-scanning-and-guided-remediation-with-osv-scanner/</link>
      <pubDate>Fri, 28 Mar 2025 00:00:00 +0100</pubDate>
      <guid>https://www.hascode.com/cve-scanning-and-guided-remediation-with-osv-scanner/</guid>
      <description>&lt;div id=&#34;preamble&#34;&gt;
&lt;div class=&#34;sectionbody&#34;&gt;
&lt;div class=&#34;imageblock&#34;&gt;
&lt;div class=&#34;content&#34;&gt;
&lt;img src=&#34;osv-scanner-cover.webp&#34; alt=&#34;osv scanner cover&#34;/&gt;
&lt;/div&gt;
&lt;div class=&#34;title&#34;&gt;Figure 1. OSV Scanner&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;paragraph&#34;&gt;
&lt;p&gt;Security is a critical aspect of software development, and staying ahead of vulnerabilities is essential for us application developers. Google’s OSV Scanner is a powerful tool that helps detect vulnerabilities in open-source dependencies.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;paragraph&#34;&gt;
&lt;p&gt;This article will guide us through setting up and using OSV Scanner to secure our projects, scan for invalid licenses, scan OCI images and finally how to fix findings via guided remediation.&lt;/p&gt;
&lt;/div&gt;</description>
    </item>
    <item>
      <title>Whitesource Snippets</title>
      <link>https://www.hascode.com/whitesource-snippets/</link>
      <pubDate>Sun, 11 Nov 2018 00:00:00 +0100</pubDate>
      <guid>https://www.hascode.com/whitesource-snippets/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;
&lt;h2 id=&#34;_whitesource_configuration_for_gitlab_pipeline&#34;&gt;Whitesource Configuration for GitLab Pipeline&lt;/h2&gt;
&lt;div class=&#34;sectionbody&#34;&gt;
&lt;div class=&#34;paragraph&#34;&gt;
&lt;p&gt;The following configuration derives values from predefined GitLab Variables&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;listingblock&#34;&gt;
&lt;div class=&#34;title&#34;&gt;whitesource.conf&lt;/div&gt;
&lt;div class=&#34;content&#34;&gt;
&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-properties&#34; data-lang=&#34;properties&#34;&gt;# Providing project information from GitLab CI
wss_project_name=&amp;#34;$CI_PROJECT_NAME&amp;#34;
wss_project_version=&amp;#34;$CI_JOB_ID&amp;#34;
wss_project_tag=&amp;#34;$CI_COMMIT_TAG&amp;#34;

# Providing product information
wss_product_name=&amp;#34;The Product Name&amp;#34;
wss_product_version=&amp;#34;$POM_VERSION&amp;#34;

# Analyze the Maven POM and its transitive dependencies only, no file-system check
# Use this only if you don&amp;#39;t have any extra checked in jar-files or stuff like that!
fileSystemScan=false
includes=pom.xml

# Only scanning the Maven project
resolveAllDependencies=false
maven.resolveDependencies=true&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</description>
    </item>
    <item>
      <title>Continuous Delivery with GitHub Cloud and GitHub Pipelines</title>
      <link>https://www.hascode.com/continuous-delivery-with-github-cloud-and-github-pipelines/</link>
      <pubDate>Fri, 01 Jul 2016 00:00:00 +0200</pubDate>
      <guid>https://www.hascode.com/continuous-delivery-with-github-cloud-and-github-pipelines/</guid>
      <description>&lt;div id=&#34;preamble&#34;&gt;
&lt;div class=&#34;sectionbody&#34;&gt;
&lt;div class=&#34;paragraph&#34;&gt;
&lt;p&gt;Atlassian has added a continuous integration service as a new feature to their GitHub Cloud product. It’s called GitHub Pipelines and it is similar to Travis CI for GitHub offering a nice integration for continuous integration/delivery pipelines for projects hosted on GitHub.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;paragraph&#34;&gt;
&lt;p&gt;It’s still in the beta phase and requires a sign-up but nevertheless I’d like to demonstrate the current state of this service and how easy it is to add scripted pipelines to a project.&lt;/p&gt;
&lt;/div&gt;</description>
    </item>
    <item>
      <title>Mutation Testing with Pitest and Maven</title>
      <link>https://www.hascode.com/mutation-testing-with-pitest-and-maven/</link>
      <pubDate>Sun, 10 May 2015 00:00:00 +0200</pubDate>
      <guid>https://www.hascode.com/mutation-testing-with-pitest-and-maven/</guid>
      <description>&lt;div id=&#34;preamble&#34;&gt;
&lt;div class=&#34;sectionbody&#34;&gt;
&lt;div class=&#34;paragraph&#34;&gt;
&lt;p&gt;Mutation testing makes an interesting addition to the classical test coverage metrics.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;paragraph&#34;&gt;
&lt;p&gt;They seed mutations (errors) into the code, run the project’s tests afterwards and if the tests fail, the mutation is killed – otherwise it lived and we have a possible indication of an issue with our tests.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;paragraph&#34;&gt;
&lt;p&gt;In the following short tutorial. I’d like to demonstrate how to setup mutation tests with the PIT/Pitest library and Maven and generate reports.&lt;/p&gt;
&lt;/div&gt;</description>
    </item>
    <item>
      <title>Allocating available random Ports in a Maven Build</title>
      <link>https://www.hascode.com/allocating-available-random-ports-in-a-maven-build/</link>
      <pubDate>Wed, 07 May 2014 00:00:00 +0200</pubDate>
      <guid>https://www.hascode.com/allocating-available-random-ports-in-a-maven-build/</guid>
      <description>&lt;div id=&#34;preamble&#34;&gt;
&lt;div class=&#34;sectionbody&#34;&gt;
&lt;div class=&#34;paragraph&#34;&gt;
&lt;p&gt;Recently in a project I encountered the following problem: The development team used Git with a branch-per-feature-like workflow and the integration server, Bamboo in this case, was configured not only to run the integration-tests for the master-branch but also for every change in a feature branch.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;paragraph&#34;&gt;
&lt;p&gt;As the team developed a Java EE web application ports like 8080 occasionally were already bound and builds failed.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;paragraph&#34;&gt;
&lt;p&gt;I knew a plug-in for Jenkins CI I to search for available ports and assign them to a build variable but I wanted to control such information directly within the Maven build life-cycle so I searched and finally found Sonatype’s Port Allocator Plug-in for Maven.&lt;/p&gt;
&lt;/div&gt;</description>
    </item>
    <item>
      <title>GitHub Snippets</title>
      <link>https://www.hascode.com/github-snippets/</link>
      <pubDate>Mon, 01 Mar 2010 00:00:00 +0100</pubDate>
      <guid>https://www.hascode.com/github-snippets/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;
&lt;h2 id=&#34;_github_actions&#34;&gt;GitHub Actions&lt;/h2&gt;
&lt;div class=&#34;sectionbody&#34;&gt;
&lt;div class=&#34;sect2&#34;&gt;
&lt;h3 id=&#34;_step_to_check_variables_and_redistribute_as_env&#34;&gt;Step to check variables and redistribute as env&lt;/h3&gt;
&lt;div class=&#34;paragraph&#34;&gt;
&lt;p&gt;The following step does ..&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;ulist&#34;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;check of given variables are set, if not, exit with an error that is visible in the action’s log&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;provide the given input as environment variable in &lt;code&gt;GITHUB_ENV&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&#34;listingblock&#34;&gt;
&lt;div class=&#34;content&#34;&gt;
&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;- name: configuration
      env:
        VAR1: ${{ needs.configure.outputs.something }}
        VAR2: ${{ vars.SOMETHING_OTHER }}/
        VAR3: &amp;#34;something_other_other&amp;#34;
      run: |
        for var in VAR1 VAR2 VAR3; do [ -n &amp;#34;${!var}&amp;#34; ] || { echo &amp;#34;$var is missing&amp;#34;; exit 1; }; echo &amp;#34;$var=${!var}&amp;#34; &amp;gt;&amp;gt; &amp;#34;$GITHUB_ENV&amp;#34;; done&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</description>
    </item>
    <item>
      <title>GitLab Snippets</title>
      <link>https://www.hascode.com/gitlab-snippets/</link>
      <pubDate>Mon, 01 Mar 2010 00:00:00 +0100</pubDate>
      <guid>https://www.hascode.com/gitlab-snippets/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;
&lt;h2 id=&#34;_generate_asciidoc_documentation_and_publish_it_with_gitlab_pages&#34;&gt;Generate AsciiDoc Documentation and Publish it with GitLab Pages&lt;/h2&gt;
&lt;div class=&#34;sectionbody&#34;&gt;
&lt;div class=&#34;paragraph&#34;&gt;
&lt;p&gt;We setup a repository and add a directory named &lt;code&gt;docs&lt;/code&gt; there .. this is the home of our AsciiDoc files.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;paragraph&#34;&gt;
&lt;p&gt;We’re using &lt;a href=&#34;https://hub.docker.com/r/asciidoctor/docker-asciidoctor&#34;&gt;asciidoctor/docker-asciidoctor&lt;/a&gt; as Docker image for tool provisioning&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;paragraph&#34;&gt;
&lt;p&gt;This is the &lt;code&gt;.gitlab-ci.yml&lt;/code&gt;, we’re running the stage only when something in the &lt;code&gt;docs&lt;/code&gt; directory has changed.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;listingblock&#34;&gt;
&lt;div class=&#34;content&#34;&gt;
&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;stages:
  - &amp;#34;Build docs&amp;#34;

# The name of the job activates the GitLab pages publication
pages:
  image: asciidoctor/docker-asciidoctor
  stage: &amp;#34;Build docs&amp;#34;
  tags:
    - build
  script:
    - sh ./gen_docs.sh
    - mv output public
  only:
    refs:
      - master
    changes:
      - /docs/*
  artifacts:
    paths:
      - public
    expose_as: &amp;#39;Documentation Archive&amp;#39;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</description>
    </item>
  </channel>
</rss>
