Skip to content

chore: use mergify-cli for upload #40

chore: use mergify-cli for upload

chore: use mergify-cli for upload #40

name: Continuous Integration
permissions: read-all
on:
pull_request:
branches:
- main
- devs/**
jobs:
linters:
timeout-minutes: 5
runs-on: ubuntu-22.04
steps:
- name: Checkout 🛎️
uses: actions/[email protected]
- name: Setup Python 🔧
uses: actions/[email protected]
with:
python-version: 3.12.5
- name: Download actionlint
id: get_actionlint
# yamllint disable-line rule:line-length
run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash) 1.7.1
- name: Test 🔍
run: |
# nosemgrep: generic.ci.security.use-frozen-lockfile.use-frozen-lockfile-pip
pip install semgrep yamllint
semgrep --config=auto --error
yamllint .
${{ steps.get_actionlint.outputs.executable }} -color
validate_orb:
timeout-minutes: 5
runs-on: ubuntu-22.04
steps:
- name: Checkout 🛎️
uses: actions/[email protected]
- name: Setup Python 🔧
uses: actions/[email protected]
with:
python-version: ">=3.12"
- name: Install CLI
run: pip install mergify-cli
- name: Start mockServer with expectation initializer
run: |
docker compose up -d
sleep 1
docker compose logs
- name: Test Orb upload script
id: gigid
env:
MERGIFY_API_URL: http://localhost:1080
MERGIFY_TOKEN: fake-valid-token
FILES: zfixtures/junit_example.xml
# force fake test environment
CIRCLECI: true
GITHUB_ACTIONS: false
CIRCLE_JOB: test
CIRCLE_REPOSITORY_URL: ${{ github.event.repository.html_url }}
CIRCLE_SHA1: 948da8c01b17ac2164039f3150221d5cfcae7ecc
run: |
export CIRCLECI=true
export GITHUB_ACTIONS=false
export CIRCLE_JOB=test
export CIRCLE_REPOSITORY_URL=${{ github.event.repository.html_url }}
export CIRCLE_SHA1=948da8c01b17ac2164039f3150221d5cfcae7ecc
bash src/scripts/upload.sh
- name: Get job ID
id: get-job-id
uses: actions/github-script@v7
with:
script: |
const { data } = await github.rest.actions.listJobsForWorkflowRun({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: context.runId
});
// Looks for exact match
let job = data.jobs.find(
(j) => j.name === context.job
)
if (!job) {
core.error("current job not found");
}
core.setOutput("job_id", String(job.id));
- name: Mockserver logs
if: always()
run: docker compose logs
- name: Install CircleCI CLI
run: curl -fLSs https://raw.githubusercontent.com/CircleCI-Public/circleci-cli/main/install.sh | bash
- name: Validate Orb
run: |
circleci orb pack src > orb.yml
circleci orb validate orb.yml
test-annotations:
needs: validate_orb
timeout-minutes: 5
runs-on: ubuntu-latest
steps:
- name: Check GIGID
uses: actions/github-script@v7
with:
script: |
const annotations = await github.rest.checks.listAnnotations({
owner: context.repo.owner,
repo: context.repo.repo,
check_run_id: ${{ needs.test.outputs.job_id }},
});
for (const annotation of annotations.data) {
if (annotation.message === "CI_ISSUE_GIGID=1234azertyuiop") {
core.info(`Annotations found: ${annotation.message}`)
return
}
}
console.log(annotations)
throw new Error("Annotations not found")