본문으로 건너뛰기
cccskills
무료GitHub에 공개

rseng-ci-cd

Covers continuous integration and delivery for research software: CI/CD concepts, automating builds and tests with GitHub Actions and GitLab CI/CD, and wiring an organization's GitLab CI infrastructure to a GitHub-hosted project. Use when the user asks to set up CI, write a pipeline or workflow file (.github/workflows, .gitlab-ci.yml), add automated builds/tests on push or pull request, publish a package or deploy docs when a tag or release is cut, cache dependencies to speed up CI runs, choose between GitHub Actions and GitLab CI, use self-hosted or GPU runners, mirror a repo, or report external CI status back to GitHub. For what to test and shrinking a test matrix see rseng-testing; for linter and pre-commit policy see rseng-code-quality.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

fdiblen/rseng-agent-skills스타 24(GitHub 24 + cccskills 0)
연동 도구GitHubGitLab

실행 점수 미검증

설치 방법 보기

포함된 파일(2)

  • SKILL.md9.8 KB
  • references.md476 B

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Continuous integration and delivery for research software

Use this skill when a project needs to automate its build, test and release path, or when someone is deciding how to run CI for research software. It covers CI/CD concepts, GitHub Actions, GitLab CI/CD, and hybrid setups where a GitHub project runs on an organization's GitLab runners. Prefer concrete, minimal pipelines first, then grow them; do not scaffold monitoring, mirroring or multi-runner infrastructure a small project will not use.

Core concepts

Distinguish the three practices before recommending tooling:

  • Continuous Integration (CI): integrate code changes into a shared repository frequently, and verify every change with an automated build that compiles and runs tests. Catches integration errors early.
  • Continuous Delivery (CD): keep software always in a deployable state; the release to production stays a manual decision. Value: fast, safe rollbacks and few manual release steps.
  • Continuous Deployment (CD): go further and deploy every passing change to production automatically, with no manual gate.

When advising, name which of the three the user actually wants. Most research projects need solid CI plus Continuous Delivery, not fully automated Continuous Deployment.

What a pipeline should cover

