Skip to content

Commit ade4ff7

Browse files
authored
Merge pull request #2 from kbase/develop
Develop
2 parents 80aa6cd + 9109da4 commit ade4ff7

18 files changed

+454
-1
lines changed

.github/workflows/manual-build.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
name: Manual Build & Push
3+
on:
4+
workflow_dispatch:
5+
jobs:
6+
build-push:
7+
uses: kbase/.github/.github/workflows/reusable_build-push.yml@main
8+
with:
9+
name: '${{ github.event.repository.name }}-develop'
10+
tags: br-${{ github.ref_name }}
11+
secrets: inherit
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: Build and push narrative images
2+
3+
on:
4+
workflow_call:
5+
secrets:
6+
GHCR_USERNAME:
7+
required: true
8+
GHCR_TOKEN:
9+
required: true
10+
11+
jobs:
12+
docker_build:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: Check Out GitHub Repo
16+
if: github.event.pull_request.draft == false
17+
with:
18+
ref: "${{ github.event.pull_request.head.sha }}"
19+
uses: actions/checkout@v2
20+
- name: Check Source Branch
21+
if: github.head_ref != 'develop' && (github.base_ref == 'master' || github.base_ref == 'main')
22+
run: echo "PRs must be made to develop branch before merging to main/master"; exit 1
23+
- name: Build And Push To Packages
24+
if: github.event.pull_request.draft == false && github.event.action != 'closed' && github.event.pull_request.merged != true
25+
env:
26+
PR: "${{ github.event.pull_request.number }}"
27+
SHA: "${{ github.event.pull_request.head.sha }}"
28+
DOCKER_ACTOR: "${{ secrets.GHCR_USERNAME }}"
29+
DOCKER_TOKEN: "${{ secrets.GHCR_TOKEN }}"
30+
shell: bash
31+
run: |
32+
export MY_ORG=$(echo "${GITHUB_REPOSITORY}" | awk -F / '{print tolower($1)}')
33+
export DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
34+
export BUILD_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
35+
export COMMIT=$(echo "$SHA" | cut -c -7)
36+
37+
echo "Source branch is $GITHUB_HEAD_REF"
38+
echo "Target branch is $GITHUB_BASE_REF"
39+
40+
if [ "$GITHUB_BASE_REF" = "develop" ]; then
41+
export MY_APP=$(echo $(echo "${GITHUB_REPOSITORY}" | awk -F / '{print $2}')"-develop")
42+
elif [ "$GITHUB_BASE_REF" = "main" ] || [ "$GITHUB_BASE_REF" = "master" ]; then
43+
export MY_APP=$(echo "${GITHUB_REPOSITORY}" | awk -F / '{print $2}')
44+
else
45+
echo "Target branch must be develop, main, or master";
46+
exit 1
47+
fi
48+
49+
if [[ ( $GITHUB_BASE_REF = "main" || $GITHUB_BASE_REF = "master" ) && $GITHUB_HEAD_REF != "develop" ]]; then
50+
echo "Must merge PRs to develop before merging to main/master";
51+
exit 1
52+
else
53+
echo "$DOCKER_TOKEN" | docker login ghcr.io -u "$DOCKER_ACTOR" --password-stdin
54+
docker build --build-arg BUILD_DATE="$DATE" \
55+
--build-arg COMMIT="$COMMIT" \
56+
--build-arg BRANCH="$GITHUB_HEAD_REF" \
57+
--build-arg PULL_REQUEST="$PR" \
58+
--label us.kbase.vcs-commit="$COMMIT" \
59+
--label us.kbase.vcs-pull-req="$PR" \
60+
-t ghcr.io/"$MY_ORG"/"$MY_APP":"pr-""$PR" .
61+
docker push ghcr.io/"$MY_ORG"/"$MY_APP":"pr-""$PR"
62+
fi

