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
0 commit comments