diff --git a/.ci/pipelines/base-pipeline.yml b/.ci/pipelines/base-pipeline.yml deleted file mode 100644 index f231fb7..0000000 --- a/.ci/pipelines/base-pipeline.yml +++ /dev/null @@ -1,43 +0,0 @@ ---- - -# The base pipeline that runs continuously, checks for branches and -# creates a new pipeline instance for each of them. - -resource_types: -- name: gitea-pr - type: registry-image - source: - repository: registry.local:5000/gitea-pr - -resources: -- name: repo-pr - type: gitea-pr - source: - access_token: ((gitea_api_key)) - owner: ((owner)) - repo: ((repo)) - url: https://git.sclu1034.dev -- name: repo - type: git - source: - uri: https://git.sclu1034.dev/bitsquid_dt/dtmt - -jobs: - - name: set-pipelines - plan: - - in_parallel: - - get: repo-pr - trigger: true - - get: repo - - load_var: prs - file: repo-pr/prs.json - - across: - - var: pr - values: ((.:prs)) - set_pipeline: dtmt-pr - file: repo/.ci/pipelines/pr.yml - vars: - pr: ((.:pr)) - gitea_api_key: ((gitea_api_key)) - instance_vars: - number: ((.:pr.number)) diff --git a/.ci/pipelines/base.yml b/.ci/pipelines/base.yml new file mode 100644 index 0000000..a731222 --- /dev/null +++ b/.ci/pipelines/base.yml @@ -0,0 +1,204 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/cappyzawa/concourse-pipeline-jsonschema/master/concourse_jsonschema.json#/definitions/Config +--- + +# The actual CI pipeline that is run per branch +resource_types: +- name: gitea-package + type: registry-image + source: + repository: registry.local:5000/gitea-package + +- name: gitea-status + type: registry-image + source: + repository: registry.local:5000/gitea-status + +- name: gitea-pr + type: registry-image + source: + repository: registry.local:5000/gitea-pr + + +resources: +- name: repo + type: git + source: + uri: http://forgejo:3000/bitsquid_dt/dtmt + branch: master + +- name: repo-pr + type: gitea-pr + source: + access_token: ((gitea_api_key)) + owner: ((owner)) + repo: ((repo)) + url: https://git.sclu1034.dev + +- name: gitea-package + type: gitea-package + source: + access_token: ((gitea_api_key)) + url: http://forgejo:3000 + owner: bitsquid_dt + type: generic + name: dtmt + + +- name: status-build-msvc + type: gitea-status + source: + access_token: ((gitea_api_key)) + url: http://forgejo:3000 + owner: bitsquid_dt + repo: dtmt + context: build/msvc + description: "Build for the target platform: msvc" + +- name: status-build-linux + type: gitea-status + source: + access_token: ((gitea_api_key)) + url: http://forgejo:3000 + owner: bitsquid_dt + repo: dtmt + context: build/linux + description: "Build for the target platform: linux" + + +jobs: +- name: set-pipelines + plan: + - in_parallel: + - get: repo-pr + trigger: true + + - get: repo + + - load_var: prs + file: repo-pr/prs.json + + - across: + - var: pr + values: ((.:prs)) + set_pipeline: dtmt-pr + file: repo/.ci/pipelines/pr.yml + vars: + pr: ((.:pr)) + gitea_api_key: ((gitea_api_key)) + instance_vars: + number: ((.:pr.number)) + + +- name: build-msvc + on_success: + put: state-success + resource: status-build-msvc + no_get: true + params: + state: success + sha: ((.:git_sha)) + + on_failure: + put: state-failure + resource: status-build-msvc + no_get: true + params: + state: failure + sha: ((.:git_sha)) + + plan: + - get: repo + trigger: true + + - load_var: git_sha + file: repo/.git/ref + + - put: state-pending + resource: status-build-msvc + no_get: true + params: + state: pending + sha: ((.:git_sha)) + + - task: build + file: repo/.ci/tasks/build.yml + vars: + target: msvc + gitea_url: http://forgejo:3000 + gitea_api_key: ((gitea_api_key)) + + - load_var: version_number + reveal: true + file: artifact/version + + - put: package + resource: gitea-package + no_get: true + inputs: + - artifact + params: + version: ((.:version_number)) + fail_fast: true + override: true + globs: + - artifact/dtmt + - artifact/dtmm + - artifact/*.exe + - artifact/*.sha256 + +- name: build-linux + on_success: + put: state-success + resource: status-build-linux + no_get: true + params: + state: success + sha: ((.:git_sha)) + + on_failure: + put: state-failure + resource: status-build-linux + no_get: true + params: + state: failure + sha: ((.:git_sha)) + + plan: + - get: repo + trigger: true + + - load_var: git_sha + file: repo/.git/ref + + - put: state-pending + resource: status-build-linux + no_get: true + params: + state: pending + sha: ((.:git_sha)) + + - task: build + file: repo/.ci/tasks/build.yml + vars: + target: linux + gitea_url: http://forgejo:3000 + gitea_api_key: ((gitea_api_key)) + + - load_var: version_number + reveal: true + file: artifact/version + + - put: package + resource: gitea-package + no_get: true + inputs: + - artifact + params: + version: ((.:version_number)) + fail_fast: true + override: true + globs: + - artifact/dtmt + - artifact/dtmm + - artifact/*.exe + - artifact/*.sha256 diff --git a/.ci/tasks/build.sh b/.ci/tasks/build.sh index 5e60d7f..bb96775 100755 --- a/.ci/tasks/build.sh +++ b/.ci/tasks/build.sh @@ -19,7 +19,9 @@ install_artifact() { cd "repo" -if [ -n "${PR:-}" ]; then +PR=${PR:-} + +if [ -n "$PR" ]; then title "PR: $(echo "$PR" | jq '.number') - $(echo "$PR" | jq '.title')" ref="pr-$(echo "$PR" | jq '.number')-$(git rev-parse --short "$(cat .git/ref || echo "HEAD")" 2>/dev/null || echo 'manual')" else diff --git a/Justfile b/Justfile index 70af61a..12fde29 100644 --- a/Justfile +++ b/Justfile @@ -30,8 +30,8 @@ ci-image-linux: set-base-pipeline: fly -t {{fly_target}} set-pipeline \ - --pipeline dtmt-prs \ - --config .ci/pipelines/base-pipeline.yml \ + --pipeline dtmt \ + --config .ci/pipelines/base.yml \ -v gitea_api_key=${GITEA_API_KEY} \ -v owner=bitsquid_dt \ -v repo=dtmt