From 91bda6e2bf3a9d9b8f5bf5150e4604c9d16e51d6 Mon Sep 17 00:00:00 2001 From: Julian Simioni Date: Tue, 26 Nov 2024 15:39:28 +0100 Subject: [PATCH] CI: use standard Github Action templates A lot of our repositories have diverged from our intended template, so this copies a templated version over whatever was here before Connects https://github.com/pelias/pelias/issues/951 --- .github/workflows/_test.yml | 21 ++++++++++++++++++ .github/workflows/pull_request.yml | 7 ++++++ .github/workflows/push.yml | 35 +++--------------------------- 3 files changed, 31 insertions(+), 32 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..6efcedc --- /dev/null +++ b/.github/workflows/_test.yml @@ -0,0 +1,21 @@ +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 ] + steps: + - uses: actions/checkout@v4 + - name: 'Install node.js ${{ matrix.node-version }}' + uses: actions/setup-node@v4 + with: + node-version: '${{ matrix.node-version }}' + - name: Run unit tests + run: | + [[ -f ./bin/ci-setup ]] && ./bin/ci-setup + npm install + npm run ci 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 aaa85bd..bc0d0e8 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -2,32 +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 ] - steps: - - uses: actions/checkout@v4 - - name: 'Install node.js ${{ matrix.node-version }}' - uses: actions/setup-node@v4 - with: - node-version: '${{ matrix.node-version }}' - - name: Run unit tests - run: | - npm install - npm run ci + 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 Node.js uses: actions/setup-node@v4 with: - node-version: 16.x + node-version: 20.x - name: Run semantic-release env: GH_TOKEN: ${{ secrets.GH_SEMANTIC_RELEASE_TOKEN }} @@ -36,17 +21,3 @@ 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 -