.github/workflows/old/pr_build.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---
2+
name: Build & Tag Image on PR
3+
'on':
4+
pull_request:
5+
branches:
6+
- develop
7+
- main
8+
- master
9+
types:
10+
- closed
11+
- edited
12+
- opened
13+
- ready_for_review
14+
- reopened
15+
- synchronize
16+
- workflow_dispatch
17+
jobs:
18+
run_build_and_push:
19+
uses: ./.github/workflows/build_and_push_image.yml
20+
secrets:
21+
GHCR_USERNAME: ${{ secrets.GHCR_USERNAME }}
22+
GHCR_TOKEN: ${{ secrets.GHCR_TOKEN }}
23+
24+
tag_on_merge:
25+
uses: ./.github/workflows/tag_on_merge.yml
26+
secrets:
27+
GHCR_USERNAME: ${{ secrets.GHCR_USERNAME }}
28+
GHCR_TOKEN: ${{ secrets.GHCR_TOKEN }}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
---
2+
name: Publish Release Image
3+
'on':
4+
release:
5+
branches:
6+
- main
7+
- master
8+
types:
9+
- published
10+
jobs:
11+
docker_build:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- name: Check Tag
15+
id: check-tag
16+
run: |-
17+
if [[ ${{ github.ref_name }} =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
18+
echo ::set-output name=match::true
19+
fi
20+
- name: Report SemVer Check
21+
if: steps.check-tag.outputs.match != 'true'
22+
run: echo "Release version must follow semantic naming (e.g. 1.0.2)"; exit 1
23+
- name: Check Source Branch
24+
if: github.event.release.target_commitish != 'master' && github.event.release.target_commitish != 'main'
25+
run: echo "Releases must be built from master/main branch"; exit 1
26+
- name: Check out GitHub Repo
27+
with:
28+
ref: "${{ github.event.pull_request.head.sha }}"
29+
uses: actions/checkout@v2
30+
- name: Build and Push to Packages
31+
env:
32+
PR: "${{ github.event.pull_request.number }}"
33+
SHA: "${{ github.event.pull_request.head.sha }}"
34+
VER: "${{ github.event.release.tag_name }}"
35+
DOCKER_ACTOR: "${{ secrets.GHCR_USERNAME }}"
36+
DOCKER_TOKEN: "${{ secrets.GHCR_TOKEN }}"
37+
run: "curl https://raw.githubusercontent.com/kbase/.github/main/workflow-templates/scripts/prod_release.sh | bash"
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
name: PR to develop closed and merged
3+
on:
4+
pull_request:
5+
branches:
6+
- develop
7+
types:
8+
- closed
9+
jobs:
10+
# test:
11+
# if: ${{ github.event.pull_request.merged }}
12+
# uses: ./.github/workflows/reusable_test-python.yml
13+
build-push:
14+
if: ${{ github.event.pull_request.merged }}
15+
# needs: test
16+
uses: ./.github/workflows/reusable_build-push.yml
17+
with:
18+
name: '${{ github.event.repository.name }}-develop'
19+
tags: pr-${{ github.event.number }},latest
20+
secrets: inherit
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
name: PR to develop opened
3+
on:
4+
pull_request:
5+
branches:
6+
- develop
7+
types:
8+
- opened
9+
- reopened
10+
- synchronize
11+
jobs:
12+
build:
13+
uses: kbase/.github/.github/workflows/reusable_build.yml@main
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
name: PR to main post-merge
3+
on:
4+
pull_request:
5+
branches:
6+
- main
7+
- master
8+
types:
9+
- closed
10+
jobs:
11+
# test:
12+
# if: ${{ github.event.pull_request.merged }}
13+
# uses: ./.github/workflows/reusable_test-python.yml
14+
build-push:
15+
if: ${{ github.event.pull_request.merged }}
16+
# needs: test
17+
uses: ./.github/workflows/reusable_build-push.yml
18+
with:
19+
name: '${{ github.event.repository.name }}'
20+
tags: pr-${{ github.event.number }},latest-rc
21+
secrets: inherit
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
name: PR to main pre-merge build
3+
on:
4+
pull_request:
5+
branches:
6+
- main
7+
- master
8+
types:
9+
- opened
10+
- reopened
11+
- synchronize
12+
jobs:
13+
build-push:
14+
uses: kbase/.github/.github/workflows/reusable_build-push.yml@main
15+
with:
16+
name: '${{ github.event.repository.name }}'
17+
tags: pr-${{ github.event.number }}
18+
secrets: inherit
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: Tag on merge
2+
3+
on:
4+
workflow_call:
5+
secrets:
6+
GHCR_USERNAME:
7+
required: true
8+
GHCR_TOKEN:
9+
required: true
10+
11+
jobs:
12+
tag_on_merge:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: Tag Latest Image On Merge
16+
if: github.event_name == 'pull_request' && github.event.action == 'closed' && github.event.pull_request.merged == true
17+
env:
18+
PR: "${{ github.event.pull_request.number }}"
19+
SHA: "${{ github.event.pull_request.head.sha }}"
20+
DOCKER_ACTOR: "${{ secrets.GHCR_USERNAME }}"
21+
DOCKER_TOKEN: "${{ secrets.GHCR_TOKEN }}"
22+
shell: bash
23+
run: |
24+
export MY_ORG=$(echo "${GITHUB_REPOSITORY}" | awk -F / '{print tolower($1)}')
25+
export DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
26+
export BUILD_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
27+
export COMMIT=$(echo "$SHA" | cut -c -7)
28+
echo "Source branch is $GITHUB_HEAD_REF"
29+
echo "Target branch is $GITHUB_BASE_REF"
30+
if [ "$GITHUB_BASE_REF" = "develop" ]; then
31+
export MY_APP=$(echo $(echo "${GITHUB_REPOSITORY}" | awk -F / '{print $2}')"-develop")
32+
elif [ "$GITHUB_BASE_REF" = "main" ] || [ "$GITHUB_BASE_REF" = "master" ]; then
33+
export MY_APP=$(echo "${GITHUB_REPOSITORY}" | awk -F / '{print $2}')
34+
else
35+
echo "Target branch must be develop, main, or master";
36+
exit 1
37+
fi
38+
docker login -u "$DOCKER_ACTOR" -p "$DOCKER_TOKEN" ghcr.io
39+
docker pull ghcr.io/"$MY_ORG"/"$MY_APP":"pr-""$PR"
40+
if [ "$GITHUB_BASE_REF" = "develop" ]; then
41+
docker tag ghcr.io/"$MY_ORG"/"$MY_APP":"pr-""$PR" ghcr.io/"$MY_ORG"/"$MY_APP":"latest"
42+
docker push ghcr.io/"$MY_ORG"/"$MY_APP":"latest"
43+
elif [[ ( $GITHUB_BASE_REF = "main" || $GITHUB_BASE_REF = "master" ) && $GITHUB_HEAD_REF != "develop" ]]; then
44+
echo "Must merge PRs to develop before merging to main/master";
45+
exit 1
46+
elif [ "$GITHUB_BASE_REF" = "main" ] || [ "$GITHUB_BASE_REF" = "master" ]; then
47+
docker tag ghcr.io/"$MY_ORG"/"$MY_APP":"pr-""$PR" ghcr.io/"$MY_ORG"/"$MY_APP":"latest-rc"
48+
docker push ghcr.io/"$MY_ORG"/"$MY_APP":"latest-rc"
49+
else
50+
echo "Target branch must be develop, main, or master";
51+
exit 1
52+
fi

.github/workflows/pr_build.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
---
2+
name: PR to develop opened
3+
on:
4+
pull_request:
5+
branches:
6+
- develop
7+
- main
8+
- master
9+
types:
10+
- opened
11+
- reopened
12+
- synchronize
13+
jobs:
14+
build-develop-open:
15+
if: github.head_ref = 'develop' && github.event.pull_request.merged == false
16+
uses: kbase/.github/.github/workflows/reusable_build.yml@main
17+
build-main-open:
18+
if: (github.head_ref = 'main' || github.head_ref = 'master') && github.event.pull_request.merged == false
19+
uses: kbase/.github/.github/workflows/reusable_build-push.yml@main
20+
with:
21+
name: '${{ github.event.repository.name }}'
22+
tags: pr-${{ github.event.number }}
23+
secrets: inherit
24+
build-develop-merge:
25+
if: github.head_ref = 'develop' && github.event.pull_request.merged == true
26+
uses: kbase/.github/.github/workflows/reusable_build-push.yml@main
27+
with:
28+
name: '${{ github.event.repository.name }}-develop'
29+
tags: pr-${{ github.event.number }},latest
30+
secrets: inherit
31+
build-main-merge:
32+
if: (github.head_ref = 'main' || github.head_ref = 'master') && github.event.pull_request.merged == true
33+
uses: kbase/.github/.github/workflows/reusable_build-push.yml@main
34+
with:
35+
name: '${{ github.event.repository.name }}'
36+
tags: pr-${{ github.event.number }},latest-rc
37+
secrets: inherit

0 commit comments

Comments
 (0)