Issue: serial-group Lock Not Releasing for Tag-Triggered Pipelines
Description
I have encountered an issue with the built-in serial-group
feature in CircleCI when pipelines are triggered by tag pushes. While commit-triggered pipelines work as expected (with both serial-start
and serial-end
jobs present), tag-triggered pipelines remain stuck at serial-start
without generating the serial-end
job. This results in a ghost lock that prevents subsequent tag pipelines from running.
Reproduction Steps
-
Create a Minimal Configuration
Add a
.circleci/config.yml
file to your repository with the following content:version: 2.1 executors: default: docker: - image: cimg/base:stable jobs: test_job: executor: default steps: - checkout - run: name: Run Tests command: | echo "Running tests..." # Insert your minimal test commands here - run: name: Cleanup command: echo "Cleanup complete." when: always workflows: test_serial_group: jobs: - test_job: name: Run Tests serial-group: test-serial-group filters: tags: only: /^test-\d{12}$/ branches: ignore: /.*/
-
Push Your ConfigurationCommit and push this configuration to your repository. Make sure your project is integrated with CircleCI.
-
Trigger a Pipeline with a TagCreate and push a Git tag that matches the pattern
test-YYYYMMDDHHmm
. For example:
git tag test-202503171230
git push origin test-202503171230
git tag test-202503171231
git push origin test-202503171231
- Observe the Pipeline Behavior
- In the CircleCI dashboard, you will see that the pipeline is triggered by the tag.
- Expected Behavior: A
serial-start
job should run followed by aserial-end
job that releases the lock. - Observed Behavior: The pipeline remains stuck at
serial-start
without generating theserial-end
job, preventing any subsequent tag-triggered pipelines from running.
- Compare with Commit-Triggered PipelinesPush a commit (or use a branch that does not match the tag filter) to trigger the pipeline. The commit-triggered pipeline should correctly show both
serial-start
andserial-end
jobs and complete as expected.
Expected Behavior
- Tag-Triggered Pipelines: Both
serial-start
andserial-end
jobs should be present, allowing the lock to be released automatically after the job completes. - Commit-Triggered Pipelines: Should work as expected with both jobs properly managed.
Impact
This issue is specific to tag-triggered pipelines. The absence of the serial-end
job causes a persistent lock (ghost lock) that blocks subsequent tag pipelines from executing, potentially affecting deployment and testing workflows that rely on tag-based triggers.
Request for Assistance
Has anyone else encountered similar issues with tag-triggered pipelines using serial-group
? I would appreciate any insights or workarounds. If this is a known bug, please let me know if there’s a planned fix.
Additional Environment Details:
- Platform: CircleCI Cloud
- Docker Executor: Using
cimg/base:stable
- Workflow Configuration: Utilizes
serial-group: test-serial-group
- Trigger: Only for tags matching
/^test-\d{12}$/
Thank you for your help!