mirror of
https://github.com/Noratrieb/actions-playground.git
synced 2026-01-14 17:05:05 +01:00
use matrix
This commit is contained in:
parent
ad093d0caa
commit
20c01510ee
2 changed files with 18 additions and 24 deletions
22
.github/workflows/test.yml
vendored
22
.github/workflows/test.yml
vendored
|
|
@ -9,8 +9,7 @@ on:
|
||||||
jobs:
|
jobs:
|
||||||
install-build:
|
install-build:
|
||||||
outputs:
|
outputs:
|
||||||
foo-service: ${{ steps.install.outputs.foo-service }}
|
job-strategy-matrix: ${{ steps.install.outputs.job-strategy-matrix }}
|
||||||
bar-service: ${{ steps.install.outputs.bar-service }}
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
|
|
@ -23,24 +22,15 @@ jobs:
|
||||||
echo pnpm install
|
echo pnpm install
|
||||||
node ./gen-service-version.js
|
node ./gen-service-version.js
|
||||||
|
|
||||||
foo-service:
|
build-services:
|
||||||
needs: [install-build]
|
needs: [install-build]
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: ${{ needs.install-build.outputs.foo-service == 'run' }}
|
strategy:
|
||||||
|
matrix:
|
||||||
|
service: { { needs.install-build.outputs.job-strategy-matrix } }
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
- name: Build
|
- name: Build
|
||||||
run: |
|
run: |
|
||||||
./foo-service/build.sh
|
./{{ matrix.service }}/build.sh
|
||||||
|
|
||||||
bar-service:
|
|
||||||
needs: [install-build]
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
if: ${{ needs.install-build.outputs.bar-service == 'run' }}
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
- name: Build
|
|
||||||
run: |
|
|
||||||
./bar-service/build.sh
|
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,14 @@
|
||||||
const child_process = require("child_process");
|
const child_process = require('child_process');
|
||||||
|
|
||||||
const services = ["bar-service", "foo-service"];
|
const services = ['bar-service', 'foo-service'];
|
||||||
|
|
||||||
function latestCommitInDirectory(dirname) {
|
function latestCommitInDirectory(dirname) {
|
||||||
return String(
|
return String(child_process.execSync(`git log --pretty=format:%H -n 1 ${dirname}`));
|
||||||
child_process.execSync(`git log --pretty=format:%H -n 1 ${dirname}`)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const serviceVersions = {};
|
const serviceVersions = {};
|
||||||
|
|
||||||
const currentCommit = latestCommitInDirectory(".");
|
const currentCommit = latestCommitInDirectory('.');
|
||||||
|
|
||||||
for (const service of services) {
|
for (const service of services) {
|
||||||
serviceVersions[service] = latestCommitInDirectory(service);
|
serviceVersions[service] = latestCommitInDirectory(service);
|
||||||
|
|
@ -19,8 +17,14 @@ for (const service of services) {
|
||||||
console.log(currentCommit);
|
console.log(currentCommit);
|
||||||
console.log(serviceVersions);
|
console.log(serviceVersions);
|
||||||
|
|
||||||
|
let job_strategy_matrix = [];
|
||||||
Object.entries(serviceVersions).forEach(([name, version]) => {
|
Object.entries(serviceVersions).forEach(([name, version]) => {
|
||||||
const skip = version === currentCommit ? "run" : "skip";
|
const skip = version === currentCommit ? 'run' : 'skip';
|
||||||
|
|
||||||
console.log(`::set-output name=${name}::${skip}`);
|
console.log(`${name}::${skip}`);
|
||||||
|
if (version === currentCommit) {
|
||||||
|
job_strategy_matrix.push(name);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log(`::set-output name=job-strategy-matrix::[${job_strategy_matrix.join(', ')}]`);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue