我对GitHub操作非常陌生,但这里是我的场景(简单地说)
构建-测试-上传(作业)
->停靠-快照(作业)
->停靠-释放(作业)(如果:{github.ref_type ==‘标记’}})-此作业永远不会工作
我看到一个问题,当作业调用到可重用的工作流'docker.yml‘时,"if:{{github.ref_type ==’tag‘}“在作业级别上不会被执行。但是,如果我将“docker.yml”中的所有内容作为作业直接添加到Build-test-upad.yml工作流中,那么条件语句在它下面的步骤就会正常工作。但我的目标是能够重用docker.yml代码,用于坞快照和坞库发行版,如下所示。
gitHub操作是否支持有条件地运行作业--作业调用可重用工作流?
如果我的问题不清楚,我很抱歉。
谢谢
name: Build, Test and Upload Artifacts
on:
workflow_dispatch:
push:
env:
ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_GH_USER }}
ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_TOKEN }}
DOCKER_HARBOR_URL: ${{ secrets.HARBOR_ADDR }}
HARBOR_REPO_BASE: docstore
APP_ID_DOCSTORE: docstore
APP_ID_PURGE: purge
APP_ID_MIGRATION_UTILITY: migration-utility
jobs:
get-version:
uses: ./.github/workflows/version.yml
build-test-upload:
runs-on: [ self-hosted ]
needs: [ get-version ]
outputs:
version: ${{ needs.get-version.outputs.version }}
steps: <multiple steps complete successfully>
## docker-snapshot always runs successfully and uses the reusable workflow 'docker.yml' as I would expect
docker-snapshot:
name: docker-snapshot
needs: build-test-upload
uses: ./.github/workflows/docker.yml
secrets:
username: ${{ secrets.HARBOR_USER }}
token: ${{ secrets.HARBOR_TOKEN }}
harbor_addr: ${{ secrets.HARBOR_ADDR }}
with:
version: ${{ needs.build-test-upload.outputs.version }}
repo_folder: snapshots
## docker-release is supposed to only run if: github.ref_type == 'tag'. The "if: ${{ github.ref_type == 'tag' }}" condition works at the job level when the job contains steps, but does not seem to work when docker-release calls the reusable workflow "uses: ./.github/workflows/docker.yml" as seen here
docker-release:
if: ${{ github.ref_type == 'tag' }}
needs: build-test-upload
uses: ./.github/workflows/docker.yml
secrets:
username: ${{ secrets.HARBOR_USER }}
token: ${{ secrets.HARBOR_TOKEN }}
harbor_addr: ${{ secrets.HARBOR_ADDR }}
with:
version: ${{ needs.build-test-upload.outputs.version }}
repo_folder: releasesdocker.yml
name: Docker
on:
workflow_call:
inputs:
repo_folder:
required: true
type: string
version:
required: true
type: string
secrets:
username:
required: true
token:
required: true
harbor_addr:
required: true
env:
ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_GH_USER }}
ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_TOKEN }}
DOCKER_HARBOR_URL: ${{ secrets.HARBOR_ADDR }}
HARBOR_REPO_BASE: docstore
APP_ID_DOCSTORE: docstore
APP_ID_PURGE: purge
APP_ID_MIGRATION_UTILITY: migration-utility
jobs:
docker:
runs-on: [ self-hosted ]
steps:
- name: Checkout Code
uses: actions/checkout@v2
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: build-test-upload
path: .
- name: Verify Artifacts Downloaded
run: |
pwd
VERSION=${{ inputs.version }}
webserviceFile=./webservice/target/webservice-${VERSION}.jar
if [[ ! -f "${webserviceFile}" ]]; then
echo "[ERROR] Webservice jar File ${webserviceFile} does not exist"
ls -l ./webservice/target
exit 2
fi
purgeFile=./purge/target/purge-${VERSION}.jar
if [[ ! -f "${purgeFile}" ]]; then
echo "[ERROR] Purge jar file ${purgeFile}r does not exist"
ls -l ./purge/target
exit 2
fi
migUtilFile=./migration-utility/target/migration-utility-${VERSION}.jar
if [[ ! -f ${migUtilFile} ]]; then
echo "[ERROR] Migration-Utility jar File ${migUtilFile} does not exist"
ls -l ./migration-utility/target/
exit 2
fi
xmlFile=./tests/target/coverage-report/coverage-report.xml
csvFile=./tests/target/coverage-report/coverage-report.csv
if [[ ! -f "${xmlFile}" || ! -f "${csvFile}" ]]; then
echo "[ERROR] Coverage-report file ${xmlFile} or ${csvFile} does not exist"
ls -l ./tests/target/coverage-report/
exit 2
fi
echo "Successfully verified build artifacts for dockers were downloaded"
- name: Create docker context for dind
run: |
docker context create dind --docker "host=tcp://localhost:2376,ca=/certs/client/ca.pem,cert=/certs/client/cert.pem,key=/certs/client/key.pem"
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v1
with:
endpoint: dind
driver: docker-container
driver-opts: image=docker.apps.papt.to/akp/releases/buildkit:0.9.0-buildx
buildkitd-flags: --debug
- name: Harbor Login
uses: docker/login-action@v1
with:
registry: ${{ secrets.harbor_addr }}
username: ${{ secrets.username }}
password: ${{ secrets.token }}
- name: Docstore - Docker Build and Push to Harbor ${{ inputs.repo_folder }}
uses: docker/build-push-action@v2
with:
context: .
push: true
tags: ${{ secrets.harbor_addr }}/${{ env.HARBOR_REPO_BASE }}/${{ inputs.repo_folder }}/${{ env.APP_ID_DOCSTORE }}:${{ inputs.version }}
build-args: |
VERSION=${{ inputs.version }}
- name: Purge - Always Docker Build and Push to Harbor ${{ inputs.repo_folder }}
uses: docker/build-push-action@v2
with:
context: ./purge
push: true
tags: ${{ secrets.harbor_addr }}/${{ env.HARBOR_REPO_BASE }}/${{ inputs.repo_folder }}/${{ env.APP_ID_PURGE }}:${{ inputs.version }}
build-args: |
VERSION=${{ inputs.version }}
- name: Migration-Utility - Docker Build and Push to Harbor ${{ inputs.repo_folder }}
uses: docker/build-push-action@v2
with:
context: ./migration-utility
push: true
tags: ${{ secrets.harbor_addr }}/${{ env.HARBOR_REPO_BASE }}/${{ inputs.repo_folder }}/${{ env.APP_ID_MIGRATION_UTILITY }}:${{ inputs.version }}
build-args: |
VERSION=${{ inputs.version }}发布于 2022-03-24 23:57:28
我认为问题是github.ref_type = branch而不是标签。我会进一步测试的。但我觉得我很好
https://stackoverflow.com/questions/71580690
复制相似问题