1717#
1818
1919name : Continuous Integration
20+
2021on :
2122 push :
2223 branches : [ master ]
24+ tags : [ '*' ]
2325 pull_request :
2426 branches : [ master ]
2527 types : [ opened, synchronize, reopened ]
28+ schedule :
29+ - cron : ' 30 1 * * 1,3,5'
30+
31+ permissions : read-all
32+
2633jobs :
2734 ci :
2835 runs-on : ubuntu-22.04
36+ env :
37+ PUSH_NIGHTLY : ${{ (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/master' }}
38+ PUSH_RELEASE : ${{ github.event_name == 'push' && github.ref_type == 'tag' }}
2939 steps :
40+ # Checkout just this repo and run scanCode before we do anything else
3041 - name : Checkout runtime repo
3142 uses : actions/checkout@v3
3243 with :
3344 path : runtime
3445 - name : Scan Code
3546 uses : apache/openwhisk-utilities/scancode@master
47+
48+ # Install core OpenWhisk artifacts needed to build/test anything else
3649 - name : Checkout OpenWhisk core repo
3750 uses : actions/checkout@v3
3851 with :
@@ -48,12 +61,45 @@ jobs:
4861 run : |
4962 ./gradlew :tests:compileTestScala
5063 ./gradlew install
64+
65+ # Build this repository
5166 - name : Build Runtime
5267 working-directory : runtime
5368 run : |
5469 ./gradlew distDocker
70+
71+ # Test this repository
5572 - name : Test Runtime
5673 working-directory : runtime
5774 run : |
5875 ./gradlew :tests:checkScalafmtAll
5976 ./gradlew :tests:test
77+
78+ # Conditionally publish runtime images to DockerHub
79+ # Important: naming convention for release tags is runtime@version
80+ - name : Docker Login
81+ if : ${{ env.PUSH_NIGHTLY == 'true' || env.PUSH_RELEASE == 'true' }}
82+ uses : docker/login-action@v2
83+ with :
84+ username : ${{ secrets.DOCKERHUB_USER_OPENWHISK }}
85+ password : ${{ secrets.DOCKERHUB_TOKEN_OPENWHISK }}
86+ - name : Push Nightly Images
87+ if : ${{ env.PUSH_NIGHTLY == 'true' }}
88+ working-directory : runtime
89+ run : |
90+ SHORT_COMMIT=$(git rev-parse --short "$GITHUB_SHA")
91+ ./gradlew :core:nodejs14Action:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=nightly
92+ ./gradlew :core:nodejs14Action:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=$SHORT_COMMIT
93+ ./gradlew :core:nodejs16Action:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=nightly
94+ ./gradlew :core:nodejs16Action:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=$SHORT_COMMIT
95+ ./gradlew :core:nodejs18Action:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=nightly
96+ ./gradlew :core:nodejs18Action:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=$SHORT_COMMIT
97+ ./gradlew :core:typescript37Action:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=nightly
98+ ./gradlew :core:typescript37Action:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=$SHORT_COMMIT
99+ - name : Push Release Images
100+ if : ${{ env.PUSH_RELEASE == 'true' }}
101+ working-directory : runtime
102+ run : |
103+ RUNTIME_NAME=${GITHUB_REF_NAME%@*}
104+ IMAGE_TAG=${GITHUB_REF_NAME##*@}
105+ ./gradlew :core:$RUNTIME_NAME:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=$IMAGE_TAG
0 commit comments