Map the project's needs onto these stages before writing YAML:

  • Automated builds triggered on every change (compile plus tests).
  • Version-control integration so commits and pull requests trigger runs.
  • Automated unit, integration and regression tests across the platforms and dependency versions the software claims to support.
  • Code-quality gates: static analysis or linters, and pre-commit (https://pre-commit.com/) hooks run in CI, not only locally.
  • Deployment pipelines that package artifacts ready to ship.
  • Monitoring and rollback for anything deployed to production.

Choosing a platform

Match the tool to where the repository lives and what hardware it needs:

  • GitHub-hosted, standard hardware: use GitHub Actions. It is integrated, has a large marketplace, and free runners for public repos.
  • GitLab-hosted: use GitLab CI/CD. It is the GitLab-native equivalent of GitHub Actions.
  • Migrating from Actions to GitLab: point the user at GitLab's dedicated Actions-migration guide rather than rewriting by hand.
  • Specialized hardware (GPUs, ARM/Power CPUs, HPC) or heavy test matrices that exceed GitHub's free tier: consider running on an organization's GitLab runners, even for a GitHub-hosted project (see the hybrid section).
  • Other established options exist (Jenkins, CircleCI, Travis CI, Azure Pipelines, Bitbucket Pipelines); recommend them only when the project is already on that ecosystem.

GitHub Actions

Set up a workflow with these steps:

  • Create a .github/workflows/ directory; put one YAML file (.yml or .yaml) per workflow there.
  • Choose triggers under on: -- typically push, pull_request, or a schedule. Pick the events that match how the team collaborates.
  • Select a runner OS with runs-on: (Ubuntu, Windows, or macOS); use a matrix when the software must work across several.
  • Reuse marketplace actions instead of hand-rolling steps: actions/checkout to check out the code and actions/setup-python (or the relevant language setup) to provision the toolchain. A major tag like @v7 is readable but mutable; pinning means a full commit SHA with the tag in a trailing comment, which is what rseng-security asks for on third-party actions.
  • Store credentials and API keys as repository secrets; never inline them in the workflow file.
  • After pushing, read results in the Actions tab: the run graph shows job sequence, and expanding a job exposes per-step logs for debugging.

Minimal test workflow for a Python project:

name: Tests
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v7
      - name: Setup Python
        uses: actions/setup-python@v7
        with:
          python-version: '3.13'
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
      - name: Run tests
        run: pytest

Adapt the language setup and install command to the project; keep the first working pipeline this small, then extend.

GitLab CI/CD

Set up a pipeline with these steps:

  • Create a .gitlab-ci.yml at the repository root; it defines pipelines and jobs in YAML.
  • Runners: on gitlab.com, instance runners are provided automatically; on a self-hosted GitLab, confirm runners are available first.
  • Structure work into stages; jobs in the same stage run in parallel (given enough runners), and a later stage starts only after the previous one finishes. Each job needs at least stage and script.
  • If one job needs another's output, put them in separate stages and pass results as artifacts -- parallel jobs in one stage cannot depend on each other.
  • Reuse pre-built components from the GitLab CI/CD Catalog rather than writing everything from scratch; most ship a README with configuration.
  • Watch runs in the Pipelines tab, drilling into stages and jobs for status and logs.

Skeleton .gitlab-ci.yml showing the stage/job structure:

stages:
  - build
  - deploy

build-job:
  stage: build
  script:
    - echo "Starting build"

deploy-job:
  stage: deploy
  script:
    - echo "Deploy"

For real pipelines, point users at GitLab's quick-start and advanced tutorials and its per-language examples rather than inventing job scripts.

Hybrid: GitLab CI for a GitHub-hosted project

Only recommend this when a GitHub project genuinely needs hardware or capacity beyond GitHub's free runners (GPUs, ARM/Power, HPC, large matrices) and the organization already runs GitLab with suitable runners. It is real operational overhead -- flag that cost explicitly to small teams before they commit.

The moving parts to design:

  • Repository mirroring: use GitLab native mirroring to sync the GitHub repo into GitLab. Mirror only main/protected branches initially to limit load and exposure; mirroring needs a deploy key or token with write access to the GitHub repo.
  • Fork integration: forks complicate external CI. A webhook-driven bot can watch pull-request events and create matching branches in the GitLab mirror using a systematic naming convention; clean those branches up when the PR closes.
  • Webhook security: validate webhook signatures with a secret, return HTTP 200 immediately and process asynchronously, and retry failed GitLab API calls with exponential backoff (dead-letter events that never succeed).
  • Status reporting: push GitLab pipeline results back to GitHub via the commit status API, keyed on commit hash, using stable check names like gitlab-ci/<job> so PR checks reflect the external run.
  • Runners: tag runners by capability (for example gpu, nvidia, arm64) and target them from jobs with matching tags:. Organize as shared, group, and project-specific runners so specialized hardware is allocated fairly.
  • Access and security: map GitHub permissions to GitLab roles (admin -> maintainer, write -> developer, read -> reporter), grant external contributors time-limited guest access to logs, and keep audit logs of webhooks, mirroring, access changes and pipeline triggers.
  • Reliability and monitoring: rotate API tokens (updating webhook configs in lockstep so auth does not desync), and monitor webhook success rate, mirror-sync delay and runner availability with alert thresholds.

Document the hybrid setup for contributors: how to read status checks, reach GitLab logs, and request runner access.

A concrete workflow set for research Python packages (NLeSC python-template): build, link-check, docs build, SonarCloud analysis and cffconvert citation validation - plus its next_steps.yml pattern, which opens onboarding issues for manual setup steps (Zenodo, SonarCloud, Read the Docs) so scaffolded projects finish their setup.

Working with this skill

The generated references.md beside this file lists the source material and pointers:

  • references.md - verified Learn more pointers

Learn more (verified):

<!-- related-skills:begin -->

Related skills

Check whether any of these applies before moving on:

  • rseng-green-computing - pipeline energy and runner cost
  • rseng-hpc-computing - GPU/HPC runners for heavy jobs
  • rseng-publishing-releasing - release automation triggered from CI
  • rseng-reproducible-environments - testing inside the shipped container
  • rseng-security - secrets management in pipelines
  • rseng-testing - what the pipeline should actually run
<!-- related-skills:end -->

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Covers operating AI coding agents securely: auditing whether the agent runs sandboxed, permission and dangerous-command configuration, containerized environments, secrets kept out of context, network egress and token privileges, prompt-injection risk, and the privacy of agent use itself. Use PROACTIVELY when permission gating is broadly disabled (skip-permissions modes), when secrets are visible to the agent's shell, or when the agent processes untrusted code, issues or web content; when a project holds personal or confidential data while a cloud agent is active (what leaves the machine, retention, training use), or when the user asks how to run coding agents safely or privately. (Supply-chain security: rseng-security; disclosing agent contributions: rseng-ai-declaration.)

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

fdiblen/rseng-agent-skills242026년 9월 23일 업데이트

Covers declaring AI involvement with the AI Declaration Format (https://ai-declaration.org): creating and maintaining an aidecl.yaml that records which AI tools and agents were used, what each contributed, when and how much, plus the README disclosure footnote, JSON/JSON-LD export and CI validation. Machine-readable disclosure is the practice; this format is one implementation. Use PROACTIVELY when an AI assistant or agent creates or modifies a project's content - generate aidecl.yaml if missing, update it after AI-assisted changes. Also use when the user asks about AI transparency, provenance, disclosure or EU AI Act disclosure, wants to state that NO AI was used, or mentions aidecl. For concealment requests see rseng-honesty; for the human review duty see rseng-human-verification.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

fdiblen/rseng-agent-skills242026년 9월 23일 업데이트

Covers long-term archiving of research software and data: Software Heritage save requests and SWHID persistent identifiers, Zenodo deposits with versioned DOIs and forge integration, choosing domain and institutional repositories, deciding what to archive (code, data, environments, documentation) and when, and archiving at project retirement. Use when the user wants software or data preserved beyond the life of a forge account, grant or lab, mentions Software Heritage, SWHIDs, Zenodo deposits or archiving, retires or hands over a project, prepares artifacts that must stay resolvable for a paper, or when funder policy requires long-term preservation. (Cutting the release itself is rseng-publishing-releasing; day-to-day data storage and repository choice is rseng-data-management.)

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

fdiblen/rseng-agent-skills242026년 9월 23일 업데이트

Covers processing research data that outgrows one machine's memory: out-of-core and chunked computation, Dask for scaling the scientific Python stack, Spark for distributed tabular pipelines, lazy evaluation, partitioning strategies, idempotent and restartable batch jobs, and knowing when NOT to distribute. Use when datasets no longer fit in memory, when the user mentions Dask, Spark, out-of-core or larger-than-memory data, when a pandas/NumPy workflow hits memory limits, or when designing batch pipelines over many files. (Cluster job submission and job arrays are rseng-hpc-computing; pipeline orchestration engines are rseng-workflows; profile first with rseng-performance-profiling.)

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

fdiblen/rseng-agent-skills242026년 9월 23일 업데이트

Covers verifying that every citation is real, correct and current: checking references in manuscripts, READMEs, references files and code metadata against Crossref and OpenAlex, screening cited DOIs against the Retraction Watch database, catching fabricated or mis-attributed citations (a documented AI failure mode), and keeping bibliographies and CITATION.cff files resolvable. Use PROACTIVELY before any bibliography, reference list or citation metadata is finalized or published, whenever the agent itself has produced citations, and when the user asks to check references, mentions broken DOIs, retracted papers or citation verification, or prepares a manuscript, README or software paper with references. (Making your own software citable is rseng-citation-metadata.)

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

fdiblen/rseng-agent-skills242026년 9월 23일 업데이트

Covers making research software citable and contributors credited: writing CITATION.cff, describing software with CodeMeta (codemeta.json), minting DOIs and ORCIDs, and tracking contributors of every kind. Use when the user asks how to make software citable, add CITATION.cff or codemeta.json, obtain a DOI, ensure contributors get credit, or mentions CFF, CodeMeta, ORCID, CRediT or persistent identifiers. Use PROACTIVELY when generated code draws on a publication, website or existing code (credit it at the code site and in the references), at release preparation, and when citation files are edited. (Verifying references you cite: rseng-citation-hygiene; versioning schemes and the DOI-minting release: rseng-publishing-releasing.)

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

fdiblen/rseng-agent-skills242026년 9월 23일 업데이트

fdiblen의 스킬 모두 보기

이 스킬의 문제 신고