diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 569ac50b..6ae83004 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -122,6 +122,16 @@ jobs: steps: - uses: actions/checkout@v2 + - name: Set Version Variables + run: | + if [[ "$GITHUB_REF" =~ ^refs/tags/v* ]]; then + echo "Using TAG mode: $GITHUB_REF_NAME" + echo "REL_VERSION_STRICT=${GITHUB_REF_NAME#?}" >> $GITHUB_ENV + else + echo "Using BRANCH mode: v$BASE_DEV_VERSION-dev.$GITHUB_RUN_NUMBER" + echo "REL_VERSION_STRICT=$BASE_DEV_VERSION-dev.$GITHUB_RUN_NUMBER" >> $GITHUB_ENV + fi + - name: Set up QEMU uses: docker/setup-qemu-action@v1 @@ -189,4 +199,133 @@ jobs: - name: Install Dependencies run: yarn --production --frozen-lockfile --non-interactive + working-directory: win + + - name: Create Bundle + run: tar -czf wiki-js-windows.tar.gz -C $env:GITHUB_WORKSPACE\win . + + - name: Upload a Build Artifact + uses: actions/upload-artifact@v2.3.1 + with: + name: drop-win + path: wiki-js-windows.tar.gz + + beta: + name: Publish Beta Images + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags/v') + needs: [build, arm, windows] + permissions: + packages: write + + steps: + - name: Set Version Variables + run: | + if [[ "$GITHUB_REF" =~ ^refs/tags/v* ]]; then + echo "Using TAG mode: $GITHUB_REF_NAME" + echo "REL_VERSION_STRICT=${GITHUB_REF_NAME#?}" >> $GITHUB_ENV + else + echo "Using BRANCH mode: v$BASE_DEV_VERSION-dev.$GITHUB_RUN_NUMBER" + echo "REL_VERSION_STRICT=$BASE_DEV_VERSION-dev.$GITHUB_RUN_NUMBER" >> $GITHUB_ENV + fi + + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Tag Images + run: | + docker pull ghcr.io/requarks/wiki:canary-$REL_VERSION_STRICT + docker pull ghcr.io/requarks/wiki:canary-arm-$REL_VERSION_STRICT + + echo "Creating the manifests..." + + docker manifest create requarks/wiki:beta-$REL_VERSION_STRICT ghcr.io/requarks/wiki:canary-$REL_VERSION_STRICT ghcr.io/requarks/wiki:canary-arm-$REL_VERSION_STRICT + docker manifest create requarks/wiki:beta ghcr.io/requarks/wiki:canary-$REL_VERSION_STRICT ghcr.io/requarks/wiki:canary-arm-$REL_VERSION_STRICT + docker manifest create ghcr.io/requarks/wiki:beta-$REL_VERSION_STRICT ghcr.io/requarks/wiki:canary-$REL_VERSION_STRICT ghcr.io/requarks/wiki:canary-arm-$REL_VERSION_STRICT + docker manifest create ghcr.io/requarks/wiki:beta ghcr.io/requarks/wiki:canary-$REL_VERSION_STRICT ghcr.io/requarks/wiki:canary-arm-$REL_VERSION_STRICT + + echo "Pushing the manifests..." + + docker manifest push -p requarks/wiki:beta-$REL_VERSION_STRICT + docker manifest push -p requarks/wiki:beta + docker manifest push -p ghcr.io/requarks/wiki:beta-$REL_VERSION_STRICT + docker manifest push -p ghcr.io/requarks/wiki:beta + + release: + name: Publish Release Images + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags/v') + environment: prod + needs: [beta] + permissions: + packages: write + + steps: + - name: Set Version Variables + run: | + if [[ "$GITHUB_REF" =~ ^refs/tags/v* ]]; then + echo "Using TAG mode: $GITHUB_REF_NAME" + echo "REL_VERSION_STRICT=${GITHUB_REF_NAME#?}" >> $GITHUB_ENV + else + echo "Using BRANCH mode: v$BASE_DEV_VERSION-dev.$GITHUB_RUN_NUMBER" + echo "REL_VERSION_STRICT=$BASE_DEV_VERSION-dev.$GITHUB_RUN_NUMBER" >> $GITHUB_ENV + fi + + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Tag Images + run: | + docker pull ghcr.io/requarks/wiki:beta-$REL_VERSION_STRICT + + echo "Fetching semver tool..." + curl -LJO https://static.requarks.io/semver + chmod +x semver + + MAJOR=`./semver get major $REL_VERSION_STRICT` + MINOR=`./semver get minor $REL_VERSION_STRICT` + MAJORMINOR="$MAJOR.$MINOR" + + echo "Using major $MAJOR and minor $MINOR..." + echo "Tagging images..." + + docker tag ghcr.io/requarks/wiki:beta-$REL_VERSION_STRICT requarks/wiki:$REL_VERSION_STRICT + docker tag ghcr.io/requarks/wiki:beta-$REL_VERSION_STRICT requarks/wiki:$MAJOR + docker tag ghcr.io/requarks/wiki:beta-$REL_VERSION_STRICT requarks/wiki:$MAJORMINOR + docker tag ghcr.io/requarks/wiki:beta-$REL_VERSION_STRICT requarks/wiki:latest + docker tag ghcr.io/requarks/wiki:beta-$REL_VERSION_STRICT ghcr.io/requarks/wiki:$REL_VERSION_STRICT + docker tag ghcr.io/requarks/wiki:beta-$REL_VERSION_STRICT ghcr.io/requarks/wiki:$MAJOR + docker tag ghcr.io/requarks/wiki:beta-$REL_VERSION_STRICT ghcr.io/requarks/wiki:$MAJORMINOR + docker tag ghcr.io/requarks/wiki:beta-$REL_VERSION_STRICT ghcr.io/requarks/wiki:latest + + echo "Pushing images..." + + docker push requarks/wiki:$REL_VERSION_STRICT + docker push requarks/wiki:$MAJOR + docker push requarks/wiki:$MAJORMINOR + docker push requarks/wiki:latest + docker push ghcr.io/requarks/wiki:$REL_VERSION_STRICT + docker push ghcr.io/requarks/wiki:$MAJOR + docker push ghcr.io/requarks/wiki:$MAJORMINOR + docker push ghcr.io/requarks/wiki:latest