From 3b3a0e4546ceab8efd23b251f6053f940759c2b2 Mon Sep 17 00:00:00 2001 From: "Joakim L. Engeset" Date: Mon, 12 Feb 2024 11:37:33 +0100 Subject: [PATCH 1/4] feat(ci): switch from jenkins to github actions --- .github/workflows/ci.yml | 74 ++++++++++++++++++++++++++++++++++++++++ Jenkinsfile | 52 ---------------------------- 2 files changed, 74 insertions(+), 52 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 Jenkinsfile diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..6a8761a7 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,74 @@ +name: ci +on: + push: + branches: + - "**" + +defaults: + run: + # NOTE: A bit stricter than the default bash options used by GitHub Actions + # (bash --noprofile --norc -e -o pipefail {0}) + shell: bash --noprofile --norc -euo pipefail {0} + +# NOTE: Set concurrency for the current workflow to 1 +concurrency: ci-${{ github.ref }}-${{ github.workflow }} + +jobs: + build-and-release: + timeout-minutes: 60 + runs-on: ubuntu-22.04 + permissions: + contents: write + pull-requests: write + issues: write + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - uses: capralifecycle/actions-lib/check-runtime-dependencies@42cbe330ccc0282f04edbf0a6ee8928b5b2c4df0 # v1.1.0 + + - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 + with: + node-version: 18.19.0 + + - uses: capralifecycle/actions-lib/configure-npm@42cbe330ccc0282f04edbf0a6ee8928b5b2c4df0 # v1.1.0 + + - uses: actions/setup-python@v4 + id: setup_python + with: + python-version: 3.8.18 + + - name: python - setup dependency cache + uses: actions/cache@v3 + with: + key: venv-${{ runner.os }}-${{ steps.setup_python.outputs.python-version}}-${{ hashFiles('requirements.txt') }} + path: .venv + + - name: python - install dependencies + run: | + python -m venv .venv + source .venv/bin/activate + python -m pip install -r requirements.txt + echo "$VIRTUAL_ENV/bin" >> $GITHUB_PATH + echo "VIRTUAL_ENV=$VIRTUAL_ENV" >> $GITHUB_ENV + + - name: python - lint + run: make py-lint + + - name: python - test + run: make py-test + + - name: npm - install dependencies + run: npm ci + + - name: npm - lint + run: npm run lint + + - name: npm - test + run: npm test + + - name: conditionally semantic release + if: ${{ github.ref == format('refs/heads/{0}', github.event.repository.default_branch) }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.SHARED_NPMJS_TOKEN }} + run: npm run semantic-release diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index 39211fe6..00000000 --- a/Jenkinsfile +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env groovy - -// See https://github.com/capralifecycle/jenkins-pipeline-library -@Library('cals') _ - -buildConfig([ - slack: [ - channel: '#cals-dev-info', - teamDomain: 'cals-capra', - ], -]) { - dockerNode { - stage('Checkout source') { - checkout scm - } - - def img = docker.image('circleci/python:3.8') - img.pull() // Ensure latest version. - img.inside { - stage('Lint and test python code') { - sh ''' - python3 -m venv .venv - . .venv/bin/activate - pip install -r requirements.txt - make py-lint py-test - ''' - } - } - - insideToolImage("node:18") { - stage('Install dependencies and build') { - sh 'npm ci' - } - - stage('Lint and test') { - sh 'npm run lint' - sh 'npm run test' - } - - // We only run semantic-release on the release branches, - // as we do not want credentials to be exposed to the job - // on other branches or in PRs. - if (env.BRANCH_NAME ==~ /^(master|\d+\.(\d+|x)(\.x)?)$/) { - stage("Semantic release") { - withSemanticReleaseEnv { - sh "npm run semantic-release" - } - } - } - } - } -} From f1b78354516154119d6c29c04f39793208037839 Mon Sep 17 00:00:00 2001 From: "Joakim L. Engeset" Date: Thu, 15 Feb 2024 09:43:15 +0100 Subject: [PATCH 2/4] chore: update python version Co-authored-by: Erlend Ekern --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6a8761a7..f34a8848 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,7 +32,7 @@ jobs: - uses: capralifecycle/actions-lib/configure-npm@42cbe330ccc0282f04edbf0a6ee8928b5b2c4df0 # v1.1.0 - - uses: actions/setup-python@v4 + - uses: actions/setup-python@v5 id: setup_python with: python-version: 3.8.18 From 900cc36dd64676668d06aa933278108ececb2ccf Mon Sep 17 00:00:00 2001 From: "Joakim L. Engeset" Date: Thu, 15 Feb 2024 09:43:37 +0100 Subject: [PATCH 3/4] fix: use kebab case in step id Co-authored-by: Erlend Ekern --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f34a8848..3a514916 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,7 +33,7 @@ jobs: - uses: capralifecycle/actions-lib/configure-npm@42cbe330ccc0282f04edbf0a6ee8928b5b2c4df0 # v1.1.0 - uses: actions/setup-python@v5 - id: setup_python + id: setup-python with: python-version: 3.8.18 From 06d747ac1a1237b35afb54237c0c135a326c8155 Mon Sep 17 00:00:00 2001 From: "Joakim L. Engeset" Date: Thu, 15 Feb 2024 09:43:52 +0100 Subject: [PATCH 4/4] chore: use v4 of cache action Co-authored-by: Erlend Ekern --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3a514916..60d7c2f6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,7 +38,7 @@ jobs: python-version: 3.8.18 - name: python - setup dependency cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: key: venv-${{ runner.os }}-${{ steps.setup_python.outputs.python-version}}-${{ hashFiles('requirements.txt') }} path: .venv