From d8b16a449455e66f6c191da30afbb453a179fa58 Mon Sep 17 00:00:00 2001 From: Julian Simioni Date: Tue, 26 Nov 2024 17:59:51 +0100 Subject: [PATCH 1/6] CI: update checkout and setup-node actions to latest This just keeps us up to date and avoids warnings for deprecated Node.js versions in CI. --- .github/workflows/push.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 1bc5088..4026226 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -14,7 +14,7 @@ jobs: go-version: - 1.16.x steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: 'Install Golang ${{ matrix.go-version }}' uses: actions/setup-go@v2 with: @@ -22,7 +22,7 @@ jobs: - name: Run Go unit tests run: go test ./... - name: 'Install node.js ${{ matrix.node-version }}' - uses: actions/setup-node@v2-beta + uses: actions/setup-node@v4 with: node-version: '${{ matrix.node-version }}' - name: Install npm dependencies @@ -36,13 +36,13 @@ jobs: if: github.ref == 'refs/heads/master' && github.event_name == 'push' runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: 'Install Golang 1.16.x' uses: actions/setup-go@v2 with: go-version: '1.16.x' - name: 'Install node.js 16.x' - uses: actions/setup-node@v2-beta + uses: actions/setup-node@v4 with: node-version: '16.x' - name: Install npm dependencies From c893dc683fec575544f9bbca06cdaa854f436c64 Mon Sep 17 00:00:00 2001 From: Julian Simioni Date: Tue, 26 Nov 2024 17:59:51 +0100 Subject: [PATCH 2/6] CI: update all hardcoded Ubuntu versions to 22.04 We were all over the place with these, with some going all the way back to Ubuntu 16! Connects https://github.com/pelias/pelias/issues/951 --- .github/workflows/push.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 4026226..43652c3 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -6,7 +6,7 @@ jobs: strategy: matrix: os: - - ubuntu-20.04 + - ubuntu-22.04 node-version: - 12.x - 14.x @@ -34,7 +34,7 @@ jobs: npm-publish: needs: unit-tests if: github.ref == 'refs/heads/master' && github.event_name == 'push' - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - name: 'Install Golang 1.16.x' From 43f33e714191d4fa78dc57c89c115e0956113409 Mon Sep 17 00:00:00 2001 From: Julian Simioni Date: Tue, 26 Nov 2024 17:59:51 +0100 Subject: [PATCH 3/6] CI: remove EOL Node.js 12/16/18 https://github.com/pelias/pelias/issues/950 --- .github/workflows/push.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 43652c3..982116a 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -8,9 +8,6 @@ jobs: os: - ubuntu-22.04 node-version: - - 12.x - - 14.x - - 16.x go-version: - 1.16.x steps: From 7de24e3031e89977f0e772581da62c5aa3e1d68d Mon Sep 17 00:00:00 2001 From: Julian Simioni Date: Tue, 26 Nov 2024 17:59:51 +0100 Subject: [PATCH 4/6] CI: Test Node.js versions supported by this repo This also rewrites our CI config so that all Node.js versions are on one line for ease of future grepping https://github.com/pelias/pelias/issues/950 --- .github/workflows/push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 982116a..94743b3 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -7,7 +7,7 @@ jobs: matrix: os: - ubuntu-22.04 - node-version: + node-version: [ 18.x, 20.x, 22.x ] go-version: - 1.16.x steps: From 0e8637e5fbb40fd4e39f3cfb8c80b02ec6498f85 Mon Sep 17 00:00:00 2001 From: Julian Simioni Date: Tue, 3 Dec 2024 12:58:02 +0100 Subject: [PATCH 5/6] CI: manually rewrite Github Action workflows to mirror standard template --- .github/workflows/_test.yml | 30 +++++++++++++++++ .github/workflows/pull_request.yml | 7 ++++ .github/workflows/push.yml | 53 ++++++++++-------------------- 3 files changed, 55 insertions(+), 35 deletions(-) create mode 100644 .github/workflows/_test.yml create mode 100644 .github/workflows/pull_request.yml diff --git a/.github/workflows/_test.yml b/.github/workflows/_test.yml new file mode 100644 index 0000000..047c103 --- /dev/null +++ b/.github/workflows/_test.yml @@ -0,0 +1,30 @@ +name: Unit Tests +on: workflow_call +jobs: + unit-tests: + runs-on: '${{ matrix.os }}' + strategy: + matrix: + os: + - ubuntu-22.04 + node-version: [ 18.x, 20.x, 22.x ] + go-version: + - 1.16.x + steps: + - uses: actions/checkout@v4 + - name: 'Install node.js ${{ matrix.node-version }}' + uses: actions/setup-node@v4 + with: + node-version: '${{ matrix.node-version }}' + - name: 'Install Golang ${{ matrix.go-version }}' + uses: actions/setup-go@v2 + with: + go-version: '${{ matrix.go-version }}' + - name: Run Go unit tests + run: go test ./... + - name: Install npm dependencies + run: npm install + - name: Run JS unit tests + run: npm test + - name: Run JS end-to-end tests + run: npm run end-to-end diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml new file mode 100644 index 0000000..c9533fc --- /dev/null +++ b/.github/workflows/pull_request.yml @@ -0,0 +1,7 @@ +name: Continuous Integration +on: pull_request +jobs: + unit-tests: + # only run this job for forks + if: github.event.pull_request.head.repo.full_name != github.repository + uses: ./.github/workflows/_test.yml diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 94743b3..8c1f929 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -2,48 +2,17 @@ name: Continuous Integration on: push jobs: unit-tests: - runs-on: '${{ matrix.os }}' - strategy: - matrix: - os: - - ubuntu-22.04 - node-version: [ 18.x, 20.x, 22.x ] - go-version: - - 1.16.x - steps: - - uses: actions/checkout@v4 - - name: 'Install Golang ${{ matrix.go-version }}' - uses: actions/setup-go@v2 - with: - go-version: '${{ matrix.go-version }}' - - name: Run Go unit tests - run: go test ./... - - name: 'Install node.js ${{ matrix.node-version }}' - uses: actions/setup-node@v4 - with: - node-version: '${{ matrix.node-version }}' - - name: Install npm dependencies - run: npm install - - name: Run JS unit tests - run: npm test - - name: Run JS end-to-end tests - run: npm run end-to-end + uses: ./.github/workflows/_test.yml npm-publish: needs: unit-tests - if: github.ref == 'refs/heads/master' && github.event_name == 'push' + if: github.ref == 'refs/heads/master' && needs.unit-tests.result == 'success' runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - - name: 'Install Golang 1.16.x' - uses: actions/setup-go@v2 - with: - go-version: '1.16.x' - - name: 'Install node.js 16.x' + - name: Install Node.js uses: actions/setup-node@v4 with: - node-version: '16.x' - - name: Install npm dependencies - run: npm install + node-version: 20.x - name: Run semantic-release env: GH_TOKEN: ${{ secrets.GH_SEMANTIC_RELEASE_TOKEN }} @@ -52,3 +21,17 @@ jobs: if [[ -n "$GH_TOKEN" && -n "$NPM_TOKEN" ]]; then curl "https://raw.githubusercontent.com/pelias/ci-tools/master/semantic-release.sh" | bash - fi + build-docker-images: + # run this job if the unit tests passed and the npm-publish job was a success or was skipped + # note: github actions won't run a job if you don't call one of the status check functions, so `always()` is called since it evalutes to `true` + if: ${{ always() && needs.unit-tests.result == 'success' && (needs.npm-publish.result == 'success' || needs.npm-publish.result == 'skipped') }} + needs: [unit-tests, npm-publish] + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + - name: Build Docker images + env: + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + run: | + curl "https://raw.githubusercontent.com/pelias/ci-tools/master/build-docker-images.sh" | bash - From cfdbd0eb98cefcb4ea0f2e3ea5dfaf95d5b701f8 Mon Sep 17 00:00:00 2001 From: Julian Simioni Date: Tue, 3 Dec 2024 13:08:39 +0100 Subject: [PATCH 6/6] CI: Update setup-go action to v5 --- .github/workflows/_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/_test.yml b/.github/workflows/_test.yml index 047c103..a998fb9 100644 --- a/.github/workflows/_test.yml +++ b/.github/workflows/_test.yml @@ -17,7 +17,7 @@ jobs: with: node-version: '${{ matrix.node-version }}' - name: 'Install Golang ${{ matrix.go-version }}' - uses: actions/setup-go@v2 + uses: actions/setup-go@v5 with: go-version: '${{ matrix.go-version }}' - name: Run Go unit tests